LVS-NAT
是通過改變數據包中的目的IP地址,來實現調度的.
拓撲圖:
說明:
Director是調度服務器、Real N爲真實服務器(這裏用四臺).實驗用vmware虛擬機和小凡模擬器來完成,爲了保證物理上確實是隔離開的,需要不同的vmnet網卡相連.
lClient與路由器之間用vmnet1連接;
l路由器與Director之間用vmnet2連接;
lDirector的eth1與Real N用vmnet5
所有服務器均爲:Centos6.5_X86_64 內核版本爲2.6.32-431.el6.x86_64
步驟:
一、Install software:
1.安裝ipvsadm(用戶空間工具)
配置好本地yum源,使用本地yum源來安裝此工具
[root@Director ~]# yum install -yipvsadm
二、配置各主機的IP
主機 | IP | 網關 |
Client | 172.16.41.2 | F0/0 |
Route | F0/0:172.16.41.1---vm1 F0/1:192.168.2.1---vm2 | |
Director | eth0:192.168.2.2(VIP)---vm2 eth1:192.168.3.1(DIP)---vm5 | F0/1 |
Real server 1 | eth0:192.168.3.10 | 192.168.3.1(DIP) |
Real server 2 | eth0:192.168.3.20 | 192.168.3.1(DIP) |
Real server 3 | eth0:192.168.3.30 | 192.168.3.1(DIP) |
Real server 4 | eth0:192.168.3.40 | 192.168.3.1(DIP) |
Real server N | eth0:192.168.3.N | 192.168.3.1(DIP) |
由於是用NAT方式做負載均衡,所以Realserver N 都要指向Director作爲網關.
三、配置Realserver N的主頁服務
給每臺Real server 服務器安裝好Web服務,並在每臺服務器的/var/www/html/下建立index.html文件,爲了看出效果,最好每臺服務器上的index.html文件不一樣,例如在Real server 1 上的index.html內容如下:
其他幾臺Real server 服務器的index.html內容,只需要把上面的紅色框的部分對應更改一下即可,然後開啓httpd服務.
四、配置Director
在Director上面也建立個apache服務,寫個與真實服務器不一樣的index.html,例如:
建立這個index.html的目的是爲驗證集羣效果.當沒有配置集羣時,看到的是Director上的index.html,如果配置了集羣,再訪問VIP,就能看到其他Real server服務器上的index.html.
1.開啓路由轉發:
[root@Director ~]# vim/etc/sysctl.conf
[root@Director ~]# sysctl -p
此步非常重要!!!
2.增加虛擬服務
[root@Director ~]# ipvsadm -A -t 192.168.2.2:80 -s rr
增加一個指向192.168.2.2:80 的tcp虛擬服務,用輪叫(rr)算法
3.增加真實服務器
ipvsadm -a -t192.168.2.2:80 -r 192.168.3.10 -m
ipvsadm -a -t192.168.2.2:80 -r 192.168.3.20 -m
ipvsadm -a -t 192.168.2.2:80-r 192.168.3.30 -m
ipvsadm -a -t192.168.2.2:80 -r 192.168.3.40 -m
以NAT的方式,增加指向各真實服務器條目.
五、測試
在Client上用瀏覽器打開http://192.168.2.2地址,這時能看到真實服務的主頁內容.反覆按F5刷新,能看到不同的真實服務器的內容.說明集羣已經建立成功.
我們也可以到Director服務器上,通過執行ipvsadm -L-n 來查看調度的狀態,如下:
可以看出,4臺Realserver,被調用的頻率是均等的,因爲用了rr算法.
並且用的是NAT方式實現調度.(Masq代表NAT方式)
六、wrr算法的應用
上面用的是輪叫(rr)算法,每個Realserver被調用的機會是均等的,假設Real server1和Realserver2的處理性能遠比Real server3和Real server4都強,用rr算法就不是很合理了.因爲rr算法不會考慮權重(Weight),也就是優先級,所以需要換成wrr(加權輪叫)算法,此算法會考慮管理員設置的權重,權重高的Realserver,會被優先選中,而被選中的頻率也會多一些.
由於是接着上面的實驗繼續研究,所以可以有2種方法:①刪除以前的內容重新開始②替換以前的內容.如果要刪除,可以用ipvsadm -C來清除所有配置,再按上面的步驟2、3做就可以了.下面採用替換的方法:
1.改變算法:
2.改變Real server1和Realserver2的權重高一些
權重值範圍從0-65535之間,默認值爲1,值越高,優先級就越高.如果值是0表示永遠不被選中(在處理真是服務器故障和維護時很有用),如果只是65535表示永遠只選中它.
改完後在Client 的瀏覽器裏按F5刷新,在director上可以看到Realserver1和Real server2被選中的頻率是其他Real server的5倍.倍值可以根據你工作的環境來合理設置.
注意:
當用rr算法時,即使設置了權重值,也不會起作用.只有用到wrr算法時,權重值纔會發揮作用.
可見ipvsadm -a 命令加入真實條目的先後順序,並不能決定Real server 的優先級,而是靠權重來決定的.
七、lc和wlc算法的應用
Lc是最少鏈接算法,此算法會檢查哪臺Realserver 的鏈接請求最少,就優先選擇它.所以當你的服務器硬件配置相同時,lc是個不錯的選擇,(個人感覺如果鏈接的起始數量一樣的時候,跟rr算法沒有區別)wlc是加權最少鏈接算法,此算法跟lc類似,只是增加了權重的考慮條件.能讓管理員在指定的Realserver中,優先應用最少鏈接算法.跟rr與wrr之間的關係是一種感覺.我們來實驗一下:
1.改變算法:
2.改變Realserver1和Real server 2的權重高一些
改完後在Client 的瀏覽器裏按F5刷新,在director上可以看到Realserver1和Real server2被選中的頻率是其他Real server的5倍.倍值可以根據你工作的環境來合理設置.(好像跟wrr的效果差不多-_-!)
注意:
Lvs默認的算法是wlc
當用lc算法時,即便設置了權重值,也不會起作用.只用用到wlc算法時,權重纔會發揮作用.
NAT方式小結:
原理比較好理解,配置相對簡單些
如果Real server 到5-10臺以上時,Director將會是瓶頸....