LVS負載均衡器NAT和DR工做模式詳解

 在試驗以前爲了更好理解設置的參數,因此先講解一下命令。html

 1、lvs配置文件和命令:web

  程序包:ipvsadm(LVS管理工具)算法

  配置文件:/etc/sysconfig/ipvsadm-config 【rpm -ql ipvsadm  查詢包的具體列表】vim

  -A  在服務器列表中新添加一條新的虛擬服務器記錄後端

  -t 表示爲tcp服務centos

  -u 表示爲udp服務服務器

  -s 使用的調度算法  (rr|wrr|wlc|lc|dh|sh|lblb|lblcr網絡

  -a 在服務器裏添加一條新的真是主機記錄負載均衡

  -m 說明lvs提供nat工做模式tcp

  -g 說明lvs提供直接路由器模式(也是lvs默認的工做模式)

  -i 指定lvs工做模式爲隧道模式

  -m 真實服務器的權值

  -E 編輯內核虛擬服務器表中的一條虛擬服務器記錄

  -D  刪除內核虛擬服務器列表中的一條虛擬服務器記錄

  -C 清楚內核虛擬服務器中的全部記錄

  -R 恢復虛擬服務器全部規則

  -e 編輯虛擬服務器記錄中一條真實服務器記錄

  -d  刪除虛擬服務器記錄中的某條真實服務器記錄

  -L 顯示內核服務器列表

  -n 以數字方式顯示地址和端口號

  --stats  統計信息

  -Z 虛擬服務器記錄器清零

  -S –save 保存虛擬服務器規則,輸出爲-R 選項可讀的格式

 2、lvs負載均衡調度算法:

 (1)靜態

  ①RR 輪叫調度     【一個接着一個來,平均分配】

  ②WRR:加權輪叫 【負載能力較大者分配的更多】

  ③DH:目標地址散列調度   【據請求的目標IP地址,做爲散列鍵(HashKey)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,不然返回空。】

  ④SH:源地址hash   源【地址散列」調度算法根據請求的源IP地址,做爲散列鍵(HashKey)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,不然返回空】

  (2)動態:

  ①LC:最少連接 【經過用戶請求數和服務器承載的數量,把多餘請求數發送到最少的一臺服務器上】

  ②WLC:加權最少鏈接 【給服務器不忙的派發任務,同時性能較好的服務器也能勞動更多】

  ③SED:最短延遲調度  【在WLC基礎上改進,Overhead = (ACTIVE+1)*256/加權,再也不考慮非活動狀態,把當前處於活動狀態的數目+1來實現,數目最小的,接受下次請求,+1的目的是爲了考慮加權的時候,非活動鏈接過多缺陷:當權限過大的時候,會倒置空閒服務器一直處於無鏈接狀態。】

  ④NQ:永不排隊,最小列隊調度。 【需隊列。若是有臺 realserver的鏈接數=0就直接分配過去,不須要再進行sed運算,保證不會有一個主機很空間。在SED基礎上不管+幾,第二次必定給下一個,保證不會有一個主機不會很空閒着,不考慮非活動鏈接,才用NQ,SED要考慮活動狀態鏈接,對於DNS的UDP不須要考慮非活動鏈接,而httpd的處於保持狀態的服務就須要考慮非活動鏈接給服務器的壓力。】

  3、LVS負載均衡器NAT工做模式。

  大概網絡拓撲圖:

  c0d531c48f77c52afa779946faa08bb6.png

  詳細說明:

  CIP:指客戶端IP

  VIP:指負載均衡服務器的虛擬IP

  DIP:指負載均衡服務器的真實IP

  RS:指後端服務器

  RIP:指後端服務器IP

  LVS:負載均衡服務器

  ①當用戶請求到達LVS,此時請求的數據報文會先到達內核空間的PREROUTING鏈,此刻報文源IP爲CIP,目標IP爲VIP。

  ②當PREROUTING鏈檢查數據包是訪問本身的,就將數據包發送到INPUT鏈。

  ③LVS由用戶空間的ipvsadm和內核空間的IPVS組成,ipvsadm用來定義規則,IPVS利用ipvsadm定義的規則工做,IPVS工做在INPUT鏈上,當數據包到達INPUT鏈時,首先會被IPVS檢查,若是數據包裏面的目的地址及端口沒有在規則裏面,那麼這條數據包將被放行至用戶空間,若是在就修改數據包的目標IP地址爲後端服務器IP,而後將數據包發送至POSTROUTING鏈。此刻源IP爲CIP,目標地址爲RIP

 ④POSTROUTING鏈經過選路,將數據包發送到後端服務器(RS),後端服務器(RS)對比發現目標是發本身的IP,開始構建響應報文發回給LVS,此刻報文的源地址爲RIP,目標地址爲CIP。

 ⑤LVS在響應客戶端錢,此刻會把源地址修改成本身的VIP地址,而後響應給客戶端。此刻報文的源IP爲VIP,目標地址爲CIP。

 具體步驟:

  三臺主機,一臺爲LVS服務器,兩外兩臺爲RS服務器。

  centos7.4爲LVS服務器,172.17.66.88爲虛擬IP(VIP),192.168.11.11爲真實IP(DIP)。

  centos7和centos7-2爲後臺服務器(RS),兩個網段分別爲192.168.88.88和192.168.23.23(確保此地址和RS服務器能通)。

  ①裝包。

  命令:yum install ipvsadm

  ②負載就均衡服務器上配置

  命令:ipvsadm -A -t 172.17.66.88:80 -s wrr 【在負載均衡服務器上開一個爲80端口的虛擬記錄,並使用wrr調度方式】

  命令:ipvsadm -a -t 172.17.66.88:80 -t 192.168.88.88 -m -w 1 【配置web服務器後端RIP爲NAT工做方式,權重爲1】

  命令:ipvsadm -a -t 172.17.66.88:80 -t 192.168.23.23 -m -w 1 【配置web服務器後端RIP爲NAT工做方式,權重爲1】

  e9445cd55faf4057cb1aacf8ce570469.png

  ③開啓LVS的轉發功能

  echo 1 > /proc/sys/net/ipv4/ip_forward 【臨時開啓轉發功能】

  vim /sysctl.conf

  添加net.ipv4.ip_forward=1 sysctl -p    【永久生效】

  9a9be1918ba4c75b5a393a2c47e794dd.png

  ④添加RS到LVS的默認路由。

  命令:route add default gw 192.168.11.11

  cde84ad36c050e6e672044b746277b15.png

  ⑤測試。

  在後端兩個服務器(RS)寫兩個測試頁面index.html

  e81ff00fd93a1b5e9e19f9c73f3ee668.png

  以上就實現了負載均衡,因爲使用的wrr調度以及權重都是1,因此每次訪問都是輪流。

  注意:作該實驗把RS橋接斷掉,否則影響添加的默認路由器工做。

  4、基於LVS實現DR工做模式。

  這種模式是解決基於NAT模式的弊端,由於NAT模式發送的數據進出都通過LVS服務器,會對LVS形成太大壓力。

  大概網絡拓撲圖:

  b0b22668b4fc7e27a9d5b59aca799d58.png

  詳細說明:

  ①當客戶端發送請求到LVS,此時的請求報文會先到內核的PREROUTING鏈。此刻的源IP爲CIP,目標IP 爲VIP。

  ②PREROUTING鏈檢查數據包是訪問本身的,就發送到INPUT鏈。

  ③IPVS對比數據包請求的服務是否在定義的規則裏,若是是就將報文中的源MAC地址修改成DIP的MAC地址,將目標MAC地址修改成RIP的MAC地址,而後將數據包發送到POSTROUTING鏈。此刻的源IP和目標IP都未發送改變,只是修改了源MAC爲DIP的MAC,目標MAC爲RID的MAC地址。

  ④因爲DS和RS在同一段網段,因此工做在二層。POSTROUTING檢查目標地址爲RIS的MAC地址,就將數據包發送到RS。

  ⑤RS查看MAC地址爲本身的MAC地址,就接下包。處理完成後,將響應報文經過lo接口傳送到eth0網卡後發出。此時的源地址爲VIP,目標地址爲CIP,由此完成了數據的傳輸。

  具體步驟:

  三臺服務器在同一個網段,一個爲lvs服務器【虛擬IP(別名):172.17.252.251;真實IP(DIP):172.17.66.88】,後臺服務器1(RIP):172.17.110.111,後臺服務器2(RIP)172.17.33.34

  ①因爲都在一個網段,多以在LVS配置一個網卡別名。【並只廣播本身】

  1a1ffa0c705a9bae959d26b1cd62155a.png  ②配置LVS的虛擬IP(VIP)和真實IP(DIP)。

  77dad483c5f145ddd81740a0e4b35fc3.png

  ③在後臺服務器(RS)上配置VIP並只廣播本身。

  8d2b7979414b46f76a7301e8e07833b2.png  ④設置RIP到本地VIP上的路由記錄,即本地迴旋網卡路由。

  cb260f9e441457cdd10c30d95255cd21.png

  ⑤配置只回答目標IP地址是來訪網絡接口本地地址的ARP查詢請求以及在此模式下將忽略這個IP數據包的源地址並嘗試選擇與能與該地址通訊的本地地址.

  ecde329be835216b29bea58227f71c21.png

  ⑥RS2服務器上設置和RS1同樣的配置

   b96001012f10f8aa0d941b581739f8df.png  ⑦測試。

 a5d4a37871890544a407c610d96b8fd1.png

相關文章
相關標籤/搜索