LVS高可用實現
阿新 • • 發佈:2018-04-12
LVS-DR問題:LVS由於沒有健康行檢查功能,當後端RS出現問題的時候還是會調度到損壞的RS服務器上
解決:1 編寫腳本(編寫一個for循環腳本,VS服務器每過1s使用curl命令訪問一下後端的RS服務器,查看$?是否為0,不為0就使用ipvsadm -d刪除即可)
2 ldirectord:可以對後端RS實現健康性檢查
ldirectord實現:
在VS服務器上操作
1 下載 訪問ldirectord的官方站點: 在google瀏覽器輸入ldirectord訪問官方站download page --> The Linux-HA Download Software Page --> OBS Repositories --> 根據系統版本選擇 --> ldirectord-3.9.6-0rc1.1.2.x86_64.rpm 2 安裝 yum install ldirectord-3.9.6-0rc1.1.2.x86_64.rpm #使用yum方式安裝,因為依賴了太多perl包 3 rpm -ql ldirectord #查看此工具附帶的程序以及應用信息 /etc/ha.d /etc/ha.d/resource.d /etc/ha.d/resource.d/ldirectord /etc/logrotate.d/ldirectord /usr/lib/ocf/resource.d/heartbeat/ldirectord /usr/lib/systemd/system/ldirectord.service /usr/sbin/ldirectord /usr/share/doc/ldirectord-3.9.6 /usr/share/doc/ldirectord-3.9.6/COPYING /usr/share/doc/ldirectord-3.9.6/ldirectord.cf /usr/share/man/man8/ldirectord.8.gz 4 cp /usr/share/doc/ldirectord-3.9.6/ldirectord.cf /etc/ha.d #將ldirectord.cf文件復制到/etc/ha.d下,不用更改文件名,作為配置文件
5 vim /etc/ha.d/ldrectord.cf
checktimeout=3 #後端服務器的超時時間,默認為3s,如果後端RS超過3s沒有回應,則認為RS服務器出現問題 checkinterval=1 #探測間隔,每隔1s探測一次RS服務器; fallback=127.0.0.1:80 #如果後端RS全宕機的話,也不向客戶端返回錯誤信息,而是跳轉到指定IP地址的服務器上返回一個自定義的錯誤信息,此處為本機; autoreload=yes #當文件更改後會自動加載,無需重啟ldirectord服務 logfile="/var/log/ldirectord.log" #打開記錄日誌的功能,ldirectord的日誌會保存在指定位置 # Sample for an http virtual service virtual=10.0.0.100:80 #VIP地址以及端口號 real=192.168.27.144:80 gate 1 #RS1服務器地址以及端口號 gate:DR模式 1:權重 real=192.168.27.145:80 gate 3 #RS2服務器地址以及端口號 gate:DR模式 3:權重 service=http #服務的名稱 scheduler=wrr #指定算法類型,權重不同,所以使用wrr #persistent=600 #是否保持持久連接,默認被註釋 #netmask=255.255.255.255 #子網掩碼,不用管,默認被註釋 protocol=tcp #使用的協議類型 checktype=negotiate #檢查後端RS的80端口以及網頁文件 checkport=80 #被檢查的端口 request="test.html" #被檢查的頁面文件
在RS服務器分別操作
echo "test" > /var/www/html/test.html #在RS服務器上創建名為test.html的文件並且內容為test; receive="test" #查看頁面文件中是否存在這個字符串 #virtualhost=www.x.y.z #把這行註釋,不用加
6 啟動
systemctl start ldirectord #啟動此項服務,啟動後會自動添加ipvsadm策略
7 驗證
1 在RS1服務器上更改test.html的文件內容;
echo 123 > /var/www/html/test.html
2 在VS服務器上查看策略;
ipvsadm -ln #此時就會減少一臺RS服務器,如果都以同樣的方式更改,就會返回sorry server服務器的信息
https與http認定為一個服務使用,打標簽方式
1 在VS服務器上操作
vim /etc/ha.d/ldrectord.cf
virtual=10 #改成標簽名稱即可,其它的不用改
#protocol=tcp #使用標簽模式,註釋協議這一行
LVS高可用實現