lvs負載均衡NAT和DR原理及配置

DR 工作模式 (centos 7.6)

1、LVS DR 模式介紹
Virtual Server via Direct Routing(VS-DR):用直接路由技術實現虛擬服務器。當參與集羣的計算機和作爲控制管理的計算機在同一個網段時可以用此方法,控制管理的計算機接收到請求包時直接送到參與集羣的節點。直接路由模式比較特別,很難說和什麼方面相似,前種模式基本上都是工作在網絡層上(三層),而直接路由模式則應該是工作在數據鏈路層上(二層)。
2、LVS DR 模式工作原理
DR和REAL SERVER都使用同一個IP對外服務。但只有DR對ARP請求進行響應,所有REAL SERVER對本身這個IP的ARP請求保持靜默。也就是說,網關會把對這個服務IP的請求全部定向給DR,而DR收到數據包後根據調度算法,找出對應的 REAL SERVER,把目的MAC地址改爲REAL SERVER的MAC併發給這臺REAL SERVER。這時REAL SERVER收到這個數據包,則等於直接從客戶端收到這個數據包無異,處理後直接返回給客戶端。由於DR要對二層包頭進行改換,所以DR和REAL SERVER之間必須在一個廣播域,也可以簡單的理解爲在同一臺交換機上
3、LVS DR 模式工作流程
(a) 當用戶請求到達Director Server,此時請求的數據報文會先到內核空間的PREROUTING鏈。 此時報文的源IP爲CIP,目標IP爲VIP
(b) PREROUTING檢查發現數據包的目標IP是本機,將數據包送至INPUT鏈
© 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) 響應報文最終送達至客戶端
4、LVS DR 模式特點
① 保證前端路由將目標地址爲VIP報文統統發給Director Server,而不是RS
② RS可以使用私有地址;也可以是公網地址,如果使用公網地址,此時可以通過互聯網對RIP進行直接訪問
③ RS跟Director Server必須在同一個物理網絡中
④ 所有的請求報文經由Director Server,但響應報文必須不能進過Director Server
⑤ 不支持地址轉換,也不支持端口映射
⑥ RS可以是大多數常見的操作系統
⑦ RS的網關絕不允許指向DIP(因爲我們不允許他經過director)
⑧ RS上的lo接口配置VIP的IP地址
5、LVS DR 模式工作流程圖解
在這裏插入圖片描述
在這裏插入圖片描述

LVS/DR 配置要求

1.KVM網絡使用NAT模式
2.DR模式要求Director DIP 和 所有RealServer RIP必須在同一個網段及廣播域
3.所有節點網關均指定真實網關
注:調度器和RealServer必須在同一個LAN, LAN可以使用公網IP,也可以使用private IP
公網IP: 前端路由器工作爲路由模式
私網IP: 前端路由器工作爲NAT,並將某個公網IP映射到VIP(private)

1、Client: 10.3.131.200 (客戶端ip)
Director: VIP:10.3.131.100 DIP:10.3.131.207 (分發器lvs)
Real Server: RIP: 10.3.131.208 VIP:10.3.131.100
RIP: 10.3.131.209
RIP: 10.3.131.210
實驗前初始化環境如: iptables,hosts,firewalld, SELINUX,ntp,yum 等
2、RS配置

yum -y install nginx
ip addr add dev lo 10.3.131.100/32  (在lo接口綁定VIP)
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore  (當arp請求時,這個ip不是通信網卡時就不接收請求)
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce (在返回數據的時候,以最精準的ip返回 子網掩碼越長月精確)
echo "208" > /usr/share/nginx/html/index.html
echo "209" > /usr/share/nginx/html/index.html
echo "210" > /usr/share/nginx/html/index.html (方便測試數據)

3、Director 分發器配置
配置VIP

ip addr add dev ens33 10.3.131.100/32 (配置VIP)
yum -y install ipvsadm
ipvsadm -C (clear清空之前所有規則)
ipvsadm -A -t 10.3.131.100:80 -s rr   (-A 在服務器中添加一條新的虛擬服務器記錄 -t tcp服務 -s 使用的調度算法 rr 輪詢 wrr 加權輪詢 lc最少連接 wlc 加權最少連接 默認爲wlc 等等)
ipvsadm -a -t 10.3.131.100:80 -r  10.3.131.208 -g (-r添加一條真實的服務器地址 -g 直接路由器模式 爲DR 也是LVS默認模式)
ipvsadm -a -t 10.3.131.100:80 -r 10.3.131.209 -g
ipvsadm -a -t 10.3.131.100:80 -r 10.3.131.210 -g
ipvsadm-save (保持規則)
ipvsadm -Ln (查看規則 -L list 顯示內核虛擬服務器表 -n numeric 以數字形式輸出地址和端口號)
curl http://10.3.131.100 (測試lvs dr 是否成功)
ipvsadm -Ln --stats (統計信息)

NAT 工作模式 (centos 7.6)

1、 LVS NAT 模式介紹
Virtual Server via NAT(VS-NAT):用地址翻譯實現虛擬服務器。地址轉換器有能被外界訪問到的合法IP地址,它修改來自專有網絡的流出包的地址。外界看起來包是來自地址轉換器本身,當外界包送到轉換器時,它能判斷出應該將包送到內部網的哪個節點。優點是節省IP 地址,能對內部進行僞裝;缺點是效率低,因爲返回給請求方的流量經過轉換器。
2、LVS NAT 模式工作流程
a). 當用戶請求到達Director Server,此時請求的數據報文會先到內核空間的 PREROUTING鏈。 此時報文的源IP爲CIP,目標IP爲VIP
(b). PREROUTING檢查發現數據包的目標IP是本機,將數據包送至INPUT鏈
©. 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 把RS來到響應包,通過FORWORD 轉發給client 在響應客戶端前,此時會將源IP地址修改爲自己的VIP地址,然後響應給客戶端。 此時報文的源IP爲VIP,目標IP爲CIP
3、LVS NAT 模式圖解在這裏插入圖片描述
在這裏插入圖片描述

LVS NAT 配置要求

  1. 虛擬機網絡使用NAT模式
  2. client、調度器、Real Server都使用虛擬機或使用真實服務器
  3. 虛擬機上網卡使用半虛擬化驅動,如果半虛擬化驅動異常,可以使用default/rtl8139
    Client: 10.3.131.10
    Director: VIP:10.3.131.213 DIP:192.168.232.153
    Real Server: RIP: 192.168.232.99
    RIP: 192.168.232.100

2、RS配置

yum -y install nginx
route add default gw 192.168.232.153   (默認網關指向DIP 回CIP的包先經過網關153--lvs 返回)
systemctl start nginx
 echo "192.168.232.99" > /usr/share/nginx/html/index.html
  echo "192.168.232.100" > /usr/share/nginx/html/index.html

3、Director分發器配置
配置兩張網卡 192.168.232.153 (內網提供RS路由轉發) 10.3.131.213(公網提供訪問)

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1   (內部開啓轉發)保存
sysctl -p
yum -y install ipvsadm
ipvsadm -C
ipvsadm -A -t 10.3.131.213:80 -s rr
ipvsadm -a -t 10.3.131.213:80 -r 192.168.232.99 -m  (-m  nat 模式)
ipvsadm -a -t 10.3.131.213:80 -r 192.168.232.100 -m
[root@lvs_dr_213 ~]# ipvsadm-save
-A -t lvs_dr_213:http -s rr
-a -t lvs_dr_213:http -r 192.168.232.99:http -m -w 1
-a -t lvs_dr_213:http -r 192.168.232.100:http -m -w 1
[root@lvs_dr_213 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.3.131.213:80 rr
  -> 192.168.232.99:80            Masq    1      0          0         
  -> 192.168.232.100:80           Masq    1      0          0 
  通過ab命令進行壓力測試
  ab -c 1000 -n 1000 http://10.3.131.213 (-c 請求的數量 -n 併發的數量)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章