一、實作LVS-NAT模型

1、LVS主機yum -y install ipvsadm
防火牆關閉,RS1、RS2安裝httpd,添加index.html,路由器添加到達172.20.0.123的路由表
2、各主機配置
RS1
并存在
RS2
并同時有
router,打開路由轉發功能,vim /etc/sysctl.conf
vmnet6端
伺服器端
因為需要保證通路後VIP和CIP要原路傳回,是以路由需要添加路由到用戶端的ip
LVS,注意LVS-NAT模式也需要打開路由轉發,vim /etc/sysctl.conf中添加net.ipv4.ip_forward = 1
LVS也需要目标10.0.0.0網段路由表
3、網絡配置完成,開始設定LVS
ipvsadm -A -t 172.20.0.123:80 -s rr
ipvsadm -Ln,查詢LVS清單,選項必須-Ln,不能-nL
ipvsadm -a -t 172.20.0.123:80 -r 192.168.32.7 -m
ipvsadm -a -t 172.20.0.123:80 -r 192.168.32.17 -m
測試結果,rr輪詢
二、實作LVS-DR模型
1、網卡配置
客戶機添加路由表
route網卡配置:
另一端
打開路由轉發
LVS網卡配置:vip綁到回環網卡上
另一網卡配置
完成後加網關route add -net 10.0.0.0/8 gw 192.168.32.200,LVS不加網關将排程失敗,網關是個擺設,本實驗中在192.168.32.0網段可以随便加為網關
RS1配置
R2配置
在RS上執行腳本,配置vip,修改核心參數,常儲存依然更改/etc/sysctl.conf
2、關閉R1和R2的arp響應
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
3、在LVS上執行指令
iptables -F,清空一下防火牆政策以免造成幹擾
ipvsadm -A -t 10.0.0.100:80 -s wrr
ipvsadm -a -t 10.0.0.100:80 -r 192.168.32.7 -g -w 1
ipvsadm -a -t 10.0.0.100:80 -r 192.168.32.17 -g -w 1
4、測試結果
附1:RS的配置腳本
#!/bin/bash
vip=10.0.0.100
mask='255.255.255.255‘
dev=lo:1
case $1 in
start)
ifconfig $dev $vip netmask $mask #broadcast $vip up
#route add -host $vip dev $dev
;;
stop)
ifconfig $dev down
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
*)
echo "Usage: $(basename $0) start|stop"
exit 1
esac
附2:VS的配置腳本
vip='10.0.0.100'
iface=‘lo:1'
mask='255.255.255.255'
port='80'
rs1='192.168.0.101'
rs2='192.168.0.102'
scheduler='wrr'
type='-g'
ifconfig $iface $vip netmask $mask #broadcast $vip up
iptables -F
ipvsadm -A -t ${vip}:${port} -s $scheduler
ipvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1
ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 1
ipvsadm -C
ifconfig $iface down
echo "Usage $(basename $0) start|stop“
5、給80、443端口添加标簽
給RS1、RS2安裝mod_ssl,有簡單的自簽名證書,形成https協定,重新開機httpd服務後生成443端口
此時80、443端口對應的lvs政策已經生成
貼防火牆标簽,使得通路10.0.0.100端口80和443的,都将貼上标簽10端口
iptables -t mangle -A PREROUTING -d 10.0.0.100 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 10
添加後iptables規則便生成
ipvsadm -Ln
ipvsadm -A -f 10 -s rr
ipvsadm -a -f 10 -r 192.168.32.7 -g
ipvsadm -a -f 10 -r 192.168.32.17 -g
此時80和443已經合成了一個标簽,可以進行統一排程
測試
6、持久連接配接,會話綁定,加-p即可實作
ipvsadm -E -f 10 -s rr -p,-p不指定時間預設360秒
測試,連接配接綁定了RS1伺服器
7、LVS高可用性
在LVS伺服器輸入指令,curl http://192.168.32.17 &> /dev/null || ipvsadm -d -f 10 -r 192.168.32.17,當檢測到該RS伺服器down掉時會自動删除指向該主機的lvs政策,使LVS不用再指向down掉的伺服器
不過我們也可以用ldirectord工具實作
當所有RS伺服器down時,我們看到界面
此時應該做一個sorry sever,我們可以用LVS伺服器當sorry server,給lvs安裝httpd,開啟httpd服務,echo 'Sorry Server' > /var/www/html/index.thml
之後LVS伺服器安裝包ldirectord
cp /usr/share/doc/ldirectord-3.9.6/ldirectord.cf /etc/ha.d/
vim /etc/ha.d/ldirectord-3.9.6/ldirectord.cf
設定好後systemctl start ldirectord.service
當R1或者R2當機時,會自動curl到正常的伺服器,當RS全部當機時,會顯示
随便上線一個便恢複正常