背景介紹
通過前面的介紹了解到LVS其實是工作在netfilter架構input鍊上的一組規則,而LVS本身無法實作高可用和對realserver的健康狀态檢測,keepalived為了解決上述2點問題而誕生,同時keepalived還可以直接在配置檔案裡設定LVS規則,而不需要再單獨設定。在配置高可用之前需要提前做2個準備:
1.需要進行高可用的伺服器指向相同的NTP伺服器,保證時間的一緻性
2.可以互相間進行名稱解析,推薦使用/etc/hosts檔案進行
實驗環境
本次實驗使用4台CentOS6.8虛拟機組成,其中2台為director,2台為WebServer,拓撲結構如下圖所示:
<a href="https://s3.51cto.com/oss/201711/20/7bab908f6a7b9dc001885740c845961c.png" target="_blank"></a>
操作步驟
1.2台web伺服器上安裝httpd服務,便于區分将設定不同的首頁面(略)
2.設定2台web伺服器的arp_ignore和arp_announce參數,可以通過腳本
#!/bin/sh
case $1 in
start)
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
;;
stop)
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
*)
echo "Wrong Arguments"
esac
3.将vip位址設定到web伺服器的lo接口上
ip addr add 172.16.10.50/32 dev lo
4.給2台direcotr安裝keepalived和ipvsadm軟體包(略)
5.編輯keepalived配置檔案,設定LVS規則和keepalived角色(後文介紹)
6.啟動keepalived服務,檢視vip位址是否正常添加,ipvs政策是否生成,至此操作完成。
ip addr list
ipvsadm -Ln
keepalived配置檔案說明
全局配置段:
可以設定接收郵件的賬号(工作場景常以監控軟體實作),其中router_id是裝置名稱,名稱不需要唯一,可以使用主機名
<a href="https://s5.51cto.com/oss/201711/20/aa35c3d7119cf31dfc0df221a5725c63.png" target="_blank"></a>
腳本配置段:
該配置段是一個獨立的配置段,配置檔案中預設并沒有這一段,加入這一段的目的是如果後期keepalived伺服器需要更新人為切換伺服器角色時可以手動在相應目錄下建立一個down檔案,使他的權重-20,此處注意:判斷為假時(echo $?值為1)才會執行weight -20
<a href="https://s5.51cto.com/oss/201711/20/a182010dbc2fe0d432c6accc690c6924.png" target="_blank"></a>
vrrp執行個體配置段:
同一vrrp執行個體名稱保持一緻,虛拟路由id必須保持一緻,tarck_script是調用上面定義的腳本配置段
<a href="https://s5.51cto.com/oss/201711/20/9fa027f86e869889540b1c2a9f8cfb08.png" target="_blank"></a>
LVS規則配置段:
virltual_server #設定vip位址和端口
delay_loop #RS恢複服務後延遲上線的時間,機關為妙
lb_algo #排程政策,支援rr|wrr|lc|wlc|lblc|sh|dh
lb_kind #LVS轉發模式,此處是DR模型
keepalived隻支援TCP協定
<a href="https://s1.51cto.com/oss/201711/20/e4d1cff48ac28148380c840fa365e665.png" target="_blank"></a>
HTTP_GET #健康監測,同時還支援SSL_GET
status_code #狀态碼檢測,判斷RS伺服器是否正常
<a href="https://s1.51cto.com/oss/201711/20/5abc09ff84c9723aa44013db31275c91.png" target="_blank"></a>
遺留問題
1.隻使用LVS時,vip位址可以設定在director的lo接口上,結合keepalived後vrrp執行個體設定在lo接口上IP位址和IPVS規則無法生效,設定在eth0接口上恢複正常
2.目前vip位址生效director自己無法正常使用curl指令通過vip擷取到頁面,另一個director使用curl指令通過vip可以正常擷取到頁面,2個director交換角色後依然如此
本文轉自 qiao645 51CTO部落格,原文連結:http://blog.51cto.com/arkling/1983538