1. 程式人生 > >實現DR模式的LVS

實現DR模式的LVS

lvs和ldirectord

實驗:實現DR模式的LVS:

環境:五臺主機,一臺客戶端,一臺充當路由器,一臺vs服務器,兩臺rs服務器;


網路拓撲圖:技術分享

客戶端:外網地址;172.18.77.66

路由器:兩個網卡,內網和外網都有

內網:192.168.77.74

外網:172.18.77.74

vs服務器: 僅主機模式,一個網卡綁定兩個ip,一個是vip一個是dip

vip:192.168.77.99

dip:192.168.77.77

rs服務器:rs1:192.168.77.7

rs2:192.168.77.6


配置:

在客戶端加上路由器的網關 route add default gw 172.18.77.74

在路由器上 echo 1 > /proc/sys/net/ipv4/ip_forward

在vs服務器上添加一條路由 route add default gw 192.168.77.74

添加一個vip ----> ip a a 192.168.77.99 dev eth1


添加rs服務器

[root@centos7 ~]#ipvsadm -A -t 172.18.77.99:80 -s wrr
[root@centos7 ~]#ipvsadm -a -t 172.18.77.99:80 -r 192.168.77.7 
[root@centos7 ~]#ipvsadm -a -t 172.18.77.99:80 -r 192.168.77.6
在rs服務器上配置vip 建議在回環網卡上配置 ip a a 192.168.77.99/32 dev lo:1
添加網關指向路由器的內網地址 route add default gw 192.168.77.74

修改文件:

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

上述的服務器確定selinux和iptables的關閉和httpd服務的開啟


測試:

[root@centos6 ~]#for i in {1..10};do curl 192.168.77.99;done
這是rs2機器
這是rs-1機器
這是rs2機器
這是rs-1機器
這是rs2機器
這是rs-1機器
這是rs2機器
這是rs-1機器
這是rs2機器
這是rs-1機器


小提示:做測試時減少反應時間,報錯時可快速報錯 curl --connect-time 1 192.168.77.7


ldirectord 工具

包名ldirectord

[root@centos7 ~]#cp /usr/share/doc/ldirectord-3.9.6/ldirectord.cf /etc/ha.d/ldirectord.cf
[root@centos7 ~]#systemctl start ldirectord
ldirectord:監控和控制LVS守護進程,可管理LVS規則
包名:ldirectord-3.9.6-0rc1.1.1.x86_64.rpm
文件:
/etc/ha.d/ldirectord.cf 主配置文件
/usr/share/doc/ldirectord-3.9.6/ldirectord.cf 配置模版
/usr/lib/systemd/system/ldirectord.service 服務
/usr/sbin/ldirectord 主程序
/var/log/ldirectord.log 日誌
/var/run/ldirectord.ldirectord.pid pid文件

Ldirectord配置文件示例

checktimeout=3  監控後端rs的狀態 ,多長時間檢查一次,超時時間是多少
checkinterval=1  多長時間檢查一次
autoreload=yes  修改配置文件自動生效
logfile=“/var/log/ldirectord.log“ #日誌文件
quiescent=no #down時yes權重為0,no為刪除
virtual=192.168.77.77#指定VS的FWM或IP:port
real=172.16.0.7:80 gate 2
real=172.16.0.8:80 gate 1
fallback=127.0.0.1:80 gate #sorry server
service=http
scheduler=wrr
checktype=negotiate
checkport=80
request="index.html"
receive=“Test Ldirectord"


為了從主Director將LVS負載均衡資源故障轉移到備用Director,並從集群中自動移除節點,我們需要使用ldirectord程序,這個程序在啟動時自動建立IPVS表,然後監視集群節點的健康情況,在發現失效節點時將其自動從IPVS表中移除。

為了監視web集群內的真實服務器,ldirectord守護進程使用HTTP協議向每個真實服務器請求一個專用的web頁面,如果真實服務器是健康的,Director知道將從真實服務器接收到什麽內容,如果從真實服務器返回應答字串或web頁面的時間太長,或根本沒有返回任何內容,或返回的內容不是預期的,Director就知道該真實服務器出錯了,並從IPVS表中將這個真實服務器移除。


實現DR模式的LVS