LVS簡介
支持IPVS的集羣負載均衡器和集羣節點一塊兒稱爲Linux Virtual Server
LVS基本原理
LVS集羣負載平衡器接受服務的全部入站客戶端計算機請求, 集羣並決定哪一個集羣節點應該回復給請求。負載平衡器有時被稱 爲LVS Director或者簡稱之爲Director。 LVS集羣內部的節點稱爲真實服務器(Real Server),也叫作集羣節點。連接到集羣請求集羣服務的計算機稱爲客戶端計算機。與計算機一般在網上交換數據包的方式相同,客戶端計算機、Director和真實服務器使用IP地址進行彼此通訊。
集羣定義
是一種並行或分佈式系統,該系統:包括一個互連的總體計算機集合,做爲一種單1、統一的計算資源使用。
集羣計算機按功能和結構能夠分紅如下幾類:
高可用性集羣 High-availability (HA) clusters
負載均衡集羣 Load balancing clusters
高性能計算集羣 High-performance (HPC) clusters
網格計算 Grid computing
LVS調度算法
動態調度方法
lc:最小鏈接,誰的小,挑誰
wlc:加權最小鏈接
sed:最短時間望延遲
LBLC:基於本地的最少鏈接
LBLCR:基於本地的帶複製功能的鏈接
四種靜態
rr:輪叫,輪詢
wrr:Weight,加權
sh:source hash,源地址hash ,源地址散列調度
dh:目標地址散列調度
NAT: 地址轉換
集羣節點跟director必須在同一個IP網絡中
RIP一般是私有地址,僅用於各個集羣節點間的通訊
director位於client和 real server 之間,並負責處理進出的全部通訊
realserver 必須將網關指向DIP
支持端口映射
realserver可使用任意OS
較大規模應用場景中,director易成爲系統瓶頸
規劃:
Client
|
Director
|
Real Server 1
|
Real Server 2
|
|
IP
|
172.16.0.345
|
eth0:172.16.86.1
eth1:192.168.86.1
|
eth0:192.168.86.3
|
eth0:192.168.86.4
|
通訊模型圖:
客戶端的請求經路由到達Director,Director再轉發到Real Server中的任意一個,Real Server迴應的報文再通過網關經過路由到達客戶端。
下面咱們就用 HTTP服務爲例子來說解一下LVS-NAT 的實現吧。前端服務器配置VIP向外響應來自客戶端的請求,後端兩臺Real Server運行web服務,應該在後端兩臺web上配置相同的網頁,可是這裏爲了便於觀察效果咱們將兩個網頁內容配置的稍微有點差異,設置網關都指向192.168.86.1
實驗步驟:
1、爲Director、Real Server配置IP地址
RS1:
RS2:
Director以一樣的方法配置其IP地址,其中內網的網卡類型也要設置成Host-only使其能與內網完成通訊
2、爲Real Server 安裝web服務並配置網頁
Real Server 1:
[root@server39 ~]# yum install httpd -y
[root@server39 ~]# echo RS2.magedu.com > /var/www/html/index.html #提供網頁內容
[root@server39 ~]#service httpd start
[root@server39 ~]#curl http://localhost##測試網頁
[root@server39 ~]#RS1.magedu.com
Real Server 2:
[root@server39 ~]# yum install httpd -y
[root@server39 ~]# echo RS2.magedu.com > /var/www/html/index.html #提供網頁內容
[root@server39 ~]#service httpd start
[root@server39 ~]#curl http://localhost##測試網頁
[root@server39 ~]#RS2.magedu.com
3、Director的相關配置
先介紹一下命令的應用:
ipvsadm:
管理集羣服務
添加:-A -t|u|f service-address [-s scheduler]
-t:TCP協議的集羣
-u:UDP協議的集羣
service-address: IP:PORT
-f:FWM:防火牆標誌
service-address: Mark Number
修改:-E
刪除:-D -t|u|f service-address
# ipvsadm -A -t 172.16.86.1:80 -s rr
管理集羣服務中的RS
添加:-a -t|u|f service-address -r service-address [-g|i|m] [-w weight]
-t|u|f service-address :事先定義好的嗎,某集羣服務器
-r service-address:某RS的地址,在NAT模型中,可以使用IP:PORP實現端口映射
[-g|i|m]:LVS類型
-g:DR
-i:TUN
-m:NAT
[-w weight]:定義服務器權重
修改:-e
刪除:-d -t|u|f service-address -r service-address
#ipvsadm -a -t 172.16.100.1:80 -r 192.168.10.8 -m
#ipvsadm -a -t 172.16.100.1:80 -r 192.168.10.9 -m
查看:
-L|-l
-n:數字格式顯示主機地址和端口
--stats:統計數據
--rate:速率
--timeout:顯示tcp、tcpfin和udp的回話超時時長
-c:顯示當前的ipvs鏈接情況
刪除全部集羣服務
-C:清空ipvs規則
保存規則:
-S
#ipvsadm -S > /path/to/somefile
載入此前規則
-R
#ipvsadm -R < /path/to/somefile
安裝ipvsadm並配置命令:
[root@localhost ~]# yum install ipvsadm
[root@localhost ~]# service ipvsadm start
ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm: [ OK ]
ipvsadm: Clearing the current IPVS table: [ OK ]
ipvsadm: Applying IPVS configuration: [ OK ]
[root@localhost ~]# ipvsadm -A -t 172.16.86.1:80 -s rr
[root@localhost ~]# ipvsadm -a -t 172.16.86.1:80 -r 192.168.86.3 -m ###-m表示爲NAT模型
[root@localhost ~]# ipvsadm -a -t 172.16.86.1:80 -r 192.168.86.4 -m
[root@localhost ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.16.86.1:80 rr
-> 192.168.86.4:80 Masq 1 0 0
-> 192.168.86.3:80 Masq 1 0 0
[root@localhost ~]# ipvsadm -S > /etc/sysconfig/ipvsadm ##保存配置信息
[root@localhost ~]# cat /etc/sysconfig/ipvsadm
-A -t 172.16.86.1:http -s rr
-a -t 172.16.86.1:http -r 192.168.86.4:http -m -w 1
-a -t 172.16.86.1:http -r 192.168.86.3:http -m -w 1
[root@localhost ~]#echo 1 > /proc/sys/net/ipv4/ip_forward ##打開路由轉發功能
測試網頁:
刷新網頁:
DR: 直接路由
集羣節點跟director必須同一個物理網絡中
RIP可使用公網地址,實現便捷遠程管理和控制
director僅負責入站請求,響應報文則有real server直接發往客戶端
real server 不能將網關指向DIP
不支持端口映射
規劃:
Client
|
Director
|
Real Server 1
|
Real Server 2
|
|
IP
|
172.16.0.345
|
eth0,dip: 172.16.86.2
eth0:0,vip:172.16.86.1
|
eth0,rip:172.16.86.3
lo:0,vip:172.16.86.1
|
eth0,rip:172.16.86.4
Lo:0,vip172.16.86.1
|
通訊模型圖:
客戶機發出請求通過路由和交換機到達Director,Director而後再轉發到Real Server中的任意一個,Real Server再負責響應報文通過交換機和路由器到達客戶機。客戶端的請求報文到達Director的vip上而後再轉發到Real Server上,再由Real Server以vip做爲源地址迴應客戶端請求,因此每一個Real Server上都要配置vip,並配置特定的路由條目便可。Real Server上的vip對外是不可見的,因此在接收客戶端的APR請求時是不與相應的。
實驗步驟:
1、RS1和RS2的配置。
RS1和RS2的配置是相同的。下面就介紹RS1一個的配置吧。IP地址的配置和上面的NAT的配置同樣,下面就該配置對ARP響應和向外通告的級了,首先介紹一下它的級別:
arp_ignore:定義接收到ARP請求時的相應級別;
0:只要本地配置的有相應的地址,就給予相應;
1:僅在請求的目標地址配置請求到達的接口上的時候,給予相應
arp_announce:定義將本身地址向外通告時的通告級別
0:將本地任何接口上的任何地址向外通告
1:試圖僅向目標網絡通告與其網絡匹配的地址
2:僅向與本地接口上地址匹配的網絡進行通告
配置以下:
配置vip地址並添加特定路由信息,提供網頁內容(和NAT中的相同)
[root@localhost ~]ifconfig lo:0 172.16.86.1 broadcast 172.16.86.1 netmask 255.255.255.255 up
[root@localhost ~]route add -host 172.16.86.1 dev lo:0
2、配置Director
首先是IP地址的配置,IP地址的配置和上面的都是相同的只是地址不同而已,eth0:172.16.86.2、eth0:0:172.16.86.1,在這裏就不給出配置信息了。
配置ipvsadm規則命令:
[root@localhost ~]# ipvsadm -A -t 172.16.86.1:80 -s wlc
[root@localhost ~]# ipvsadm -a -t 172.16.86.1:80 -r 172.16.86.3 -g -w 2
[root@localhost ~]# ipvsadm -a -t 172.16.86.1:80 -r 172.16.86.4 -g -w 1
添加路由條目:
[root@localhost ~]# route add -host 172.16.86.1 dev eth0:0
測試網頁:
刷新:
訪問比例是1 :2,即訪問兩次RS1.magedu.com後才訪問一次RS2.magedu.com