1、什么是keepalived?
Keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。
Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。
2、keepalived工作原理。
keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(VIP = Virtual IP Address,虚拟IP地址,该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到VRRP包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。
keepalived主要有三个模块,分别是core、check和VRRP。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。VRRP模块是来实现VRRP协议的。
3、keepalived+nginx实现主备过程。
3.1、初始状态。
3.2、主机宕机状态。
3.3、主机恢复状态。
4、如何实现keepalived+Nginx高可用环境。
两台nginx,一主一备:192.168.110.142和192.168.110.140。两台tomcat服务器:192.168.110.142、192.168.110.140。
5、开始安装keepalived。
安装环境如何所示(切换到root用户哦):
1 [root@localhost ~]# yum -y install kernel-devel* 2 [root@localhost ~]# yum -y install openssl-* 3 [root@localhost ~]# yum -y install popt-devel 4 [root@localhost ~]# yum -y install lrzsz 5 [root@localhost ~]# yum -y install openssh-clients 6 [root@localhost ~]# yum -y install libnl libnl-devel popt
开始安装keepalived。解压缩如下所示:
1 [root@localhost ~]# ls 2 anaconda-ks.cfg Documents install.log Music Public Videos 3 Desktop Downloads install.log.syslog Pictures Templates zookeeper.out 4 [root@localhost ~]# cd /home/hadoop/package/ 5 [root@localhost package]# ls 6 apache-activemq-5.12.0-bin.tar.gz IK Analyzer 2012FF_hf1 keepalived-1.2.15.tar.gz zookeeper-3.4.6.tar.gz 7 apache-activemq-5.12.0-bin.zip IK Analyzer 2012FF_hf1.rar nginx-1.8.0.tar.gz 8 apache-tomcat-7.0.47.tar.gz jdk-7u55-linux-i586.tar.gz solr-4.10.3.tgz.tgz 9 [root@localhost package]# tar -zxvf keepalived-1.2.15.tar.gz -C /home/hadoop/soft/
执行配置命令如下所示:
1 [root@localhost soft]# ls 2 apache-activemq-5.12.0 apache-tomcat-7.0.47 jdk1.7.0_55 keepalived-1.2.15 nginx-1.8.0 solr-4.10.3 zookeeper-3.4.6 3 [root@localhost soft]# cd keepalived-1.2.15/ 4 [root@localhost keepalived-1.2.15]# ls 5 AUTHOR bin ChangeLog configure configure.in CONTRIBUTORS COPYING doc genhash INSTALL install-sh keepalived keepalived.spec.in 6 [root@localhost keepalived-1.2.15]# ./configure --prefix=/usr/local/keepalived
然后进行安装操作和编译操作。如下所示:
1 [root@localhost keepalived-1.2.15]# make 2 [root@localhost keepalived-1.2.15]# make install
至此安装成功。
拷贝执行文件。操作如下所示:
1 [root@localhost keepalived-1.2.15]# cd /usr/local/ 2 [root@localhost local]# ls 3 bin etc games include keepalived lib libexec nginx sbin share solr solr-cloud src tomcat 4 [root@localhost local]# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
将init.d文件拷贝到etc下,加入开机启动项。
1 [root@localhost local]# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived
将keepalived文件拷贝到etc下,加入网卡配置。
1 [root@localhost local]# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
创建keepalived文件夹。
1 [root@localhost local]# mkdir -p /etc/keepalived
将keepalived配置文件拷贝到etc下。
1 [root@localhost local]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
添加可执行权限。
[root@localhost local]# chmod +x /etc/init.d/keepalived [root@localhost local]# ll /etc/init.d/keepalived -rwxr-xr-x. 1 root root 1308 Oct 1 19:16 /etc/init.d/keepalived
加入开机启动。
1 [root@localhost local]# chkconfig --add keepalived #添加时必须保证/etc/init.d/keepalived存在. 2 [root@localhost local]# chkconfig keepalived on 3 [root@localhost local]# chkconfig --list #添加完可查询系统服务是否存在. 4 NetworkManager 0:off 1:off 2:on 3:on 4:on 5:on 6:off 5 abrt-ccpp 0:off 1:off 2:off 3:on 4:off 5:on 6:off 6 abrtd 0:off 1:off 2:off 3:on 4:off 5:on 6:off 7 acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off 8 atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off 9 auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:off 10 blk-availability 0:off 1:on 2:on 3:on 4:on 5:on 6:off 11 bluetooth 0:off 1:off 2:off 3:on 4:on 5:on 6:off 12 cpuspeed 0:off 1:on 2:on 3:on 4:on 5:on 6:off 13 crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off 14 cups 0:off 1:off 2:on 3:on 4:on 5:on 6:off 15 dnsmasq 0:off 1:off 2:off 3:off 4:off 5:off 6:off 16 firstboot 0:off 1:off 2:off 3:on 4:off 5:on 6:off 17 haldaemon 0:off 1:off 2:off 3:on 4:on 5:on 6:off 18 htcacheclean 0:off 1:off 2:off 3:off 4:off 5:off 6:off 19 httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off 20 ip6tables 0:off 1:off 2:on 3:on 4:on 5:on 6:off 21 iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off 22 irqbalance 0:off 1:off 2:off 3:on 4:on 5:on 6:off 23 kdump 0:off 1:off 2:off 3:on 4:on 5:on 6:off 24 keepalived 0:off 1:off 2:on 3:on 4:on 5:on 6:off 25 lvm2-monitor 0:off 1:on 2:on 3:on 4:on 5:on 6:off 26 mdmonitor 0:off 1:off 2:on 3:on 4:on 5:on 6:off 27 messagebus 0:off 1:off 2:on 3:on 4:on 5:on 6:off 28 netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off 29 netfs 0:off 1:off 2:off 3:on 4:on 5:on 6:off 30 network 0:off 1:off 2:on 3:on 4:on 5:on 6:off 31 ntpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off 32 ntpdate 0:off 1:off 2:off 3:off 4:off 5:off 6:off 33 portreserve 0:off 1:off 2:on 3:on 4:on 5:on 6:off 34 postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off 35 psacct 0:off 1:off 2:off 3:off 4:off 5:off 6:off 36 quota_nld 0:off 1:off 2:off 3:off 4:off 5:off 6:off 37 rdisc 0:off 1:off 2:off 3:off 4:off 5:off 6:off 38 restorecond 0:off 1:off 2:off 3:off 4:off 5:off 6:off 39 rngd 0:off 1:off 2:off 3:off 4:off 5:off 6:off 40 rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off 41 saslauthd 0:off 1:off 2:off 3:off 4:off 5:off 6:off 42 smartd 0:off 1:off 2:off 3:off 4:off 5:off 6:off 43 snmpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off 44 snmptrapd 0:off 1:off 2:off 3:off 4:off 5:off 6:off 45 spice-vdagentd 0:off 1:off 2:off 3:off 4:off 5:on 6:off 46 sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off 47 sysstat 0:off 1:on 2:on 3:on 4:on 5:on 6:off 48 udev-post 0:off 1:on 2:on 3:on 4:on 5:on 6:off 49 vmware-tools 0:off 1:off 2:on 3:on 4:on 5:on 6:off 50 vmware-tools-thinprint 0:off 1:off 2:on 3:on 4:on 5:on 6:off 51 wdaemon 0:off 1:off 2:off 3:off 4:off 5:off 6:off 52 winbind 0:off 1:off 2:off 3:off 4:off 5:off 6:off 53 wpa_supplicant 0:off 1:off 2:off 3:off 4:off 5:off 6:off 54 [root@localhost local]#
启动keepalived
启动:service keepalived start
停止:service keepalived stop
重启:service keepalived restart
1 [root@localhost local]# service keepalived start 2 Starting keepalived: [ OK ] 3 [root@localhost local]# service keepalived stop 4 Stopping keepalived: [ OK ] 5 [root@localhost local]# service keepalived restart 6 Stopping keepalived: [FAILED] 7 Starting keepalived: [ OK ] 8 [root@localhost local]#
6、配置日志文件。
将keepalived日志输出到local0:
[root@localhost ~]# vim /etc/sysconfig/keepalived
1 KEEPALIVED_OPTIONS="-D -d -S 0"
在/etc/rsyslog.conf里添加(找一空白行直接添加到里面即可):
1 [root@localhost ~]# vim /etc/rsyslog.conf 2 # save keepalived.log 3 local0.* /var/log/keepalived.log
重新启动keepalived和rsyslog服务:
1 [root@localhost ~]# service rsyslog restart 2 Shutting down system logger: [ OK ] 3 Starting system logger: [ OK ] 4 [root@localhost ~]# service keepalived restart 5 Stopping keepalived: [ OK ] 6 Starting keepalived: [ OK ] 7 [root@localhost ~]#
打开防火墙的通讯地址。
1 [root@localhost ~]# 2 [root@localhost ~]# iptables -A INPUT -d 224.0.0.18 -j ACCEPT 3 [root@localhost ~]# /etc/rc.d/init.d/iptables save 4 iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ] 5 [root@localhost ~]#
至此,一台机器的keepalived全部安装完成,另外一台按照上面安装即可,Nginx之前配过,自己安装一下即可。如果两台机器的Nginx和Keepalived都安装好了呢,接着开始下面的操作。
7、配置keepalived。
现在开始修改主nginx的配置。修改主nginx下/etc/keepalived/keepalived.conf文件。
默认配置如下所示:
1 ! Configuration File for keepalived 2 3 # 全局配置。 4 global_defs { 5 notification_email { 6 # 指定keepalived在发生切换时需要发送email到的对象,一行一个。 7 acassen@firewall.loc 8 failover@firewall.loc 9 sysadmin@firewall.loc 10 } 11 notification_email_from Alexandre.Cassen@firewall.loc # 指定发件人 12 smtp_server 192.168.200.1 # 指定smtp服务器地址 13 smtp_connect_timeout 30 # 指定smtp连接超时时间 14 router_id LVS_DEVEL # 运行keepalived机器的一个标识 15 } 16 17 vrrp_instance VI_1 { 18 state MASTER # 标示状态为MASTER 备份机为BACKUP 19 interface eth0 # 设置实例绑定的网卡 20 virtual_router_id 51 # 同一实例下virtual_router_id必须相同 21 priority 100 # MASTER权重要高于BACKUP,比如BACKUP为99 22 advert_int 1 # MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒 23 authentication { # 设置认证 24 auth_type PASS # 主从服务器验证方式 25 auth_pass 1111 26 } 27 virtual_ipaddress { # 设置vip 28 192.168.200.16 # 可以多个虚拟IP,换行即可 29 192.168.200.17 30 192.168.200.18 31 } 32 } 33 34 virtual_server 192.168.200.100 443 { 35 delay_loop 6 36 lb_algo rr 37 lb_kind NAT 38 nat_mask 255.255.255.0 39 persistence_timeout 50 40 protocol TCP 41 42 real_server 192.168.201.100 443 { 43 weight 1 44 SSL_GET { 45 url { 46 path / 47 digest ff20ad2481f97b1754ef3e12ecd3a9cc 48 } 49 url { 50 path /mrtg/ 51 digest 9b3a0c85a887a256d6939da88aabd8cd 52 } 53 connect_timeout 3 54 nb_get_retry 3 55 delay_before_retry 3 56 } 57 } 58 } 59 60 virtual_server 10.10.10.2 1358 { 61 delay_loop 6 62 lb_algo rr 63 lb_kind NAT 64 persistence_timeout 50 65 protocol TCP 66 67 sorry_server 192.168.200.200 1358 68 69 real_server 192.168.200.2 1358 { 70 weight 1 71 HTTP_GET { 72 url { 73 path /testurl/test.jsp 74 digest 640205b7b0fc66c1ea91c463fac6334d 75 } 76 url { 77 path /testurl2/test.jsp 78 digest 640205b7b0fc66c1ea91c463fac6334d 79 } 80 url { 81 path /testurl3/test.jsp 82 digest 640205b7b0fc66c1ea91c463fac6334d 83 } 84 connect_timeout 3 85 nb_get_retry 3 86 delay_before_retry 3 87 } 88 } 89 90 real_server 192.168.200.3 1358 { 91 weight 1 92 HTTP_GET { 93 url { 94 path /testurl/test.jsp 95 digest 640205b7b0fc66c1ea91c463fac6334c 96 } 97 url { 98 path /testurl2/test.jsp 99 digest 640205b7b0fc66c1ea91c463fac6334c 100 } 101 connect_timeout 3 102 nb_get_retry 3 103 delay_before_retry 3 104 } 105 } 106 } 107 108 virtual_server 10.10.10.3 1358 { 109 delay_loop 3 110 lb_algo rr 111 lb_kind NAT 112 nat_mask 255.255.255.0 113 persistence_timeout 50 114 protocol TCP 115 116 real_server 192.168.200.4 1358 { 117 weight 1 118 HTTP_GET { 119 url { 120 path /testurl/test.jsp 121 digest 640205b7b0fc66c1ea91c463fac6334d 122 } 123 url { 124 path /testurl2/test.jsp 125 digest 640205b7b0fc66c1ea91c463fac6334d 126 } 127 url { 128 path /testurl3/test.jsp 129 digest 640205b7b0fc66c1ea91c463fac6334d 130 } 131 connect_timeout 3 132 nb_get_retry 3 133 delay_before_retry 3 134 } 135 } 136 137 real_server 192.168.200.5 1358 { 138 weight 1 139 HTTP_GET { 140 url { 141 path /testurl/test.jsp 142 digest 640205b7b0fc66c1ea91c463fac6334d 143 } 144 url { 145 path /testurl2/test.jsp 146 digest 640205b7b0fc66c1ea91c463fac6334d 147 } 148 url { 149 path /testurl3/test.jsp 150 digest 640205b7b0fc66c1ea91c463fac6334d 151 } 152 connect_timeout 3 153 nb_get_retry 3 154 delay_before_retry 3 155 } 156 } 157 }
主机的Nginx配置如下所示,主机的Keepalived配置如下所示:
分别在主机和备份机加上一个虚拟主机的。主机的配置如下所示:记得拷贝html目录,名称重命名为html-hhh。
1 server { 2 listen 192.168.110.142:80; # 相同的端口号80 3 server_name www.hhh.com; 4 5 location / { 6 root html-hhh; # http://www.baidu.com/访问的是这个目录html-baidu下面的index.html,没有index.html就访问index.htm。如果都咩有就访问错误页面 7 index index.html index.htm; 8 } 9 # redirect server error pages to the static page /50x.html 10 error_page 500 502 503 504 /50x.html; 11 location = /50x.html { 12 root html-hhh; 13 } 14 15 }
1 ! Configuration File for keepalived 2 3 global_defs { 4 notification_email { # 指定keepalived在发生切换时需要发送email到的对象,一行一个 5 1748741328@qq.com 6 # acassen@firewall.loc 7 # failover@firewall.loc 8 # sysadmin@firewall.loc 9 } 10 notification_email_from Alexandre.Cassen@firewall.loc # 指定发件人 11 # smtp_server 192.168.200.1 # 指定smtp服务器地址 12 smtp_server 192.168.110.2 13 smtp_connect_timeout 30 # 指定smtp连接超时时间 14 router_id LVS_DEVEL # 运行keepalived机器的一个标识 15 } 16 17 vrrp_instance VI_1 { 18 state MASTER # 标示状态为MASTER 备份机为BACKUP 19 interface eth0 # 设置实例绑定的网卡 20 virtual_router_id 51 # 同一实例下virtual_router_id必须相同 21 priority 100 # MASTER权重要高于BACKUP 比如BACKUP为99 22 advert_int 1 # MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒 23 authentication { # 设置认证 24 auth_type PASS # 主从服务器验证方式 25 # auth_pass 1111 26 auth_pass 8888 27 } 28 virtual_ipaddress { # 设置vip 29 192.168.110.100 # 可以多个虚拟IP,换行即可 30 # 192.168.200.16 31 # 192.168.200.17 32 # 192.168.200.18 33 } 34 } 35 36 virtual_server 192.168.200.100 443 { 37 delay_loop 6 38 lb_algo rr 39 lb_kind NAT 40 nat_mask 255.255.255.0 41 persistence_timeout 50 42 protocol TCP 43 44 real_server 192.168.201.100 443 { 45 weight 1 46 SSL_GET { 47 url { 48 path / 49 digest ff20ad2481f97b1754ef3e12ecd3a9cc 50 } 51 url { 52 path /mrtg/ 53 digest 9b3a0c85a887a256d6939da88aabd8cd 54 } 55 connect_timeout 3 56 nb_get_retry 3 57 delay_before_retry 3 58 } 59 } 60 } 61 62 virtual_server 10.10.10.2 1358 { 63 delay_loop 6 64 lb_algo rr 65 lb_kind NAT 66 persistence_timeout 50 67 protocol TCP 68 69 sorry_server 192.168.200.200 1358 70 71 real_server 192.168.200.2 1358 { 72 weight 1 73 HTTP_GET { 74 url { 75 path /testurl/test.jsp 76 digest 640205b7b0fc66c1ea91c463fac6334d 77 } 78 url { 79 path /testurl2/test.jsp 80 digest 640205b7b0fc66c1ea91c463fac6334d 81 } 82 url { 83 path /testurl3/test.jsp 84 digest 640205b7b0fc66c1ea91c463fac6334d 85 } 86 connect_timeout 3 87 nb_get_retry 3 88 delay_before_retry 3 89 } 90 } 91 92 real_server 192.168.200.3 1358 { 93 weight 1 94 HTTP_GET { 95 url { 96 path /testurl/test.jsp 97 digest 640205b7b0fc66c1ea91c463fac6334c 98 } 99 url { 100 path /testurl2/test.jsp 101 digest 640205b7b0fc66c1ea91c463fac6334c 102 } 103 connect_timeout 3 104 nb_get_retry 3 105 delay_before_retry 3 106 } 107 } 108 } 109 110 virtual_server 10.10.10.3 1358 { 111 delay_loop 3 112 lb_algo rr 113 lb_kind NAT 114 nat_mask 255.255.255.0 115 persistence_timeout 50 116 protocol TCP 117 118 real_server 192.168.200.4 1358 { 119 weight 1 120 HTTP_GET { 121 url { 122 path /testurl/test.jsp 123 digest 640205b7b0fc66c1ea91c463fac6334d 124 } 125 url { 126 path /testurl2/test.jsp 127 digest 640205b7b0fc66c1ea91c463fac6334d 128 } 129 url { 130 path /testurl3/test.jsp 131 digest 640205b7b0fc66c1ea91c463fac6334d 132 } 133 connect_timeout 3 134 nb_get_retry 3 135 delay_before_retry 3 136 } 137 } 138 139 real_server 192.168.200.5 1358 { 140 weight 1 141 HTTP_GET { 142 url { 143 path /testurl/test.jsp 144 digest 640205b7b0fc66c1ea91c463fac6334d 145 } 146 url { 147 path /testurl2/test.jsp 148 digest 640205b7b0fc66c1ea91c463fac6334d 149 } 150 url { 151 path /testurl3/test.jsp 152 digest 640205b7b0fc66c1ea91c463fac6334d 153 } 154 connect_timeout 3 155 nb_get_retry 3 156 delay_before_retry 3 157 } 158 } 159 }
备份机的Nginx配置和Keepalived配置如下所示:
修改备nginx下/etc/keepalived/keepalived.conf文件
配置备nginx时需要注意:需要修改state为BACKUP , priority比MASTER低,virtual_router_id和master的值一致。
1 server { 2 listen 192.168.110.140:80; # 相同的端口号80 3 server_name www.hhh.com; 4 5 location / { 6 root html-hhh; # http://www.baidu.com/访问的是这个目录html-baidu下面的index.html,没有index.html就访问index.htm。如果都咩有就访问错误页面 7 index index.html index.htm; 8 } 9 # redirect server error pages to the static page /50x.html 10 error_page 500 502 503 504 /50x.html; 11 location = /50x.html { 12 root html-hhh; 13 } 14 15 }
1 ! Configuration File for keepalived 2 3 global_defs { 4 notification_email { # 指定keepalived在发生切换时需要发送email到的对象,一行一个 5 1748741328@qq.com 6 # acassen@firewall.loc 7 # failover@firewall.loc 8 # sysadmin@firewall.loc 9 } 10 notification_email_from Alexandre.Cassen@firewall.loc # 指定发件人 11 # smtp_server 192.168.200.1 # 指定smtp服务器地址 12 smtp_server 192.168.110.2 13 smtp_connect_timeout 30 # 指定smtp连接超时时间 14 router_id LVS_DEVEL # 运行keepalived机器的一个标识 15 } 16 17 vrrp_instance VI_1 { 18 state BACKUP # 标示状态,备份机为BACKUP 19 interface eth0 # 设置实例绑定的网卡 20 virtual_router_id 51 # 同一实例下virtual_router_id必须相同 21 priority 99 # MASTER权重要高于BACKUP 比如BACKUP为99 22 advert_int 1 # MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒 23 authentication { # 设置认证 24 auth_type PASS # 主从服务器验证方式 25 # auth_pass 1111 26 auth_pass 8888 27 } 28 virtual_ipaddress { # 设置vip 29 192.168.110.100 # 可以多个虚拟IP,换行即可 30 # 192.168.200.16 31 # 192.168.200.17 32 # 192.168.200.18 33 } 34 } 35 36 virtual_server 192.168.200.100 443 { 37 delay_loop 6 38 lb_algo rr 39 lb_kind NAT 40 nat_mask 255.255.255.0 41 persistence_timeout 50 42 protocol TCP 43 44 real_server 192.168.201.100 443 { 45 weight 1 46 SSL_GET { 47 url { 48 path / 49 digest ff20ad2481f97b1754ef3e12ecd3a9cc 50 } 51 url { 52 path /mrtg/ 53 digest 9b3a0c85a887a256d6939da88aabd8cd 54 } 55 connect_timeout 3 56 nb_get_retry 3 57 delay_before_retry 3 58 } 59 } 60 } 61 62 virtual_server 10.10.10.2 1358 { 63 delay_loop 6 64 lb_algo rr 65 lb_kind NAT 66 persistence_timeout 50 67 protocol TCP 68 69 sorry_server 192.168.200.200 1358 70 71 real_server 192.168.200.2 1358 { 72 weight 1 73 HTTP_GET { 74 url { 75 path /testurl/test.jsp 76 digest 640205b7b0fc66c1ea91c463fac6334d 77 } 78 url { 79 path /testurl2/test.jsp 80 digest 640205b7b0fc66c1ea91c463fac6334d 81 } 82 url { 83 path /testurl3/test.jsp 84 digest 640205b7b0fc66c1ea91c463fac6334d 85 } 86 connect_timeout 3 87 nb_get_retry 3 88 delay_before_retry 3 89 } 90 } 91 92 real_server 192.168.200.3 1358 { 93 weight 1 94 HTTP_GET { 95 url { 96 path /testurl/test.jsp 97 digest 640205b7b0fc66c1ea91c463fac6334c 98 } 99 url { 100 path /testurl2/test.jsp 101 digest 640205b7b0fc66c1ea91c463fac6334c 102 } 103 connect_timeout 3 104 nb_get_retry 3 105 delay_before_retry 3 106 } 107 } 108 } 109 110 virtual_server 10.10.10.3 1358 { 111 delay_loop 3 112 lb_algo rr 113 lb_kind NAT 114 nat_mask 255.255.255.0 115 persistence_timeout 50 116 protocol TCP 117 118 real_server 192.168.200.4 1358 { 119 weight 1 120 HTTP_GET { 121 url { 122 path /testurl/test.jsp 123 digest 640205b7b0fc66c1ea91c463fac6334d 124 } 125 url { 126 path /testurl2/test.jsp 127 digest 640205b7b0fc66c1ea91c463fac6334d 128 } 129 url { 130 path /testurl3/test.jsp 131 digest 640205b7b0fc66c1ea91c463fac6334d 132 } 133 connect_timeout 3 134 nb_get_retry 3 135 delay_before_retry 3 136 } 137 } 138 139 real_server 192.168.200.5 1358 { 140 weight 1 141 HTTP_GET { 142 url { 143 path /testurl/test.jsp 144 digest 640205b7b0fc66c1ea91c463fac6334d 145 } 146 url { 147 path /testurl2/test.jsp 148 digest 640205b7b0fc66c1ea91c463fac6334d 149 } 150 url { 151 path /testurl3/test.jsp 152 digest 640205b7b0fc66c1ea91c463fac6334d 153 } 154 connect_timeout 3 155 nb_get_retry 3 156 delay_before_retry 3 157 } 158 } 159 }
8、现在开始测试。主备nginx都启动keepalived及nginx。
8.1、初始状态,查看主nginx的eth0设置:vip绑定在主nginx的eth0上。
查看备nginx的eth0设置:vip没有绑定在备nginx的eth0上。
访问www.hhh.com正常访问。
8.2、主机宕机,将主nginx的keepalived停止或将主nginx关机(相当于模拟宕机),查看主nginx的eth0:eth0没有绑定vip。
注意:这里模拟的是停止 keepalived进程没有模拟宕机,所以还要将nginx进程也停止表示主nginx服务无法提供。
查看备nginx的eth0:vip已经漂移到备nginx。
访问www.hhh.com正常访问。
8.3、主机恢复,将主nginx的keepalived和nginx都启动。查看主nginx的eth0:查看备nginx的eth0:vip漂移到主nginx。
查看备nginx的eth0:eth0没有绑定vip。
访问:http://www.hhh.com/,正常访问。
注意:主nginx恢复时一定要将nginx也启动(通常nginx启动要加在开机启动中),否则即使vip漂移到主nginx也无法访问。
待续......