負載均衡器的原理及ipvsadm實現LVS/NAT模型

負載均衡:

  是建立在現有的網絡之上,它提供了一種廉價、有效、透明的方法來擴大網絡設備和服務器的帶寬、增加吞吐量、加強網絡數據處理能力,以及提高網絡的靈活性和可用性。通過負載均衡器,可以實現N臺廉價的Linux服務器並行處理,從面達到小型機或大型機的計算能力。單臺負載均衡器位於網站的最前端,它起着分流客戶請求的作用,相當於整個網站或系統的入口。由於IPv4中IP地址日益緊張以及出於安全方面的才慮,很多網絡使用保留IP地址(如10.0.0.0/255.0.0.0、172.16.0.0/255.128.0.0、和192.168.0.0/255.255.0.0).這些不在Internet上使用,而是專門爲內部網絡預留的。當內部網絡中的主機要訪問Internet或被Internet訪問時,就需要進行網絡地址轉換(Network Address Translation,NAT),NAT方法就是交不同IP地址的並行網絡服務變成一個在同一IP地址上的虛擬服務。

以LVS作爲負載均衡器:

    LVS(Linux Virtual Server)主要是針對大業務量的網絡應用。

LVS類型:

     NAT-->(DNAT)

     DR

     TUN

     FULLNAT

 VS/NAT的體系結構比較簡單:在一組服務器前有一個調度器,它們是通過Switch/HUB相連接的,這些服務器提供相同的網絡服務、相同的服務內容,即不管請求被髮送到哪一臺服務器,執行結果都是一樣的。服務的內容可以複製到每一臺服務器的本地硬盤上,可能通過網絡文件系統共享,也可以通過一個分佈式文件系統來提供。

LVS NAT的特性:

1、RS應該使用私有地址;

2、RS的網關的必須指向DIP;

3、RIP和DIP必須在同一網段內;

4、請求和響應的報文都得經過Director;在高負載場景中,Director很可能成爲系統性能瓶頸;

5、支持端口映射;

6、RS可以使用任意支持集羣服務的OS;

   VS/DR或VS/TUN應用的一種模型中(所有機器都在同一個物理網絡),所有機器(包括Director和RealServer)都使用了一個額外的IP地址,即VIP。當一個客戶端向VIP發出一個連接請求時,此請求必須要連接至Director的VIP,而不能是RealServer的。因爲,LVS的主要目標就是要Director負責調度這些連接請求至RealServer的。

因此,在Client發出至VIP的連接請求後,只能由Director將其MAC地址響應給客戶端(也可能是直接與Director連接的路由設備),而Director則會相應的更新其ipvsadm table以追蹤此連接,而後將其轉發至後端的RealServer之一。

  如果Client在請求建立至VIP的連接時由某RealServer響應了其請求,則Client會在其MAC table中建立起一個VIP至RealServer的對就關係,並以至進行後面的通信。此時,在Client看來只有一個RealServer而無法意識到其它服務器的存在。

爲了解決此問題,可以通過在路由器上設置其轉發規則來實現。當然,如果沒有權限訪問路由器並做出相應的設置,則只能通過傳統的本地方式來解決此問題了。這些方法包括:

1、禁止RealServer響應對VIP的ARP請求;

2、在RealServer上隱藏VIP,以使得它們無法獲知網絡上的ARP請求;

3、基於“透明代理(Transparent Proxy)”或者“fwmark (firewall mark)”;

4、禁止ARP請求發往RealServers;


LVS DR類型的特性:

1、RS可以使用私有地址;但也可以使用公網地址,此時可以直接通過互聯網連入RS以實現配置、監控等;

2、RS的網關一定不能指向DIP;

3、RS跟Dirctory要在同一物理網絡內(不能由路由器分隔);

4、請求報文經過Directory,但響應報文一定不經過Director

5、不支持端口映射;

6、RS可以使用大多數的操作系統;


LVS TUN類型:IP隧道

1、RIP、DIP、VIP都得是公網地址;

2、RS的網關不會指向也不可能指向DIP;

3、請求報文經過Directory,但響應報文一定不經過Director;

4、不支持端口映射;

5、RS的OS必須得支持隧道功能;


LVS Scheduling Method LVS的調度方法:
1.Fixed Scheduling Method  靜態調服方法
(1).RR     輪詢
(2).WRR    加權輪詢
(3).DH     目標地址hash
(4).SH     源地址hash
2.Dynamic Scheduling Method 動態調服方法
(1).LC     最少連接
(2).WLC    加權最少連接
(3).SED    最少期望延遲
(4).NQ     從不排隊調度方法
(5).LBLC   基於本地的最少連接
(6).LBLCR  帶複製的基於本地的最少連接
ipvsadm組件定義規則的格式:
1.定義集羣服務格式:
(1).添加集羣服務:
ipvsadm -A|E -t|u|f service-address [-s scheduler]
              [-p [timeout]] [-M netmask]
-A:                  表示添加一個新的集羣服務
-E:                  編輯一個集羣服務
-t:                  表示tcp協議
-u:                  表示udp協議
-f:                  表示firewall-Mark,防火牆標記
service-address:     集羣服務的IP地址,即VIP
-s                    指定調度算法
-p                    持久連接時長,如#ipvsadm -Lcn ,查看持久連接狀態
-M                    定義掩碼
ipvsadm -D -t|u|f service-address      刪除一個集羣服務
ipvsadm -C                             清空所有的規則
ipvsadm -R                             重新載入規則
ipvsadm -S [-n]                        保存規則
2.向集羣服務添加RealServer規則:
(1).添加RealServer規則
ipvsadm -a|e -t|u|f service-address -r server-address
              [-g|i|m] [-w weight]
-a                 添加一個新的realserver規則
-e                 編輯realserver規則
-t                 tcp協議
-u                 udp協議
-f                 firewall-Mark,防火牆標記
service-address    realserver的IP地址
-g                 表示定義爲LVS-DR模型
-i                 表示定義爲LVS-TUN模型
-m                 表示定義爲LVS-NAT模型
-w                 定義權重,後面跟具體的權值
ipvsadm -d -t|u|f service-address -r server-address          --刪除一個realserver
ipvsadm -L|l [options]                                       --查看定義的規則
如:#ipvsadm -L -n  
ipvsadm -Z [-t|u|f service-address]                          --清空計數器
LVS-NAT模型實例

1。先配置好網絡環境,要三個虛擬機(本次實驗在虛擬機上完成),一臺用作Director,其他兩臺分別爲RealServer1 RealServer2

其中Director要兩個網卡,Eth0網卡爲橋接(Birdged),Eth1網卡爲僅主機(Host-only),RealServer1 RealServer2的網卡也都是僅主機

類型的。

2.爲了演示效果,將Director的兩塊網卡配置成不在同一個網段的IP地址,RealServer1 RealServer2IP地址爲同一網段,規劃如下圖:

wKioL1NR-aXwptXJAADZHxw6l4U828.jpg

3.爲192.168.10.11和192.168.10.12配置web服務

先查看是否安裝了web服務

[root@node1 ~]# rpm -q httpd

httpd-2.2.15-29.el6.centos.x86_64

如果沒有安裝則使用yum install httpd安裝即可

RealServer1配置網站頁面並啓動服務

虛擬機1網卡地址設置

ifconfig eth0 192.168.10.11

route add default gw 192.168.10.1

[root@node2 ~]# vim /var/www/html/index.html

<h1>Web1</h1>

[root@node2 ~]# service httpd start

RealServer2配置網站頁面並啓動服務

虛擬機2網卡地址設置

ifconfig eth0 192.168.10.12

route add default gw 192.168.10.1

[root@node3 ~]# vim /var/www/html/index.html

<h1>Web2</h1>

[root@node3 ~]# service httpd start

4.Director虛擬主機上配置

打開路由間轉發功能

wKioL1NR_NOTDMywAAFHxLOWtTU232.jpg

wKioL1NR_XCxJDcSAAHyBVrZmYc221.jpg

--查看ipvsadm是否安裝,如果沒有安裝則安裝之,直接使用yum安裝即可

wKiom1NR_pKCzmtMAAOKcYxZZzU701.jpg

 

配置Directory網卡,添加一塊網卡eth1

配置地址ifconfig eth1 192.168.10.1

[root@node1 ~]# ifconfig eth0:0 172.16.24.6《=========定義VIP地址

定義LVS-NAT模型規則

wKiom1NSAVrjxFsCAAOefwK5ab8224.jpg









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章