设为首页 收藏本站
查看: 1049|回复: 0

[经验分享] keepalived安装配置(nginx)

[复制链接]

尚未签到

发表于 2015-9-4 11:29:05 | 显示全部楼层 |阅读模式
  环境:centos 6.4 64bit
  应用:nginx
  
  目的:keepalived可以让两台服务器处于主备关系,如果主的挂了,备的取得VIP(或者互为主备等关系,文字游戏不纠结),
  以实现服务器的高可用。
  
  关于恢复:
  如果设置keepalived为主备模式,那么当主服务器恢复,VIP重新回到主服务器上,
  那么就产生了多次切换的问题,所以这里我不采用主备,而是采用备备的模式。
  但是备备模式,两台机的优先级不一样,还是会竞争,所以需要在优先级高的服务器上设置nopreempt(具体见下面的配置)。
  
  两台服务器,备备模式,都运行着nginx:
  nginx-1: 192.168.1.136
  nginx-1: 192.168.1.150
  VIP(虚拟IP):192.168.1.176
  
  



1


yum install -y gcc gcc-c++ popt-devel openssl openssl-devel libssl-dev libnl-devel popt-devel
  
  安装keepalived



1
2
3
4
5
6


wget  http://www.keepalived.org/software/keepalived-1.2.13.tar.gz
tar zxvf keepalived-1.2.13.tar.gz
cd keepalived-1.2.13
./configure --prefix=/usr/local/keepalived
make
make install
  
  keepalived开机启动,两个脚本(开机启动可以参考我另外的文章。)
  vim setkeep_startup.sh
  



1
2
3
4
5
6
7
8


#!/bin/bash
mkdir /opt/sta
chmod a+x /opt/sta/*

echo -e "start on runlevel 2\nstart on runlevel 3\nstart on runlevel 4\nstart on runlevel 5\nrespawn\nexec /opt/sta/keep_check.sh" > /etc/init/keep.conf
initctl reload-configuration
initctl list
initctl start keep
  
  vim keep_check.sh
  



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18


#!/bin/bash
#check keepalived

while [ 1 ]
do

Run=$(ps aux|grep keep|grep -v "grep"|wc -l)
echo Run=$Run
if [ 0 == $Run ]
then
/usr/local/keepalived/sbin/keepalived
echo "start keepalived"
else
echo "keepalived is runing"
fi

sleep 3
done
  
  nginx开机启动
  同上,改改就行。如果连改都懒得改,请自行右上角。
  
  nginx检测脚本(两台服务器都需要),如果发现Nginx进程不在了,则杀死keepalived进程:



1
2
3
4
5
6
7
8


#!/bin/bash
run=`ps -C nginx --no-header |wc -l`              
if [ $run -eq 0 ];then                     
        killall keepalived         
echo "kill keepalived" >> /opt/keep.log
else
echo "nginx alive" >> /opt/keep.log
fi
  
  nginx-1配置,路径:/usr/local/keepalived/etc/keepalived/keepalived.conf



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38


vrrp_script check_nginx  {
                script "/opt/sta/nginx_alive_check.sh"  #nginx监控脚本
                interval 2                       #执行监控时间间隔
                weight 2                         #脚本结果导致的优先级变更:2表示优先级+2;-2表示优先级-2
}

global_defs {
   notification_email {
     root@localhost
   }
   notification_email_from root@local host
   smtp_server localhost
   smtp_connect_timeout 30
   router_id  NodeA
}


vrrp_instance VI_1 {
    state BACKUP   #两台机都设置为BACKUP
    interface eth0   #绑定虚拟IP的网络接口
    virtual_router_id 51    #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组
    priority 100   #竞争时节点的优先级(1-254之间)
    nopreempt    #在优先级高的机器上设置,防止恢复时重新竞争
    advert_int 3   #组播信息发送间隔,两个节点设置必须一样
    authentication {   #设置验证信息,两个节点必须一致
        auth_type PASS
        auth_pass 1234
    }

track_script  {
             check_nginx                   #监控服务定义
        }

    virtual_ipaddress {   #虚拟IP, 两个节点设置一样
        192.168.1.176/24
    }

}
  
  
  nginx-2配置,路径:/usr/local/keepalived/etc/keepalived/keepalived.conf
  



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37


vrrp_script check_nginx  {
                script "/opt/sta/nginx_alive_check.sh"  #nginx监控脚本
                interval 2                       #执行监控时间间隔
                weight 2                         #脚本结果导致的优先级变更:2表示优先级+2;-2表示优先级-2
}

global_defs {
   notification_email {
     root@localhost
   }
   notification_email_from root@local host
   smtp_server localhost
   smtp_connect_timeout 30
   router_id  NodeA
}


vrrp_instance VI_1 {
    state BACKUP   #两台机都设置为BACKUP
    interface eth1   #绑定虚拟IP的网络接口
    virtual_router_id 51    #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组
    priority 99   #主节点的优先级(1-254之间),备用节点必须比主节点优先级低
    advert_int 3   #组播信息发送间隔,两个节点设置必须一样
    authentication {   #设置验证信息,两个节点必须一致
        auth_type PASS
        auth_pass 1234
    }

track_script  {
             check_nginx                   #监控服务定义
        }

    virtual_ipaddress {   #虚拟IP, 两个节点设置一样
        192.168.1.176/24
    }

}
  
  启动keepalived
  cd /usr/local/keepalived/sbin/
  ./keepalived -f /usr/local/keepalived/etc/keepalived/keepalived.conf
  -f为指定配置文件路径
  
  启动之后在/var/log/messages中可以看到相关信息输出
  
  输出ip addr可以查看网卡上绑定的ip,看看是不是VIP已经绑定到某一台机器的网卡了。
  如果发现两台机都绑了,那么就是两台机无法正常通信,检查防火墙。
  
  关于防火墙,据说这样设置可以让keepalived正常工作:
  到/etc/sysconfig/iptables中添加一行
  -A INPUT -m state --state NEW -m tcp -p tcp -d 224.0.0.0/8 -j ACCEPT
  -A INPUT -i eth0 -p vrrp -j ACCEPT
  
  但是我发现不设置,但是stop然后start,也可以正常工作。目前未解。
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-109329-1-1.html 上篇帖子: nginx+keepalived实现双机热备 下篇帖子: lvs keepalived 安装配置详解【转】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表