keepalived+lvs-dr實現高可用負載均衡
實驗拓撲
實驗要求
- RS1與RS2地址為172.18.27.201/202
- VS1和VS2地址為172.18.27.103/200,VIP為172.18.27.254
- VS1和VS2實現lvs-dr負載均衡及高可用性,且vs為sorry sever。
-
keepalived是單主模式。
實驗步驟
-
各個主機安裝必備軟件
##RS1與RS2安裝httpd yum install -y httpd ##VS1與VS2安裝keeplived和httpd yum instll keepalived httpd -y ##所有主機同步時間 ntpdate 2.cn.pool.ntp.org
-
配置RS1與RS2
RS1配置,RS1的系統為centos7.2. ##配置測試頁 vim /var/www/html/index.html <h1/>R1:172.18.27.201</h1> ##啟動httpd服務 systemctl restart httpd.service ##配置VIP,并關閉內核中的arp_ignore,建議寫腳本 [root@localhost bin]#vi setparam.sh #!/bin/bash vip="172.18.27.254" start (){ ifconfig lo:0 $vip netmask 255.255.255.255 broadcast $vip up echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore route add -host $vip dev lo:0 } stop (){ echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore ifconfig lo:0 down } case $1 in start) start echo "arp_announce set ok" echo "arp_ignore set ok" echo "lo:0 up" ;; stop) stop echo "arp_announce set ok" echo "arp_ignore set ok" echo "lo:0 down" ;; *) echo "$0 stop|start" ;; esac
RS2配置,RS1的系統為centos7.2。 ##配置測試頁 vim /var/www/html/index.html <h1/>R2:172.18.27.202</h1> ##啟動httpd服務 systemctl restart httpd.service ##用RS1的腳本配置RS2
-
配置VS1和VS2
##VS1配置,VS1系統是centos6.8。 #配置sorry_server yum install -y httpd vim /var/www/html/index.html <h1/>sorry server 1:172.18.27.102</h1> 啟動服務 srvice httpd start #配置keepalived vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { notification_email { ##報警郵箱設置 root@localhost ##報警郵箱 } notification_email_from keepalived@localhost ##報警有哪個用戶發送 smtp_server 127.0.0.1 ##報警郵箱服務器 smtp_connect_timeout 30 ##報警超時時間 vrrp_mcast_group4 224.100.27.1 ##通過組播地址,通告狀態和優先級等信息 } vrrp_instance VI_1 { ##設置vrrp state MASTER ##設置主從 interface eth1 ##vrrp實例工作的網絡接口 virtual_router_id 51 ##設置vrrp的id標識符,0-255 priority 100 ##設定優先級 advert_int 1 ##對外的通知時間間隔 authentication { ##設定認證方式 auth_type PASS auth_pass 1111 } track_interface { ##設定監聽網絡接口 eth1 } nopreempt ##設定是否為搶占和非搶占模式 virtual_ipaddress { ##定義VIP 172.18.27.254/16 dev eth1 label eth1:0 ##設定VIP在那個網絡接口上 } } virtual_server 172.18.27.254 80 { delay_loop 6 ##定義服務輪詢間隔,多久檢查RS的健康狀態 lb_algo wrr ##設定VS的調用方法 lb_kind DR ##設定lvs的調用類型 protocol TCP ##設定工作的協議 sorry_server 127.0.0.1 80 ##設定sorry_server real_server 172.18.27.201 80 { ##設定RS weight 1 ##設定權重 HTTP_GET { ##設定RS健康狀態查詢方法 url { 根據urlde狀態碼來確定RS的狀態 path / status_code 200 } connect_timeout 1 ##設定檢查的超時時長 nb_get_retry 3 ##設定檢查的重試次數 delay_before_retry 1 ##設定檢查延遲時間 } } real_server 172.18.27.202 80 { weight 2 HTTP_GET { url { path / status_code 200 } connect_timeout 1 nb_get_retry 3 delay_before_retry 1 } } } #啟動服務 service keepalived start
##配置VS2,VS2的系統是centOS7.2. #配置sorry_server yum install -y httpd vim /var/www/html/index.html <h1/>sorry server 2:172.18.27.200</h1> 啟動服務 systemctl start httpd #配置keepalived ! Configuration File for keepalived global_defs { notification_email { root@localhost } notification_email_from keepalived@localhost smtp_server 127.0.0.1 smtp_connect_timeout 30 vrrp_mcast_group4 224.100.27.1 } vrrp_instance VI_1 { state BACKUP interface eno16777736 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_interface { eno16777736 } nopreempt virtual_ipaddress { 172.18.27.254/16 dev eno16777736 label eno16777736:0 } } virtual_server 172.18.27.254 80 { delay_loop 6 lb_algo wrr lb_kind DR net_mask 255.255.0.0 protocol TCP sorry_server 127.0.0.1 80 real_server 172.18.27.201 80 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 1 nb_get_retry 3 delay_before_retry 1 } } real_server 172.18.27.202 80 { weight 2 HTTP_GET { url { path / status_code 200 } connect_timeout 1 nb_get_retry 3 delay_before_retry 1 } } } #啟動服務 systemctl start keeplived
測試實驗效果
在client測試實驗效果 for i in {1..10};do curl 172.18.27.254 ;done
正常狀態的測試效果
一臺RS掛掉之后
兩臺RS都掛掉
原創文章,作者:oranix,如若轉載,請注明出處:http://www.www58058.com/75627