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