一、RS健康監(jiān)測
1、 Director不可用,整個(gè)系統(tǒng)將不可用;SPoF
解決方案:高可用軟件
keepalived
heartbeat/corosync
2、某RS不可用時(shí),Director依然會調(diào)度請求至此RS;
解決方案:對各RS的健康狀態(tài)做檢查,失敗時(shí)禁用,成功時(shí)啟用;
Keepalived軟件:既能高可用又能對后端服務(wù)器健康監(jiān)測
Ldirectord軟件:只能對后端服務(wù)器健康監(jiān)測,并實(shí)施處理
檢測方式:
(a) 網(wǎng)絡(luò)層檢測;
(b) 傳輸層檢測,端口探測;
(c) 應(yīng)用層檢測,請求某關(guān)鍵資源;
二、Ldirectord軟件實(shí)現(xiàn)健康監(jiān)測
[root@vs-110 ~]# wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-6/x86_64/ldirectord-3.9.5-3.1.x86_64.rpm#下載idirectord安裝包
[root@vs-110 ~]# yum install ldirectord-3.9.5-3.1.x86_64.rpm -y#安裝
[root@vs-110 ~]# rpm -ql ldirectord
/etc/ha.d #主配置文件目錄
/etc/init.d/ldirectord #啟動腳本
[root@vs-110 ~]# cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/#拷貝到配置文件目錄下
[root@vs-110 ~]# cd /etc/ha.d
[root@vs-110 ha.d]# vim ldirectord.cf
# Global Directives #全局配置
checktimeout=3 #超時(shí)時(shí)長
checkinterval=1 #檢測時(shí)長
#fallback=127.0.0.1:80 #全部離線后,由那個(gè)主機(jī)響應(yīng)
#fallback6=[::1]:80 #全部離線后,由那個(gè)主機(jī)響應(yīng)ipv6地址
autoreload=yes
#logfile="/var/log/ldirectord.log" #日志文件目錄
#logfile="local0" #由rsyslog記錄
#emailalert="admin@x.y.z" #修復(fù)郵件地址
#emailalertfreq=3600 #通知修復(fù)郵件時(shí)間周期
#emailalertstatus=all#什么狀態(tài)郵件通知
quiescent=no#不要工作靜默模式
# Sample for an http virtual service
virtual=172.16.15.99:80 #一個(gè)集群
real=172.16.15.111:80 gate #后端rs地址端口
real=172.16.15.112:80 gate
fallback=127.0.0.1:80 gate #后端全部離線后,備用服務(wù)器
service=http #對應(yīng)協(xié)議
scheduler=rr
#persistent=600 #持久時(shí)間
#netmask=255.255.255.255 #指明那個(gè)掩碼
protocol=tcp
checktype=negotiate
checkport=80 #檢測端口
request="test.html" #請求那個(gè)主頁,這里我們指向測試頁
# receive="Test Page"
#virtualhost=www.x.y.z #指明那個(gè)虛擬主機(jī)
[root@vs-110 ha.d]# service ldirectord start #啟動ldirectord
Starting ldirectord (via systemctl): [ OK ]
[root@vs-110 ha.d]# ipvsadm -ln #查詢狀態(tài)
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.16.15.99:80 rr
-> 172.16.15.111:80 Route 1 0 0 #已檢測成功rs1
-> 172.16.15.112:80 Route 1 0 0 #已檢測成功rs2
將rs1和rs2的httpd服務(wù)關(guān)閉,則vs顯示:
[root@vs-110 ha.d]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.16.15.99:80 rr
-> 127.0.0.1:80 Route 1 0 0 #rs1和rs2全部離線后,由此臺主機(jī)響應(yīng)
三、基于防火墻標(biāo)記的健康監(jiān)測
[root@vs-110 ~]# cd /etc/ha.d
[root@vs-110 ha.d]# vim ldirectord.cf
virtual=3 #防火墻標(biāo)記為3
real=172.16.15.111 gate
real=172.16.15.112 gate
# real=192.168.6.6 gate
fallback=127.0.0.1:80 gate
service=http
scheduler=rr
# #persistent=600
# #netmask=255.255.255.255
protocol=fwm
checktype=negotiate
checkport=80
request="test.html"
# receive="Test Page"
# virtualhost=x.y.z
[root@vs-110 ha.d]# iptables -t mangle -A PREROUTING -d 172.16.15.99 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 3 #防火墻標(biāo)記
[root@vs-110 ha.d]# service ldirectord start #啟動
Starting ldirectord (via systemctl): [ OK ]
[root@vs-110 ha.d]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
FWM 3 rr #防火墻標(biāo)記
-> 172.16.15.111:0 Route 1 0 0 #已檢測成功rs1
-> 172.16.15.112:0 Route 1 0 0 #已檢測成功rs2