1.2 負載均衡:Linux Virtual Server之TUN、ldirectord

LVS其他集羣

    除了 NAT 和 DR 模式以外,還有兩種模式的 LVS 集羣:TUN 和 FULLNAT

    lvs-TUN

    不修改請求報文的IP首部(源IP爲CIP,目標IP爲VIP),而在原IP報文之外再封裝一個IP首部(源IP是DIP,目標IP是RIP),將報文發往挑選出的目標RS;RS直接響應給客戶端(源IP是VIP,目標IP是CIP)

(1) DIP, VIP, RIP都應該是公網地址
(2) RS的網關一般不能指向DIP
(3) 請求報文要經由Director,但響應不能經由Director
(4) 不支持端口映射

(5) RS的OS須支持隧道功能

    lvs-FULLNAT不瞭解,日後接觸到相關技術再補充。

FireWall Mark與持久連接

    FireWall Mark

    藉助於防火牆標記來分類報文,而後基於標記定義集羣服務;可將多個不同的應用使用同一個集羣服務進行調度。

    在 LVS 上設置 iptables 爲特定的報文標記標籤

[root@CentOS74 ~]# iptables -t mangle -A PREROUTING -d 10.0.0.74 -p tcp -m multiport --dport 80,443 -j MARK --set-mark 8000
[root@CentOS74 ~]# iptables -t mangle -vnL
Chain PREROUTING (policy ACCEPT 550 packets, 44502 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  172 10914 MARK       tcp  --  *      *       0.0.0.0/0            10.0.0.74            multiport dports 80,443 MARK set 0x1f40

將 iptables規則 記錄在 mangle 表上,是因爲 mangle 表爲修改數據表記位規則表。

    語法:iptables -t mangle -A PREROUTING -d lvs地址 -p tcp -m multiport --dport 端口號 -j MARK --set-mark 標記數

其中,標記數可爲 0xffff 格式,表示十六進制數字。

使用 -f 選項設置 ipvs 規則

[root@CentOS74 ~]# ipvsadm -A -f 8000 -s wlc
[root@CentOS74 ~]# ipvsadm -a -f 8000 -r 192.168.30.75 -g -w 3
[root@CentOS74 ~]# ipvsadm -a -f 8000 -r 192.168.30.174 -g -w 1
[root@CentOS74 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
FWM  8000 wlc
  -> 192.168.30.75:0              Route   3      0          0         
  -> 192.168.30.174:0             Route   1      0          0         

    持久連接

    持久連接( lvs persistence )模板:實現無論使用任何調度算法,在一段時間內(默認360s ),能夠實現將來自同一個地址的請求始終發往同一個RS。

    使用 ipvsadm 的 -p 選項設置集羣的超時時長

[root@CentOS74 ~]# ipvsadm -E -f 8000 -s rr -p 5
[root@CentOS74 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
FWM  8000 rr persistent 5
  -> 192.168.30.75:0              Route   3      0          0         
  -> 192.168.30.174:0             Route   1      0          0         

    持久連接實現方式:

每端口持久(PPC):每個端口對應定義爲一個集羣服務,每集羣服務單獨調度。
每防火牆標記持久(PFWMC):基於防火牆標記定義集羣服務;可實現將多個端口上的應用統一調度,即所謂的port Affinity。

每客戶端持久(PCC):基於0端口(表示所有服務)定義集羣服務,即將客戶端對所有應用的請求都調度至後端主機,必須定義爲持久模式。(危險)

ldirectord

    ldirectord:監控和控制LVS守護進程,可管理LVS規則。
    可以在 點擊打開鏈接 下載 ldirectord 的 rpm 包。
    ldirectord 的配置文件模板在 /usr/share/doc/ldirectord/ldirectord.cf 中,將模板複製到 /etc/ha.d/ 中作爲配置文件。
[root@CentOS74 ~]# cp /usr/share/doc/ldirectord/ldirectord.cf /etc/ha.d/
    修改配置文件
[root@CentOS74 ~]# cat /etc/ha.d/ldirectord.cf 
# Global Directives
checktimeout=3      #超時時長
checkinterval=1     #查詢間隔
#fallback=127.0.0.1:80
#fallback6=[::1]:80
autoreload=yes      #,當服務啓動時,保存配置文件後自動加載
logfile="/var/log/ldirectord.log"    #日誌文件路徑
logfile="local0"                     #日誌規則
#emailalert="[email protected]"
#emailalertfreq=3600
#emailalertstatus=all
quiescent=no                         #當RS宕機,yes會將該RS的權值修改爲0,no爲刪除RS記錄

virtual=10.0.0.74:80                    #VIP地址
	servicename=Web Site
	comment=Test load balanced web site
	real=192.168.30.174:80 gate 1   #RS地址,模式,權值
	real=192.168.30.75:80  gate 3
	fallback=127.0.0.1:80 gate      #宕機備份主機地址
	service=http                    #服務名
	scheduler=wrr                   #調度算法
	#persistent=600
	#netmask=255.255.255.255
	protocol=tcp                    #傳輸協議
	checktype=negotiate            
	checkport=80                    #查詢端口
	request="index.html"            #查詢文件
	receive="RS"                    #判斷關鍵字
    在啓動 ldirectord 服務後,ldirectord 會自動在 ipvs 規則中創建新的 ipvs 規則,無需再次使用 ipvsadm 命令創建 lvs 集羣規則。



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