lvs-nat
1.按照上圖拓撲配置好網絡;
2.開啓director的轉發功能(# echo 1 > /proc/sys/net/ipv4/ip_forward ),並將test1,test2網關指向DIP 192.168.1.1;
3.進入test1,test2,開啓httpd服務;並分別給予創建主頁index.html讓其可以區分開test1 test2,
讓我們直觀的感受到調度器在工作;
4.進入director配置
安裝ipvsadm:
# yum intall -y ipvsadm
配置:
定義本機192.168.191.111的80端口爲集羣服務,調度算法爲輪詢rr
# ipvsadm -A -t 192.168.191.111:80 -s rr
定義192.168.1.100爲realserver,lvs類型爲lvs-nat
# ipvsadm -a -t 192.168.191.111:80 -r 192.168.1.100:80 -m
定義192.168.1.200爲realserver,lvs類型爲lvs-nat
# ipvsadm -a -t 192.168.191.111:80 -r 192.168.1.200:80 -m
5.到此爲止lvs-nat集羣服務就算定義好了;
測試:
回到物理機,打開瀏覽器,訪問http://192.168.191.111
刷新瀏覽器
6.測試成功,若要查看詳細調度過程,可抓包或查看realserver的web服務日誌;
抓包director可發現,客戶機192.168.191.6請求192.168.191.111的80服務,
也是director 192.168.191.111的80端口響應的客戶機192.168.191.6;
抓包RS,test2可發現,客戶機192.168.191.6請求的RS 192.168.1.200的http服務,
也是RS,test2的http服務響應的客戶機192.168.191.6,可以看出在響應數據包經過director的時候,被director修改了地址;
--------------
lvs-dr
1.首先在各主機eth0上配置IP地址;
2.在RS上設置內核參數,使得RS上的VIP不予響應arp廣播請求;
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
3.在RS上的lo:0接口上配置VIP地址;(固定廣播域和廣播地址只是自己IP)
# ifconfig lo:0 192.168.191.100 netmask 255.255.255.255 broadcast 192.168.191.100
4.指定RS主機上對VIP192.168.191.100的請求,都通過lo:0接口響應出去;
# route add -host 192.168.191.100 dev lo:0
5.在director上配置VIP以及集羣服務;
# ifconfig eth0:0 192.168.191.100 netmask 255.255.255.255 broadcast 192.168.191.100
# ipvsadm -A -t 192.168.191.100:80 -s rr
# ipvsadm -a -t 192.168.191.100:80 -r 192.168.191.112 -g
# ipvsadm -a -t 192.168.191.100:80 -r 192.168.191.113 -g
6.配置完成,客戶機測試(瀏覽器可能有緩存,建議再開一臺虛擬機使用curl命令測試);
FWM:firewall mark
大意:FWM就是根據防火牆標記做調度;依賴mangle鏈做防火牆標記;
方法:在ipvs生效之前的netfilter的某hook function上定義iptables規則,實現給報文打上防火牆標記;
還是使用上面的lvs-dr模型;現在將ipvsadm -A -t 改爲ipvsadm -A -f
步驟:
1.清空上面已經定義的ipvsadm條目;
# ipvsadm -C
2.在防火牆mangle鏈上打標(可以將多種服務打標爲一個標記,實現集羣捆綁調度);
# iptables -t mangle -A PREROUTING -d 192.168.191.100 -p tcp --dport 80 -j MARK --set-mark 10
3.定義ipvsadm規則;
# ipvsadm -A -f 10 -s rr
# ipvsadm -a -f 10 -r 192.168.191.112 -g
# ipvsadm -a -f 10 -r 192.168.191.113 -g
4.測試(另外開啓了一臺虛擬機,配置好IP,使用curl測試,結果如下);
lvs的persistence: lvs持久連接
大意:無論使用哪一種調度方法,都能保證在指定時間範圍之內,來自於同一個IP的請求將始終被定向至同個RS;
方法:ipvsadm -A -t|-u|-f service-address -s SCHEDULER [-p [#]] (增加-p選項,代表開啓持久連接;默認時長360秒)持久連接模板:
PPC:每端口持久;持久連接生效範圍僅爲單個集羣服務;如果有多個集羣服務,每服務被單獨持久調度;
PCC:每客戶端持久;持久連接生效範圍爲所有服務;定義集羣服務時,其TCP或UDP協議的目標端口要使用0;
PFWM:每FWM持久:持久連接生效範圍爲定義爲同一個FWM下的所有服務;
PPC例子:
ipvsadm -A -t 192.168.191.100:80 -s rr -p 600
代表將192.168.191.100的80服務做持久連接600秒,來自同一個IP的客戶端在600秒內訪問80服務,都被調度到同一個後端RS
PCC例子:
ipvsadm -A -t 192.168.191.100:0 -s rr -p
ipvsadm -a -t 192.168.191.100:0 -r 192.168.191.112 -g
ipvsadm -a -t 192.168.191.100:0 -r 192.168.191.112 -g
代表來自同一個IP的客戶端在訪問,192.168.191.100的所有服務(ssh telnet www等)的時候,都在360秒內被調度到同一個後端RS
PFWM例子:
代表來自同一個IP的客戶端在訪問,同一個防火牆標記的服務時候,被調度到同一個後端RS