1. 程式人生 > >18.11 LVS DR模式搭建18.12 keepalived + LVS

18.11 LVS DR模式搭建18.12 keepalived + LVS

十六周一次課(4月11日)

18.11 LVS DR模式搭建
技術分享圖片
首先將兩臺rs的網關改回來,因為在做nat模式的時候更改了網關
vip需要綁定在所有的機器上
技術分享圖片
在分以器dir上編輯腳本
vim /usr/local/sbin/lvs_dr.sh
內容
#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
ipv=/usr/sbin/ipvsadm
vip=192.168.133.200
rs1=192.168.133.132
rs2=192.168.133.133
#註意這裏的網卡名字
ifdown ens33
ifup ens33 (這時重啟一下網卡,如果再一次去執行這個腳本就不用重復去設置ens33:2的ip了)
ifconfig ens33:2 $vip broadcast $vip netmask 255.255.255.255 up 這裏設置的ens33:2是虛擬網卡
route add -host $vip dev ens33:2
$ipv -C 清空規則
$ipv -A -t $vip:80 -s rr
$ipv -a -t $vip:80 -r $rs1:80 -g -w 1 -g指的是DR模式 -m指的是NAT模式
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1
技術分享圖片
最的執行一下腳本
sh /usr/local/sbin/lvs_dr.sh
兩臺rs也要編輯一下腳本
技術分享圖片
vim /usr/local/sbin/lvs_rs.sh
#/bin/bash
vip=192.168.133.200
#把vip綁定在lo上,是為了實現rs直接把結果返回給客戶端
ifdown lo
ifup lo
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
#以下操作為更改arp內核參數,目的是為了讓rs順利發送mac地址給客戶端
#參考文檔www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html
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
技術分享圖片
最後執行一下腳本
sh /usr/local/sbin/lvs_dr.sh
查看dir上的ens33是否有綁定的vip
技術分享圖片
查看rs上是否有綁定的vip
技術分享圖片
3臺機器的腳本都執行完成,剩下的就是測試了
在瀏覽器輸入192.168.137.200
但在瀏覽器上試不出效果,可以是緩存的原因,刷新只有一臺機器上
技術分享圖片
curl在本機上也法測試成功,因為3臺機器都綁定了同樣的vip,無法使用curl測試,只有重新開一臺虛擬機才能用curl測試,但當防問量達到一定多的時候肯定是可以負載均衡的
18.12 keepalived + LVS技術分享圖片
技術分享圖片
vim /etc/keepalived/keepalived.conf
先將內容清空
內容
vrrp_instance VI_1 {
#備用服務器上為 BACKUP
state MASTER
#綁定vip的網卡為ens33,你的網卡和阿銘的可能不一樣,這裏需要你改一下
interface ens33
virtual_router_id 51
#備用服務器上為90
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass aminglinux
}
virtual_ipaddress {
192.168.137.200
}
}
virtual_server 192.168.137.200 80 {
#(每隔10秒查詢realserver狀態)
delay_loop 10
#(lvs 算法)
lb_algo wlc
#(DR模式)
lb_kind DR
#(同一IP的連接60秒內被分配到同一臺realserver)
persistence_timeout 60
#(用TCP協議檢查realserver狀態)
protocol TCP
real_server 192.168.137.130 80 {
#(權重)
weight 100
TCP_CHECK {
#(10秒無響應超時)
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.137 135 80 {
weight 100
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}

然後啟動keepalived服務
systemctl start keepalived
技術分享圖片
查看一下規則 ,因為之前設置了規則,所以這裏有規則
ipvsadm -ln
技術分享圖片
首先要清空一下規則,停一下keepalived
systemctl stop keeplived
這時候規則沒有了
技術分享圖片
之前設置的虛擬ip192.168.137.200也沒有了
技術分享圖片
再開啟keepalived,新的規則出現了
技術分享圖片
把192.168.137.135的nginx停掉
systemctl stop nginx
隔一段時間再查看,這時候192.168.137.135的機器不見了,這就說明keepalived可以自動檢測到那一臺機器有問題,就會自動把它排除掉
技術分享圖片
再開戶192.168.1.135主機的nginx
systemctl start nginx
它會自動連接回來
技術分享圖片
在瀏覽器上輸入19.168.137.200多刷新幾次,查看一下負載均衡的關系,基本是1:1的關系
技術分享圖片
擴展
haproxy+keepalived http://blog.csdn.net/xrt95050/article/details/40926255
nginx、lvs、haproxy比較 http://www.csdn.net/article/2014-07-24/2820837
keepalived中自定義腳本 vrrp_script http://my.oschina.net/hncscwc/blog/158746
lvs dr模式只使用一個公網ip的實現方法 http://storysky.blog.51cto.com/628458/338726

18.11 LVS DR模式搭建18.12 keepalived + LVS