1. 程式人生 > >Linux平臺基於DR模式的LVS搭建

Linux平臺基於DR模式的LVS搭建

linux運維

一: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搭建