keepalived 说明
VIP : 172.16.99.34
IP : 172.16.99.32
IP : 172.16.99.33
http:// 172.16.99.32:80
http:// 172.16.99.33:80
http:// 172.16.99.34:80
安装keepalived
# cd /app/soft # tar -zxvf keepalived-1.2.18.tar.gz # cd keepalived-1.2.18 # ./configure --prefix=/app/soft/keepalived # make && make install
默认目录是/app/soft
# mkdir /etc/keepalived # cp /app/soft/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
复制到默认路径:
# cp /app/soft/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ # cp /app/soft/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ # ln -s /app/soft/keepalived/sbin/keepalived /sbin/ # cp /app/soft/keepalived/sbin/keepalived /usr/sbin/ # chkconfig keepalived on
配置:172.16.99.32
# vi /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { router_id master #节点ID } vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" #检查nginx状态的脚步路径 interval 2 #检测时间间隔 weight -20 #如果条件成立权重-20 } vrrp_instance VI_1 { state MASTER interface eno16777736 # ifconfig 查看IP对应的网卡 virtual_router_id 51 mcast_src_ip 172.16.99.32 #localIP priority 200 #权重 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { chk_nginx #执行nginx监控的服务 } virtual_ipaddress { 172.16.99.34#vip #虚拟IP } }
配置监控 172.16.99.32
# vi /etc/keepalived/nginx_check.sh #!/bin/bash if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ] then killall keepalived fi
配置:172.16.99.33
# vi /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { router_id slave1 } vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" interval 2 weight -20 } vrrp_instance VI_1 { state BACKUP interface eno16777736 virtual_router_id 51 mcast_src_ip 172.16.1.33 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { chk_nginx } virtual_ipaddress { 172.16.99.34 } }
配置监控 172.16.99.33
# vi /etc/keepalived/nginx_check.sh #!/bin/bash if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ] then killall keepalived fi 授权 # chmod +x /etc/keepalived/nginx_check.sh
启动keepalived
# service keepalived start Starting keepalived (via systemctl): [ 确定 ]
测试
1、同时启动两台服务器,测试keepalive master主服务器是否拥有VIP虚拟IP;
预期结果:
a.主master服务器拥有VIP
b.能够通过VIP访问相应的nginx及下面相应的文件;
2、关闭keepalive master 主服务器的nginx ,查询是否会通过脚本关闭keepalive并释放VIP;
预期结果:
a.nginx关闭,keepalive根据脚本自动关闭,通过相对于端口也无法访问;
3、启动 keepalive master 主服务器,查询VIP的拥有情况;
预期结果:
a.master 主服务器抢占VIP,因为权重的配置比BACKUP的大;
4、同时关闭两台服务器的nginx,测试访问情况;
预期结果:
a.相应的端口关闭,keepalive主动关闭,相对应的访问项目不了。