準備shell
三臺機器,須要三臺機器的公網IP,而且須要一個VIP。後端
調度器IP:192.168.42.128瀏覽器
服務器rs1 IP:192.168.42.129bash
服務器rs2 IP:192.168.42.130服務器
VIP:192.168.42.200架構
在調度器上編寫一個shell腳本/usr.local/sbin/lvs_dr.sh:負載均衡
#! /bin/bash echo 1 > /proc/sys/net/ipv4/ip_forward ipv=/usr/sbin/ipvsadm vip=192.168.42.200 rs1=192.168.42.129 rs2=192.168.42.130 #注意這裏的網卡名字 ifdown ens33 ifup ens33 ifconfig ens33:2 $vip broadcast $vip netmask 255.255.255.255 up route add -host $vip dev ens33:2 $ipv -C $ipv -A -t $vip:80 -s wrr $ipv -a -t $vip:80 -r $rs1:80 -g -w 1 $ipv -a -t $vip:80 -r $rs2:80 -g -w 1
在兩臺服務器上編寫一個腳本 /usr/local/sbin/lvs_re.sh:測試
#/bin/bash vip=192.168.42.200 #把vip綁定在lo上,是爲了實現rs直接把結果返回給客戶端 ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up route add -host $vip lo:0 #如下操做爲更改arp內核參數,目的是爲了讓rs順利發送mac地址給客戶端 echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
在三臺機器上執行各自的腳本spa
測試rest
瀏覽器訪問VIP
LVS架構中,不管是NAT模式仍是DR模式,當後端的真實服務器宕掉的時候,調度器依然會把請求轉發給宕掉的服務器上,這樣的結果並非咱們想要看到的。使用keepalived就能夠解決這個問題,keepalived不只有高可用功能,還有負載均衡的功能。在調度器上安裝了keepalived,就不用再安裝ipvsadm,一不用編寫LVS相關的腳本,由於keepalived已經嵌入了LVS功能。完整的keepalived+LVS架構須要兩臺調度器實現高可用,提供調度服務的須要一臺,另一臺作備用。
準備
爲節省資源,值設置一臺調度器上安裝keepalived,而且準備兩臺服務器和準備一個VIP。
主keepalived:192.168.42.128
服務器rs1:192.268.42.129
服務器rs2:192.168.42.130
VIP:192.168.42.200
編輯keepalived配置文件 /etc/keepalived/keepalived.conf
須要更改裏面ip信息,
若是之前執行過LVS的腳本就須要執行一些操做:
ipvsadm -C
systemctl restart network
兩臺服務器上都執行設置DR模式的腳本
調度器上啓動keepalived
systemctl start keepalived
查看有沒有keepalived進程
ps aux |grep keepalived
在瀏覽器上訪問vip來檢驗是否成功,而後把其中一臺服務器的Nginx關閉,而後刷新瀏覽器查看結果。
使用ipvsadm -ln查看鏈接數