LVS入门篇(五)之LVS+Keepalived实战
一、實驗架構和環境說明
(1)本次基于VMware Workstation搭建一個四臺Linux(CentOS 7.4)系統所構成的一個服務器集群,其中兩臺負載均衡服務器(一臺為主機,另一臺為備機),另外兩臺作為真實的Web服務器。
(2)本次實驗基于DR負載均衡模式,設置了一個VIP(Virtual IP)為192.168.56.20,用戶只需要訪問這個IP地址即可獲得網頁服務。其中,負載均衡主機為192.168.56.12,備機為192.168.56.13。Web服務器RS1為192.168.56.11,Web服務器B為192.168.56.14。
?二、配置2臺web服務器
(1)在realserver上部署Nginx并配置主頁
[root@rs1 ~]# yum install -y nginx [root@rs2 ~]# yum install -y nginx [root@rs1 ~]# echo "welcome to use RS1 192.168.56.11" > /usr/share/nginx/html/index.html [root@rs1 ~]# echo "welcome to use RS1 192.168.56.14" > /usr/share/nginx/html/index.html [root@rs1 ~]# curl 192.168.56.11 <h1>welcome to use RS1 192.168.56.11</h1> [root@rs2 ~]# curl 192.168.56.14 <h1>welcome to use RS1 192.168.56.14</h1>(2)在rs1和rs2上編輯realserver腳本并執行,此處貼rs1腳本詳情
[root@rs1 ~]# vim /etc/init.d/realserver #!/bin/bash SNS_VIP=192.168.56.20 /etc/init.d/functions case "$1" in start)ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP/sbin/route add -host $SNS_VIP dev lo:0echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "1" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/all/arp_announcesysctl -p >/dev/null 2>&1echo "RealServer Start OK";; stop)ifconfig lo:0 downroute del $SNS_VIP >/dev/null 2>&1echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "0" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/all/arp_announceecho "RealServer Stoped";; *)echo "Usage: $0 {start|stop}"exit 1 esac exit 0[root@rs1 ~]# chmod +x /etc/init.d/realserver [root@rs1 ~]# /etc/init.d/realserver start RealServer Start OK三、配置主負載均衡器
(1)lb01和lb02上安裝Keepalived
[root@lb01 ~]# yum install -y keepalived [root@lb02 ~]# yum install -y keepalived(2)編輯lb01和lb02上的keepalived.conf配置文件
[root@lb01 ~]# cp /etc/keepalived/keepalived.conf{,.bak} #備份源文件 [root@lb01 ~]# > /etc/keepalived/keepalived.conf #清空源文件 [root@lb01 ~]# vim /etc/keepalived/keepalived.conf #編輯keepalived.conf ! Configuration File for keepalivedglobal_defs {notification_email {123456@qq.com}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 127.0.0.1smtp_connect_timeout 30router_id lb01 } vrrp_instance VI_1 {state MASTER #指定Keepalived的角色,MASTER為主,BACKUP為備interface eth0virtual_router_id 55 #虛擬路由id號,主備需要一直priority 150 #優先級,數值越大,優先級越高advert_int 1 #檢測間隔,默認為1sauthentication {auth_type PASS #認證類型auth_pass 1111 #認證密碼}virtual_ipaddress {192.168.56.20/24 #設置DR的虛擬ip,可以多設,一行一個} }virtual_server 192.168.56.20 80 { #定義LVS對外提供服務的VIP為192.168.56.20和port為80delay_loop 6 #設置健康檢查時間,單位為秒lb_algo wrr #設置負載均衡調度算法為wrrlb_kind DR #設置LVS實現負載均衡機制為DR模式nat_mask 255.255.255.0 persistence_timeout 20 #會話保持超時配置protocol TCP #使用TCP協議檢查realserver的狀態real_server 192.168.56.11 80 { #配置真實服務器節點和端口weight 100 #權重TCP_CHECK {connect_timeout 10 #連接超時,單位為秒nb_get_retry 3 #重試連接次數connect_port 80 #連接端口}}real_server 192.168.56.14 80 {weight 100TCP_CHECK {connect_timeout 10nb_get_retry 3connect_port 80}} }從負載均衡服務器與主負載服務器大致相同,只是在keepalived的配置文件中需要改以下兩處:
(1)將state由MASTER改為BACKUP
(2)將priority由100改為99
?配置完成后,啟動Keepalived
[root@lb01 ~]# systemctl start keepalived [root@lb02 ~]# systemctl start keepalived [root@lb01 ~]# ipvsadm -L -n IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.56.20:80 wrr persistent 20-> 192.168.56.11:80 Route 100 0 0 -> 192.168.56.14:80 Route 100 0 0 [root@lb02 ~]# ipvsadm -L -n IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.56.20:80 wrr persistent 20-> 192.168.56.11:80 Route 100 0 0 -> 192.168.56.14:80 Route 100 0 0 [root@lb01 ~]# ip addr |grep 192.168.56.20 #查看lb01上是否存在VIPinet 192.168.56.20/24 scope global secondary eth0 [root@lb02 ~]# ip addr |grep 192.168.56.20 #查看lb02上是否存在VIP,如果有說明存在腦裂四、驗證測試訪問http://192.168.56.20
(1)指定請求的均衡轉發:因為兩個Web服務器的權重都一樣,所以會依次轉發給兩個Web服務器
?
(2)Web服務器發生故障時
模擬停止192.168.56.14,暫停其Nginx服務,再進行訪192.168.56.20,可以看到只會從11上獲取頁面
[root@rs2 html]# /etc/init.d/nginx stop Stopping nginx: [ OK ]從負載均衡器的狀態監控上,也可以看到192.168.56.14這臺服務器已經從集群中剔除,當故障修復后,再查看調度器狀態信息,可以看到rs2已經重新加入集群當中
[root@lb01 ~]# ipvsadm -L -n #lb01上查看調度信息,可以看到rs2已經從集群中剔除 IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.56.20:80 wrr persistent 20-> 192.168.56.11:80 Route 100 0 2[root@rs2 html]# /etc/init.d/nginx start #重啟rs2上的nginx服務 Starting nginx: [ OK ] [root@lb01 ~]# ipvsadm -L -n #可以看到rs2又重新加入到集群當中提供服務 IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.56.20:80 wrr persistent 20-> 192.168.56.11:80 Route 100 2 1 -> 192.168.56.14:80 Route 100 0 0
(3)主負載均衡服務器發生故障時,備機立即充當主機角色提供請求轉發服務
?模擬停止lb01上的keepalived服務,可以看到lb01上的vip漂移到了lb02上,但繼續訪問vip卻不受影響。當主負載均衡器(lb01)服務恢復時,vip又會重新漂移到主負載均衡器上(lb01)
[root@lb01 ~]# ip addr |grep 192.168.56.20inet 192.168.56.20/24 scope global secondary eth0 [root@lb01 ~]# systemctl stop keepalived [root@lb01 ~]# ip addr |grep 192.168.56.20 [root@lb02 ~]# ip addr |grep 192.168.56.20inet 192.168.56.20/24 scope global secondary eth0轉載于:https://www.cnblogs.com/linuxk/p/9365189.html
總結
以上是生活随笔為你收集整理的LVS入门篇(五)之LVS+Keepalived实战的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Nginx+Fastdfs
- 下一篇: 2017-2018年Scrum状态调查报