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也無法訪問。
待續......