Linux平臺基於DR模式的LVS搭建
一:DR模式工作流程
VS-DR:Virtual Server via Direct Routing 直接路由的虛擬服務器
VS(virtual server)
VIP: 接收客戶端請求
DIP:發送請求給RS的RIP
RS (real server)
RIP:接收請求
VIP:響應請求給客戶端
註意:
①四個IP都為公網地址
②RS與VS的VIP相同,且都為公網IP
③當處於同一局域網的LVS的VIP與RS的VIP相同時,可以通過修改內核參數,使RS的VIP禁止廣播,使其只用來回應用戶請求,且兩VIP不沖突。
④只有局域網間通信才用到MAC地址
具體工作流程
(a) 當用戶請求到達Director Server,此時請求的數據報文會先到內 核空間的PREROUTING鏈。 此時報文的源IP為CIP,目標IP為VIP
(b) PREROUTING檢查發現數據包的目標IP是本機,將數據包送至 INPUT鏈
(c) IPVS比對數據包請求的服務是否為集群服務,若是,將請求報文 中的源MAC地址修改為DIP的MAC地址,將目標MAC地址修改RIP 的MAC地址,然後將數據包發至POSTROUTING鏈。 此時的源IP和 目的IP均未修改,僅修改了源MAC地址為DIP的MAC地址,目標 MAC地址為RIP的MAC地址
(d) 由於DS和RS在同一個網絡中,所以是通過二層來傳輸。 POSTROUTING鏈檢查目標MAC地址為RIP的MAC地址,那麽此時 數據包將會發至Real Server。
(e) RS發現請求報文的MAC地址是自己的MAC地址,就接收此報文 。處理完成之後,將響應報文通過lo接口傳送給eth0網卡然後向外發 出。 此時的源IP地址為VIP,目標IP為CIP
(f) 響應報文最終送達至客戶端
二:實驗環境
VS一臺:
VIP:172.17.252.1(eth0:0 橋接模式)
RS兩臺:
RS1
RIP:172.17.250.121
VIP:172.17.252.1(lo:0)
RS2
RIP:172.17.250.122
VIP:172.17.252.1(lo:0)
三:實驗前準備
1.確保兩臺RS上都有基於LNMP的測試網站(LNMP網站搭建過程可見博客:http://13172823.blog.51cto.com/13162823/1978924)
2.VS
①安裝ipvsadm管理軟件
[root@vs ~]# yum install ipvsadm -y
②清除防火墻策略並關閉SElinux
[root@vs ~]# iptables -F&&setenforce 0
③檢測內核是否支持ipvs模塊
[root@vs ~]# grep -i -C 10 "ipvs" /boot/config-2.6.32-696.el6.x86_64
四:實驗步驟
※操作環境:VS
1.配置eth0:0為VIP,並只能廣播自己
ifconfig eth0:0 172.17.252.1 broadcast 172.17.252.1 netmask 255.255.255.255 up
2.配置VIP路由表
route add -host 172.17.252.1 dev eth0:0
3.創建基於80端口的VS,調度方式為wrr
ipvsadm -A -t 172.17.252.1:80 -s wrr
4.添加RS1、RS2,權重為1
ipvsadm -a -t 172.17.252.1:80 -r 172.17.250.121:80 -g -w 1
ipvsadm -a -t 172.17.252.1:80 -r 172.17.250.122:80 -g -w 1
5.修改內核配置,開啟VS路由轉發功能
①編輯配置文件
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
②使配置文件生效
sysctl -p
※操作環境:RS1、2
1.配置VIP到 lo:0,且只對自己廣播
ifconfig lo:0 172.17.252.1 broadcast 172.17.252.1 netmask 255.255.255.255 up ifconfig lo:0 172.17.252.1 broadcast 172.17.252.1 netmask 255.255.255.255 up
2.配置lo:0路由
route add -host 172.17.252.1 lo:0
3.只回答目標IP地址是來訪網絡接口本地地址的ARP查詢請求
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
4.對查詢目標使用最適當的本地地址.在此模式下將忽略這個IP數據包的源地址並嘗試選擇與能與該地址通信的本地地址
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
5.關閉arp應答
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
相關知識點:
“1”:僅在請求的目標IP配置在本地主機的接收到請求報文的接口上時,才給予響應
“2”:必須避免將接口信息向非本網絡進行通告
6.確保RS的nginx、php-fpm、mariadb服務開啟
Linux平臺基於DR模式的LVS搭建