keepalived高可用nginx
node1 10.211.55.48
node2 10.211.55.49
vip 10.211.55.33
node1
1~]# yum install -y nginx keepalived2~}# echo 'node1' > /usr/share/nginx/html/index.html3~]# systemctl start nginx4~]# vim /etc/keepalived/keepalived.conf5global_defs {6notification_email {7root@node18}9notification_email_from keepalived@node110smtp_server 127.0.0.111smtp_connect_timeout 3012router_id node113vrrp_mcast_group4 224.0.100.1814}15vrrp_script chk_down {16script "[ -f /etc/keepalived/down ] && exit 1 || exit 0"17interval 218weight -101920}21vrrp_script chk_nginx {22script "killall -0 nginx"23interval 224weight -102526}2728vrrp_instance VI_1 {29state MASTER30interface eth031virtual_router_id 10032priority 10033advert_int 134authentication {35auth_type PASS36auth_pass 111137}38virtual_ipaddress {3910.211.55.25/24 dev eth0 label eth0:040}41track_script {42chk_nginx4344}45#notify_master "notify.sh master"46#notify_backup "notify.sh backup"47#notify_default "notify.sh default"48}49~]# scp /etc/keepalived/{keepalived.conf,notify.sh} node2:/etc/keepalived/50~]# cat /etc/keepalived/notify.sh51#!/bin/bash5253case $1 in54master)55echo "`hostname` change to master in `date`" | mail -s "`hostname` change master" root56systemctl start nginx57;;58backup)59echo "`hostname` change to backup in `date`" | mail -s "`hostname` change backup" root60systemctl restart nginx61;;62default)63echo "`hostname` error change to default in `date`" | mail -s "`hostname` change default" root64;;65*)66echo "Usage:$0 [ master | backup | default ]"67;;68esacnode2
1~]# yum install -y nginx keepalived2~}# echo 'node2' > /usr/share/nginx/html/index.html3~]# systemctl start nginx4~]# vim /etc/keepalived/keepalived.conf5global_defs {6notification_email {7root@node28}9notification_email_from keepalived@node210smtp_server 127.0.0.111smtp_connect_timeout 3012router_id node213vrrp_mcast_group4 224.0.100.1814}15vrrp_script chk_down {16script "[ -f /etc/keepalived/down ] && exit 1 || exit 0"17interval 218weight -101920}21vrrp_script chk_nginx {22script "killall -0 nginx"23interval 224weight -102526}2728vrrp_instance VI_1 {29state BACKUP30interface eth031virtual_router_id 10032priority 9833advert_int 134authentication {35auth_type PASS36auth_pass 111137}38virtual_ipaddress {3910.211.55.25/24 dev eth0 label eth0:040}41track_script {42chk_nginx4344}45#notify_master "notify.sh master"46#notify_backup "notify.sh backup"47#notify_default "notify.sh default"48}
测试
node2
1~]# systemctl start keepalived2~]# tail -f /var/log/messages3May 19 19:55:00 node2 Keepalived[2003]: Starting Keepalived v1.2.13 (03/19,2015)4May 19 19:55:00 node2 Keepalived[2004]: Starting Healthcheck child process, pid=20055May 19 19:55:00 node2 Keepalived[2004]: Starting VRRP child process, pid=20066May 19 19:55:00 node2 Keepalived_vrrp[2006]: Netlink reflector reports IP 10.211.55.49 added7May 19 19:55:00 node2 Keepalived_vrrp[2006]: Netlink reflector reports IP fdb2:2c26:f4e4:0:21c:42ff:fee9:5318 added8May 19 19:55:00 node2 Keepalived_healthcheckers[2005]: Netlink reflector reports IP 10.211.55.49 added9May 19 19:55:00 node2 Keepalived_healthcheckers[2005]: Netlink reflector reports IP fdb2:2c26:f4e4:0:21c:42ff:fee9:5318 added10May 19 19:55:00 node2 Keepalived_healthcheckers[2005]: Netlink reflector reports IP fe80::21c:42ff:fee9:5318 added11May 19 19:55:00 node2 Keepalived_vrrp[2006]: Netlink reflector reports IP fe80::21c:42ff:fee9:5318 added12May 19 19:55:00 node2 Keepalived_healthcheckers[2005]: Registering Kernel netlink reflector13May 19 19:55:00 node2 Keepalived_healthcheckers[2005]: Registering Kernel netlink command channel14May 19 19:55:00 node2 Keepalived_vrrp[2006]: Registering Kernel netlink reflector15May 19 19:55:00 node2 Keepalived_vrrp[2006]: Registering Kernel netlink command channel16May 19 19:55:00 node2 Keepalived_vrrp[2006]: Registering gratuitous ARP shared channel17May 19 19:55:00 node2 Keepalived_healthcheckers[2005]: Opening file '/etc/keepalived/keepalived.conf'.18May 19 19:55:00 node2 Keepalived_healthcheckers[2005]: Configuration is using : 7396 Bytes19May 19 19:55:00 node2 Keepalived_vrrp[2006]: Opening file '/etc/keepalived/keepalived.conf'.20May 19 19:55:00 node2 Keepalived_vrrp[2006]: Configuration is using : 65071 Bytes21May 19 19:55:00 node2 Keepalived_vrrp[2006]: Using LinkWatch kernel netlink reflector...22May 19 19:55:00 node2 Keepalived_vrrp[2006]: VRRP_Instance(VI_1) Entering BACKUP STATE23May 19 19:55:00 node2 Keepalived_vrrp[2006]: VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(10,11)]24May 19 19:55:00 node2 Keepalived_healthcheckers[2005]: Using LinkWatch kernel netlink reflector...25May 19 19:55:00 node2 Keepalived_vrrp[2006]: VRRP_Script(chk_nginx) succeeded26May 19 19:55:03 node2 Keepalived_vrrp[2006]: VRRP_Instance(VI_1) Transition to MASTER STATE27May 19 19:55:04 node2 Keepalived_vrrp[2006]: VRRP_Instance(VI_1) Entering MASTER STATE28May 19 19:55:04 node2 Keepalived_vrrp[2006]: VRRP_Instance(VI_1) setting protocol VIPs.29May 19 19:55:04 node2 Keepalived_vrrp[2006]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 10.211.55.3330May 19 19:55:04 node2 Keepalived_healthcheckers[2005]: Netlink reflector reports IP 10.211.55.33 added31May 19 19:55:09 node2 Keepalived_vrrp[2006]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 10.211.55.333233~]# curl 10.211.55.3334node2node1
1~]# systemctl start keepalived2~]# tail -f /var/log/messages3May 19 19:58:46 node1 Keepalived[24595]: Starting Keepalived v1.2.13 (03/19,2015)4May 19 19:58:46 node1 Keepalived[24596]: Starting Healthcheck child process, pid=245975May 19 19:58:46 node1 Keepalived[24596]: Starting VRRP child process, pid=245986May 19 19:58:46 node1 Keepalived_vrrp[24598]: Netlink reflector reports IP 10.211.55.48 added7May 19 19:58:46 node1 Keepalived_vrrp[24598]: Netlink reflector reports IP fdb2:2c26:f4e4:0:21c:42ff:fe83:186f added8May 19 19:58:46 node1 Keepalived_vrrp[24598]: Netlink reflector reports IP fe80::21c:42ff:fe83:186f added9May 19 19:58:46 node1 Keepalived_vrrp[24598]: Registering Kernel netlink reflector10May 19 19:58:46 node1 Keepalived_vrrp[24598]: Registering Kernel netlink command channel11May 19 19:58:46 node1 Keepalived_vrrp[24598]: Registering gratuitous ARP shared channel12May 19 19:58:46 node1 Keepalived_vrrp[24598]: Opening file '/etc/keepalived/keepalived.conf'.13May 19 19:58:46 node1 Keepalived_vrrp[24598]: Configuration is using : 65073 Bytes14May 19 19:58:46 node1 Keepalived_vrrp[24598]: Using LinkWatch kernel netlink reflector...15May 19 19:58:46 node1 Keepalived_vrrp[24598]: VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(10,11)]16May 19 19:58:46 node1 Keepalived_healthcheckers[24597]: Netlink reflector reports IP 10.211.55.48 added17May 19 19:58:46 node1 Keepalived_healthcheckers[24597]: Netlink reflector reports IP fdb2:2c26:f4e4:0:21c:42ff:fe83:186f added18May 19 19:58:46 node1 Keepalived_healthcheckers[24597]: Netlink reflector reports IP fe80::21c:42ff:fe83:186f added19May 19 19:58:46 node1 Keepalived_healthcheckers[24597]: Registering Kernel netlink reflector20May 19 19:58:46 node1 Keepalived_healthcheckers[24597]: Registering Kernel netlink command channel21May 19 19:58:46 node1 Keepalived_healthcheckers[24597]: Opening file '/etc/keepalived/keepalived.conf'.22May 19 19:58:46 node1 Keepalived_healthcheckers[24597]: Configuration is using : 7398 Bytes23May 19 19:58:46 node1 Keepalived_healthcheckers[24597]: Using LinkWatch kernel netlink reflector...24May 19 19:58:46 node1 Keepalived_vrrp[24598]: VRRP_Script(chk_nginx) succeeded25May 19 19:58:46 node1 Keepalived_vrrp[24598]: VRRP_Instance(VI_1) Transition to MASTER STATE26May 19 19:58:46 node1 Keepalived_vrrp[24598]: VRRP_Instance(VI_1) Received lower prio advert, forcing new election27May 19 19:58:47 node1 Keepalived_vrrp[24598]: VRRP_Instance(VI_1) Entering MASTER STATE28May 19 19:58:47 node1 Keepalived_vrrp[24598]: VRRP_Instance(VI_1) setting protocol VIPs.29May 19 19:58:47 node1 Keepalived_healthcheckers[24597]: Netlink reflector reports IP 10.211.55.33 added30May 19 19:58:47 node1 Keepalived_vrrp[24598]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 10.211.55.333132~]# curl 10.211.55.3333node1
我们关闭nginx,来看看服务会不会自动转移:
node1
1~]# systemctl stop nginx2~]# tail -f /var/log/messages3May 19 20:00:50 node1 Keepalived_vrrp[24598]: VRRP_Script(chk_nginx) failed4May 19 20:00:51 node1 Keepalived_vrrp[24598]: VRRP_Instance(VI_1) Received higher prio advert5May 19 20:00:51 node1 Keepalived_vrrp[24598]: VRRP_Instance(VI_1) Entering BACKUP STATE6May 19 20:00:51 node1 Keepalived_vrrp[24598]: VRRP_Instance(VI_1) removing protocol VIPs.7May 19 20:00:51 node1 Keepalived_healthcheckers[24597]: Netlink reflector reports IP 10.211.55.33 removed89~]# curl 10.211.55.3310node2node1
1~]# systemctl start nginx2~]# tail -f /var/log/messages3May 19 20:03:52 node1 Keepalived_vrrp[24598]: VRRP_Script(chk_nginx) succeeded4May 19 20:03:52 node1 Keepalived_vrrp[24598]: VRRP_Instance(VI_1) forcing a new MASTER election5May 19 20:03:52 node1 Keepalived_vrrp[24598]: VRRP_Instance(VI_1) forcing a new MASTER election6May 19 20:03:53 node1 Keepalived_vrrp[24598]: VRRP_Instance(VI_1) Transition to MASTER STATE7May 19 20:03:54 node1 Keepalived_vrrp[24598]: VRRP_Instance(VI_1) Entering MASTER STATE8May 19 20:03:54 node1 Keepalived_vrrp[24598]: VRRP_Instance(VI_1) setting protocol VIPs.9May 19 20:03:54 node1 Keepalived_healthcheckers[24597]: Netlink reflector reports IP 10.211.55.33 added10May 19 20:03:54 node1 Keepalived_vrrp[24598]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 10.211.55.331112~]# curl 10.211.55.3313node1