之前寫過一個heartbeat-ldirectord實作LVS的高可用,這裡引入一個輕量級的程式Keepalived基于VRRP協定工作,也能為服務提供高可用功能,這個程式的開發初衷是為了給lvs提供高可用。
下面我們來看看如何使用keepalived+ipvs實作高可用+負載均衡。
在RHEL6.4以後就提供了rpm格式的安裝包,這裡我們用源碼編譯安裝。
解壓源程式包,預編譯配置,編譯程式,安裝程式。
tar zxvf keepalived-1.2.13.tar.gz
./configure --prefix=/usr/local/keepalived --sysconfdir=/etc/
make && make install
編輯服務腳本,修改程式路徑。
vim /etc/init.d/keepalived
<a href="http://s3.51cto.com/wyfs02/M01/44/38/wKioL1PgO0zD0cJAAADv96mxCJg145.jpg" target="_blank"></a>
編輯主配置檔案/etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs { //全局配置段
notification_email { //收件人郵箱
root@localhost
}
notification_email_from keepadmin@localhost //發件人
smtp_server 127.0.0.1 //郵件伺服器
smtp_connect_timeout 30 //等待逾時時間
router_id LVS_DEVEL
}
vrrp_instance VI_1 { //定義一個VRRP路由執行個體
state MASTER //初始狀态(備節點改為BACKUP)
interface eth0
virtual_router_id 51 //路由執行個體ID(唯一)
priority 100 //優先級 (備節點的值要設定比主的低)
advert_int 1 //通告頻率
authentication { //認證配置
auth_type PASS //認證類型
auth_pass 1111 //密碼
}
virtual_ipaddress { //虛拟IP
192.168.18.18
notify_master "/etc/keepalived/notify.sh master" //狀态轉換通知,要自己寫好腳本。
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
virtual_server 192.168.18.18 80 { //定義虛拟服務
delay_loop 6
lb_algo wlc //指定排程算法
lb_kind DR //指定工作模型
nat_mask 255.255.255.0
persistence_timeout 0 //持久連接配接
protocol TCP
real_server 192.168.18.203 80 { //定義RealServer
weight 1 //設定權重
HTTP_GET { //配置HTTP健康狀态檢測
url {
path / //檢測的路徑
status_code 200 //響應的狀态資訊
}
connect_timeout 3 //逾時時間
nb_get_retry 3 //重試次數
delay_before_retry 3 //每一次重試之前等待的時間
}
real_server 192.168.18.204 80 {
weight 2
HTTP_GET {
path /
status_code 200
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
把配置檔案同步到備節點,修改我上面提到的兩個地方即可,兩個節點啟動Keepalived服務。
RealServer配置(略)
scp /etc/keepalived/keepalived.conf admin2:/etc/keepalived/
/etc/init.d/keepalived start
檢視主節點生成的配置
<a href="http://s3.51cto.com/wyfs02/M01/44/3A/wKioL1PgQsXQSilFAARhbTuMsPI761.jpg" target="_blank"></a>
通路vip 192.168.18.18
<a href="http://s3.51cto.com/wyfs02/M00/44/3A/wKioL1PgQ0vSUdFEAADPguPp12k580.jpg" target="_blank"></a>
重新整理一下,請求自動轉發到第二台realserver。
<a href="http://s3.51cto.com/wyfs02/M01/44/3A/wKioL1PgQ9HjnDxjAADU-ggc238496.jpg" target="_blank"></a>
這時我們模拟壞了一台RealServer,将Realserver2-192.168.18.203網絡服務給stop,再看看狀态。
<a href="http://s3.51cto.com/wyfs02/M02/44/3E/wKioL1PgRd-hoPxxAAInQXlGlLI194.jpg" target="_blank"></a>
再把Realserver2給恢複。
<a href="http://s3.51cto.com/wyfs02/M01/44/3E/wKioL1PgR36D_f42AAH3A0Pw9QM939.jpg" target="_blank"></a>
這時我們模拟主Director故障了,把主節點網絡服務stop。
我們來到備節點
<a href="http://s3.51cto.com/wyfs02/M00/44/3E/wKioL1PgSKPRDU53AATldlDQ0sY874.jpg" target="_blank"></a>
主節點下線了,備節點優先級為最高,繼承資源,如果這是當主節點恢複後,資源還是會回到主節點的,因為主節點的優先級更高。
好了,這就實作了用keepalived給lvs提供高可用。
有問題歡迎與我交流QQ1183710107
本文轉自qw87112 51CTO部落格,原文連結:http://blog.51cto.com/tchuairen/1535840