初識keepalived(二)——keepalived與LVS實現高可用
背景介紹
通過前面的介紹了解到LVS其實是工作在netfilter框架input鏈上的一組規則,而LVS本身無法實現高可用和對realserver的健康狀態檢測,keepalived為了解決上述2點問題而誕生,同時keepalived還可以直接在配置文件裏設置LVS規則,而不需要再單獨設置。在配置高可用之前需要提前做2個準備:
1.需要進行高可用的服務器指向相同的NTP服務器,保證時間的一致性
2.可以相互間進行名稱解析,推薦使用/etc/hosts文件進行
實驗環境
本次實驗使用4臺CentOS6.8虛擬機組成,其中2臺為director,2臺為WebServer,拓撲結構如下圖所示:
操作步驟
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是設備名稱,名稱不需要唯一,可以使用主機名
腳本配置段:
該配置段是一個獨立的配置段,配置文件中默認並沒有這一段,加入這一段的目的是如果後期keepalived服務器需要升級人為切換服務器角色時可以手動在相應目錄下創建一個down文件,使他的權重-20,此處註意:判斷為假時(echo $?值為1)才會執行weight -20
vrrp實例配置段:
同一vrrp實例名稱保持一致,虛擬路由id必須保持一致,tarck_script是調用上面定義的腳本配置段
LVS規則配置段:
virltual_server #設置vip地址和端口
delay_loop #RS恢復服務後延遲上線的時間,單位為妙
lb_algo #調度策略,支持rr|wrr|lc|wlc|lblc|sh|dh
lb_kind #LVS轉發模式,此處是DR模型
keepalived只支持TCP協議
HTTP_GET #健康監測,同時還支持SSL_GET
status_code #狀態碼檢測,判斷RS服務器是否正常
遺留問題
1.只使用LVS時,vip地址可以設置在director的lo接口上,結合keepalived後vrrp實例設置在lo接口上IP地址和IPVS規則無法生效,設置在eth0接口上恢復正常
2.當前vip地址生效director自己無法正常使用curl命令通過vip獲取到頁面,另一個director使用curl命令通過vip可以正常獲取到頁面,2個director交換角色後依然如此
本文出自 “兔樣兔森破” 博客,請務必保留此出處http://arkling.blog.51cto.com/2844506/1983538
初識keepalived(二)——keepalived與LVS實現高可用