lvs系列之dr(二)
負載集群LVS_DR模型原理:
客戶端CIP請求WEB資源,必須經過Director轉發給RS,而RS響應請求給客戶端CIP一定不能經過Director,由于客戶端的請求是發給VIP的,要響應客戶端的請求,這就要求Director和RS之間要共享VIP。Director的DIP、RS1的RIP1、RS2的RIP2必須在同一網段,可以是公網,也可以是私網,他們之間的通信基于MAC地址。RS上最好都有公網IP,或者出去的網關有多個,否則單網關容易成為集群的瓶頸。由于Director和RS擁有同樣的VIP,所以要對RS做一些ARP限制,使它們不能應答ARP廣播,只是把VIP用來封包數據響應CIP,以保障所有對RS上的資源的請求必須經過Director的負載均衡分配。
模擬過程:
客戶端CIP發送訪問WEB資源的請求到Director的VIP;請求到達switch時會先ARP廣播一下:who is VIP?此時由于RS上通過一些手段作了ARP限制使之不能應答,所以只有Director作了應答:I am VIP,于是switch將數據幀發給了Director
源IP | 目標IP |
CIP | Director的VIP:172.16.58.1 |
?
Director經過負載均衡算法挑選出RS1,因為Director的DIP和RS1的RIP1在同一網段,他們之間可以通過MAC地址通信,于是將數據幀的目的MAC地址改為RS1的MAC地址,這樣數據幀就發送到了RS1,源IP和目標IP并不改變
?
RS1將請求的WEB資源封裝直接響應給CIP,不再經過Director,不過此時的源IP為RIP1,所以需要將數據先從RS1本機的lo:0轉發一下,使源IP變為VIP才能響應給客戶端CIP
源IP | 目標IP |
RS1的lo:0上的VIP:172.16.58.1 | CIP |
這樣就完成了一次通信
?
實驗環境準備:
需要一個可以與外網通信的物理路由主機172.16.0.1。三臺虛擬機,一個Director,一個RS1,一個RS2,網卡連接方式都選擇橋接。
?
Director:負載均衡調度器 ???????? VIP:172.16.58.1 ???????? DIP:172.16.58.2 |
RS1:真實WEB服務器1 ???????? RIP1:172.16.58.7 VIP:172.16.58.1 |
RS2:真實WEB服務器2 ???????? RIP1:172.16.58.8 VIP:172.16.58.1 |
?
實戰配置:
RS1的配置:
#設置RIP1
ifconfig eth0 172.16.58.7 up
#設置VIP
ifconfig lo:0?172.16.58.1?netmask?255.255.255.255?broadcast172.16.58.1?up
#查看
ifconfig
#對ARP設置響應級別和通告級別
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
#添加路由
route add –host?172.16.58.1?devlo:0
#從服務器上同步時間
ntpdate?172.16.0.1
?
RS2的配置:
#設置RIP2
ifconfig eth0 172.16.58.8 up
#設置VIP
ifconfiglo:0?172.16.58.1?netmask?255.255.255.255?broadcast172.16.58.1?up
#查看
ifconfig
#對ARP設置響應級別和通告級別
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 >/proc/sys/net/ipv4/conf/lo/arp_announce
永久生效需修改配置文件:/etc/sysctl.conf
net.ipv4.conf.eth0.app_ignore = 1
net.ipv4.conf.eth0.app_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
sysctl –p 使配置生效
#添加路由
route add –host?172.16.58.1?devlo:0
#從服務器上同步時間
ntpdate?172.16.0.1
?
Director的設置:
#設置VIP
ifconfig eth0:0 172.16.58.1 gw 172.16.0.1 up
#設置DIP
ifconfig eth0 172.16.58.2 up
#清除iptables規則
iptales -F
service iptales save
#添加集群服務
ipvsadm –A –t 172.16.58.1:80 –s wlc
#添加真實服務器RS1、RS2
ipvsadm –a –t?172.16.58.1:80–r?172.16.58.7 –g –w 2
ipvsadm –a –t?172.16.58.1:80–r?172.16.58.8 –g –w 1
#從服務器上同步時間
ntpdate?172.16.0.1
#瀏覽器訪問測試
瀏覽器訪問172.16.58.1,不斷刷新
轉載于:https://blog.51cto.com/zhouxt/1641604
總結
以上是生活随笔為你收集整理的lvs系列之dr(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 应用交互框架浅析
- 下一篇: 设计模式(二)之装饰器模式