1. 程式人生 > >LVS/NAT方式實現負載均衡

LVS/NAT方式實現負載均衡

LVS/NAT

在一組伺服器前有一個排程器,它們是通過 Switch/HUB 相連線的。這些伺服器提供相同的網路服務、相同的內容,即不管請求被髮送到哪一臺伺服器,執行結果是一樣的。服務的內容可以複製到每臺伺服器的本地硬碟上,可以通過網路檔案系統(如 NFS)共享,也可以通過一個分散式檔案系統來提供。

排程過程IP包詳細圖:

這個是通過網路地址轉換的方法來實現排程的。首先排程器(LB)接收到客戶的請求資料包時(請求的目的IP為VIP),根據排程演算法決定將請求傳送給哪個 後端的真實伺服器(RS)。然後排程就把客戶端傳送的請求資料包的目標IP地址及埠改成後端真實伺服器的IP地址(RIP),這樣真實伺服器(RS)就能夠接收到客戶的請求資料包了。真實伺服器響應完請求後,檢視預設路由(NAT模式下我們需要把RS的預設路由設定為LB伺服器。)把響應後的資料包傳送 給LB,LB再接收到響應包後,把包的源地址改成虛擬地址(VIP)然後傳送回給客戶端

原理圖簡述:

1)客戶端請求資料,目標IP為VIP

2)請求資料到達LB伺服器,LB根據排程演算法將目的地址修改為RIP地址及對應埠(此RIP地址是根據排程演算法得出的。)並在連線HASH表中記錄下這個連線。

3)資料包從LB伺服器到達RS伺服器webserver,然後webserver進行響應。Webserver的閘道器必須是LB,然後將資料返回給LB伺服器。

4)收到RS的返回後的資料,根據連線HASH表修改源地址VIP&目標地址CIP,及對應埠80.然後資料就從LB出發到達客戶端。

5)客戶端收到的就只能看到VIP\DIP資訊。

NAT模式優缺點:

1、NAT技術將請求的報文和響應的報文都需要通過LB進行地址改寫,因此網站訪問量比較大的時候LB負載均衡排程器有比較大的瓶頸,一般要求最多之能10-20臺節點

2、只需要在LB上配置一個公網IP地址就可以了。

3、每臺內部的節點伺服器的閘道器地址必須是排程器LB的內網地址。

4、NAT模式支援對IP地址和埠進行轉換。即使用者請求的埠和真實伺服器的埠可以不一致。

環境配置

server1 LB

eth1:172.25.254.100

eth0:172.25.1.1

server2

RS 172.25.1.2
server3 RS 172.25.1.1
客戶端 172.25.254.1

配置:

開啟server1核心路由機制

vi /etc/sysctl.conf

net.ipv4.ip_forward = 1

如果做實驗的話,可以執行臨時設定

sysctl -w net.ipv4.ip_forward=1

sysctl -a | grep ip_forward
net.ipv4.ip_forward = 1

server1上加一塊網絡卡eth1並激活網絡卡

 ip addr add 172.25.254.100/24 dev eth1
 ip link set up eth1


載入 nat 模組
modprobe iptable_nat
注:如果不載入此模組,可以在第一次訪問成功,但是會在再次訪問時出現延遲過長,或訪問超時現象

在server1上新增排程策略:

ipvsadm -A -t 172.25.254.100:80 -s rr
ipvsadm -a -t 172.25.254.100:80 -r 172.25.1.2:80 -m
ipvsadm -a -t 172.25.254.100:80 -r 172.25.1.3:80 -m
儲存 rule
service ipvsadm save

server2和server3的配置

在server2和server3中都需要新增閘道器,因為排程器通過172.25.254.112傳送給客戶

route add default gw 172.25.1.1   #給server2和servere3新增閘道器
ping 172.25.1.1                   #測試與閘道器之間是否相通
/etc/init.d/httpd start           #開啟server2和server3後端伺服器的httpd

測試

客戶端

server1