lvsDR模型原理:
外部請求到來時,源IP是CIP目標IP是VIP,進入路由,路由arp解析,由於只能讓Director給予響應,所以禁用RS的arp響應廣播,只能響應連入網絡中的接口對應的ip的解析,所以將VIP設置在lo:0接口,這樣之後Director可以響應路由器的arp解析,客戶端請求進去Director,通過PREROUTING進入INPUT,在INPUT設置了lvs服務,凡是請求vip:80的請求,均進行轉發,於是在Director INPUT鏈上根據調度規則,選出合適的RS,進行轉發,轉發是根據MAC地址進行的,各服務器之間通信是靠DIP和RIP進行的,所以各服務器上均有彼此通信的IP所在的網卡的mac地址,根據調度規則選出的mac地址轉發,當請求到達選中的RS後,RS進行解封裝,發現目標ip是自己的(即vip,在每臺RS的lo:0接口上配置的ip)於是根據請求準備數據,數據目標IP是CIP,源IP是VIP,但是不能直接通過eth0進行發送,因爲從哪個接口發送,那麼源地址便是哪個接口的IP,這樣客戶端不會接收此數據,所以需要強制從lo:0接口轉到eth0接口進行發送,所以設置了主機路由,這樣數據便沒有經過Director直接經過路由器發送到客戶端。
架構實現步驟:
vip:172.16.28.200
DIP:172.16.28.10
RIP:172.16.28.1
RIP:172.16.28.100
1.Director操作:
設置IP
ifconfig eth0 172.16.28.10/16 up ifconfig eth0:0 172.16.28.200 broadcast 172.16.28.200 netmask 255.255.255.255 up
設置主機路由
route add –host 172.16.28.200 dev eth0:0
設置路由轉發
echo 1 > /proc/sys/net/ivv4/ip_forward
或者修改/etc/sysctl.conf中的ip_forward=1
定義lvs服務
ipvsadm –A –t 172.16.28.200:80 –s wlc
ipvsadm –a –t 172.16.28.200:80 –r 172.16.28.1 –g –w 1
ipvsadm –a –t 172.16.28.200:80 –r 172.16.28.100 –g –w 2
2.Realserver操作
禁用arp響應廣播,兩臺RS分別操作
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1> /proc/sys/net/ipv4/conf/lo/arp_ignore
或者:
在sysctl.conf裏添加
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.lo.arp_ignore=1
RS1
ifconfig eth0 172.16.28.1/16 up ifconfig lo:0 172.16.28.200 broadcast 172.16.28.200 netmask 255.255.255.255 up route add –host 172.16.28.200 dev lo:0
RS2
ifconfig eth0 172.16.28.100/16 up ifconfig lo:0 172.16.28.200 broadcast 172.16.28.200 netmask 255.255.255.255 up route add –host 172.16.28.200 dev lo:0
三臺均開啓http服務測試