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
[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 集羣規則。