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

一:DR模式工做流程php

VS-DR:Virtual Server via Direct Routing 直接路由的虛擬服務器linux


f1e11bc000a12dfe128a4716d5ec4e6a.png

dbb069b18b0f46bb717ec4734b668328.png

VS(virtual server)nginx

    VIP: 接收客戶端請求vim

    DIP:發送請求給RS的RIP服務器

RS (real server)網絡

    RIP:接收請求  ide

    VIP:響應請求給客戶端php-fpm

注意:測試

四個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.添加RS一、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

※操做環境:RS一、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服務開啓

相關文章
相關標籤/搜索