1. 程式人生 > >LVS負載均衡之NAT模式

LVS負載均衡之NAT模式

LVS負載均衡之NAT

LVS負載均衡之NAT模式

重點理解NAT方式的實現原理和數據包的改變。

(a). 當用戶請求到達Director Server,此時請求的數據報文會先到內核空間的PREROUTING鏈。 此時報文的源IP為CIP,目標IP為VIP?
(b). PREROUTING檢查發現數據包的目標IP是本機,將數據包送至INPUT鏈
(c). IPVS比對數據包請求的服務是否為集群服務,若是,修改數據包的目標IP地址為後端服務器IP,然後將數據包發至POSTROUTING鏈。 此時報文的源IP為CIP,目標IP為RIP?
(d). POSTROUTING鏈通過選路,將數據包發送給Real Server
(e). Real Server比對發現目標為自己的IP,開始構建響應報文發回給Director Server。 此時報文的源IP為RIP,目標IP為CIP?

(f). Director Server在響應客戶端前,此時會將源IP地址修改為自己的VIP地址,然後響應給客戶端。 此時報文的源IP為VIP,目標IP為CIP

  1. LVS-NAT模型的特性
    ? RS應該使用私有地址,RS的網關必須指向DIP
    ? DIP和RIP必須在同一個網段內
    ? 請求和響應報文都需要經過Director Server,高負載場景中,Director Server易成為性能瓶頸
    ? 支持端口映射
    ? RS可以使用任意操作系統
    ? 缺陷:對Director Server壓力會比較大,請求和響應都需經過director server

1、實驗環境
三臺服務器,一臺作為 director,兩臺作為 real server,director 有一個外網網卡(172.16.254.200)?和一個內網ip(192.168.0.8),兩個 real server 上只有內網 ip?(192.168.0.18)?和?(192.168.0.28),並且需要把兩個 real server 的內網網關設置為 director 的內網 ip(192.168.0.8)

2、安裝和配置
兩個 real server 上都安裝 nginx 服務
# yum install -y nginx
Director 上安裝 ipvsadm# yum install -y ipvsadm
Director 上編輯 nat 實現腳本

# vim /usr/local/sbin/lvs_nat.sh
# 編輯寫入如下內容:
#! /bin/bash
# director服務器上開啟路由轉發功能:
echo 1 > /proc/sys/net/ipv4/ip_forward

# 關閉 icmp 的重定向
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects

echo 0 > /proc/sys/net/ipv4/conf/eth0/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/eth1/send_redirects

# director設置 nat 防火墻
iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

# director設置 ipvsadm
IPVSADM=‘/sbin/ipvsadm‘
$IPVSADM -C
$IPVSADM -A -t 172.16.254.200:80 -s wrr
$IPVSADM -a -t 172.16.254.200:80 -r 192.168.0.18:80 -m -w 1
$IPVSADM -a -t 172.16.254.200:80 -r 192.168.0.28:80 -m -w 1

保存後,在 Director 上直接運行這個腳本就可以完成 lvs/nat 的配置
/bin/bash /usr/local/sbin/lvs_nat.sh
查看ipvsadm設置的規則
ipvsadm -ln

3、測試LVS的效果
通過瀏覽器測試2臺機器上的web內容?http://172.16.254.200?。為了區分開,我們可以把 nginx 的默認頁修改一下:
在 RS1 上執行
# echo "rs1rs1" >/usr/share/nginx/html/index.html
# echo "rs2rs2" >/usr/share/nginx/html/index.html
註意,切記一定要在兩臺 RS 上設置網關的 IP 為 director 的內網 IP。

LVS負載均衡之NAT模式