標籤:lvs-dr 路由器 director
Lvs-dr配置
用戶端通過路由器將請求交給director的VIP。director接收請求,將通過相應的演算法將請求轉寄給相應的realserver。在轉寄的過程中,會修改請求包的目的mac地址,目的ip地址不變。realserver接收請求,並直接響應用戶端。但這有個問題:director此時與realserver位於同一個網路中,當director直接將請求轉寄給realserver時,realserver檢測到該請求包的目的ip是vip而並非自己,便會丟棄,而不會響應。所以,我們需要在所有realserver上都配上VIP。但又會有二個問題:director與realserver位於同一個網路中,當出現多個vip時,通過arp廣播,整個網路必然混亂,我們無法保證用戶端的請求一定會發往director。為保證當用戶端請求抵達網路時,只有director來響應請求。我們需要realserver忽略對vip的arp請求,並且在arp通告時,不通告vip地址。我們需要配置如下兩個核心參數:
arp_ignore :
當一台主機某個介面接收到arp請求時,這台機上的ip地址是否通過該介面響應給對應請求的限制層級。簡單來說,當這台主機有多塊網卡,或者有多個ip地址時,是否通過該介面將所有ip地址響應給對應的請求。
0:不作任何限制。將所有原生ip地址都響應給對應請求。
1:當請求的ip就配置在本介面上時,才予以響應。換句話說,就是只響應當前介面的ip地址。
arp_announce:
當一台主機加入到一個新的網路。會發出ARP通告,向網路中其他主機通告自己的ip地址及mac等資訊。arp_anounce就用來限制通告的層級。當這台主機有多塊網卡或者多個ip地址時,是否通過某一個介面將所有ip地址通告給該網路中的主機。
0:不作任何限制。從任意介面通告所有ip地址。
1:儘可能避免通告非本介面上的ip。
2:只通知本介面的ip。非本介面的ip不予通告。
由此我們亦可知,在realserver上配置vip時顯然也不能配置的物理介面的虛介面上,而應該配置在loopback上。
dr模型的特點:
1、保證前端路由將目標地址為VIP的報文統統發往Directory,而不能是RS;
解決方案:
(1)靜態地址綁定:在前端路由器上操作
問題:未必有路由操作許可權
(2)aprtables
(3)修改RS上核心參數,將RS上的VIP配置在lo介面的別名上,並限制其不能響應對VIP位址解析請求;
2、RS可以使用私人地址;但也可以使用公網地址,此時可通過互連網通過RIP對其直接存取;
3、RS跟Directory必須在同一物理網路中;
4、請求報文經由Director,但響應報文必須不能經過Director;
5、不支援連接埠映射;
6、RS可以是大多數常見的OS;
7、RS的網關絕不允許指向DIP;
實驗配置如下(共需三台主機)
1, 在虛擬機器2上
[[email protected]~]# ifconfig eth0 172.16.31.31/16 up
[[email protected]~]# route add default gw 172.16.0.1
2, 在虛擬機器3上
[[email protected] ~]# ifconfig eth0 172.16.31.32/16 up
[[email protected]~]# route add default gw 172.16.0.1
3, 在虛擬機器1上配置
[[email protected]~]# ifconfig eth0:0 172.16.31.100/16 up
[[email protected]~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:D0:61:EB
inet addr:172.16.31.30 Bcast:172.16.255.255 Mask:255.255.0.0
inet6 addr:fe80::20c:29ff:fed0:61eb/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:5109 errors:0 dropped:0overruns:0 frame:0
TX packets:142 errors:0 dropped:0overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:368690 (360.0 KiB) TX bytes:12077 (11.7 KiB)
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:D0:61:EB
inet addr:172.16.31.100 Bcast:172.16.255.255 Mask:255.255.0.0
UP BROADCASTRUNNING MULTICAST MTU:1500 Metric:1
4, 配置節點2和3上vip,在這之前要改變更配置置參數並且添加路由
[[email protected]~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[[email protected] ~]# echo 1 >/proc/sys/net/ipv4/conf/eth0/arp_ignore
[[email protected]~]# echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
[[email protected] ~]# echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce
[[email protected] ~]# ifconfig lo:0 172.16.31.100/16 up ----vip地址
[[email protected]~]#ifconfig lo:0172.16.32.88 netmask 255.255.255.255 broadcast 172.16.32.88 up
[[email protected] ~]#route add -host 172.16.32.88 dev lo:0
5, 配置叢集服務
[[email protected]~]# ipvsadm -A -t 172.16.31.100:80 -s rr
[[email protected]~]# ipvsadm -a -t 172.16.31.100:80 -r 172.16.31.31 -g -w 1
[[email protected] ~]# ipvsadm -a -t 172.16.31.100:80 -r172.16.31.32 -g -w 2
[[email protected] ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
->RemoteAddress:Port ForwardWeight ActiveConn InActConn
TCP 172.16.31.100:80 rr
->172.16.31.31:80 Route 1 0 0
->172.16.31.32:80 Route 2 0 0
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/48/54/wKiom1QG6B-BoABlAAA41Br8OCc297.png" style="float:none;" title="捕獲1.PNG" alt="wKiom1QG6B-BoABlAAA41Br8OCc297.png" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/48/56/wKioL1QG6CKRIyheAAAxURusL-Y903.png" style="float:none;" title="捕獲2.PNG" alt="wKioL1QG6CKRIyheAAAxURusL-Y903.png" />
本文出自 “Linux” 部落格,請務必保留此出處http://clarence.blog.51cto.com/8161461/1548435
lvs-dr原理及配置