1 簡介
Keepalived,它是一個(gè)高性能的服務(wù)器高可用或熱備解決方案,Keepalived主要來防止服務(wù)器單點(diǎn)故障的發(fā)生問題,可以通過其與Nginx、Haproxy等反向代理的負(fù)載均衡服務(wù)器配合實(shí)現(xiàn)web服務(wù)端的高可用。Keepalived以VRRP協(xié)議為實(shí)現(xiàn)基礎(chǔ),用VRRP協(xié)議來實(shí)現(xiàn)高可用性(HA).VRRP(Virtual Router Redundancy Protocol)協(xié)議是用于實(shí)現(xiàn)路由器冗余的協(xié)議,VRRP協(xié)議將兩臺(tái)或多臺(tái)路由器設(shè)備虛擬成一個(gè)設(shè)備,對外提供虛擬路由器IP(一個(gè)或多個(gè))。
2 安裝配置
2.1 安裝依賴
[root@localhost ~]# yum install -y openssl openssl-devel
2.2 編譯安裝
[root@localhost ~]# wget http://www.keepalived.org/software/keepalived-1.2.18.tar.gz
[root@localhost ~]# tar -zxvf keepalived-1.2.18.tar.gz -C /usr/local/
[root@localhost ~]# cd ..
[root@localhost ~]# cd keepalived-1.2.18/ && ./configure --prefix=/usr/local/keepalived
[root@localhost ~]# make && make install
2.3 配置
2.3.1 自定義配置
將keepalived安裝成Linux系統(tǒng)服務(wù),因?yàn)闆]有使用keepalived的默認(rèn)安裝路徑(默認(rèn)路徑:/usr/local),安裝完成之后,需要做一些修改工作
[root@localhost ~]# mkdir /etc/keepalived
[root@localhost ~]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
復(fù)制keepalived腳本文件
[root@localhost ~]# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
[root@localhost ~]# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@localhost ~]# ln -s /usr/local/sbin/keepalived /usr/sbin/
如果存在則進(jìn)行刪除: rm /sbin/keepalived
[root@localhost ~]# ln -s /usr/local/keepalived/sbin/keepalived /sbin/
2.3.2 設(shè)置開機(jī)啟動(dòng)
可以設(shè)置開機(jī)啟動(dòng):chkconfig keepalived on,到此我們安裝完畢
[root@localhost ~]# chkconfig keepalived on
2.3.3 配置信息
修改keepalived.conf配置文件:
[root@localhost ~]# vi /etc/keepalived/keepalived.conf
79節(jié)點(diǎn)(Master)配置如下:
! Configuration File for keepalived
global_defs {
router_id bhz74 ##標(biāo)識節(jié)點(diǎn)的字符串,通常為hostname
}
vrrp_script chk_haproxy {
script "/etc/keepalived/haproxy_check.sh" ##執(zhí)行腳本位置
interval 2 ##檢測時(shí)間間隔
weight -20 ##如果條件成立則權(quán)重減20
}
vrrp_instance VI_1 {
state MASTER ## 主節(jié)點(diǎn)為MASTER,備份節(jié)點(diǎn)為BACKUP
interface eno16777736 ## 綁定虛擬IP的網(wǎng)絡(luò)接口(網(wǎng)卡),與本機(jī)IP地址所在的網(wǎng)絡(luò)接口相同(我這里是eth0)
virtual_router_id 74 ## 虛擬路由ID號(主備節(jié)點(diǎn)一定要相同)
mcast_src_ip 192.168.11.74 ## 本機(jī)ip地址
priority 100 ##優(yōu)先級配置(0-254的值)
nopreempt
advert_int 1 ## 組播信息發(fā)送間隔,倆個(gè)節(jié)點(diǎn)必須配置一致,默認(rèn)1s
authentication { ## 認(rèn)證匹配
auth_type PASS
auth_pass bhz
}
track_script {
chk_haproxy
}
virtual_ipaddress {
192.168.11.70 ## 虛擬ip,可以指定多個(gè)
}
}
80節(jié)點(diǎn)(backup)配置如下:
! Configuration File for keepalived
global_defs {
router_id bhz75 ##標(biāo)識節(jié)點(diǎn)的字符串,通常為hostname
}
vrrp_script chk_haproxy {
script "/etc/keepalived/haproxy_check.sh" ##執(zhí)行腳本位置
interval 2 ##檢測時(shí)間間隔
weight -20 ##如果條件成立則權(quán)重減20
}
vrrp_instance VI_1 {
state BACKUP ## 主節(jié)點(diǎn)為MASTER,備份節(jié)點(diǎn)為BACKUP
interface eno16777736 ## 綁定虛擬IP的網(wǎng)絡(luò)接口(網(wǎng)卡),與本機(jī)IP地址所在的網(wǎng)絡(luò)接口相同(我這里是eno16777736)
virtual_router_id 74 ## 虛擬路由ID號(主備節(jié)點(diǎn)一定要相同)
mcast_src_ip 192.168.11.75 ## 本機(jī)ip地址
priority 90 ##優(yōu)先級配置(0-254的值)
nopreempt
advert_int 1 ## 組播信息發(fā)送間隔,倆個(gè)節(jié)點(diǎn)必須配置一致,默認(rèn)1s
authentication { ## 認(rèn)證匹配
auth_type PASS
auth_pass bhz
}
track_script {
chk_haproxy
}
virtual_ipaddress {
192.168.1.70 ## 虛擬ip,可以指定多個(gè)
}
}
3 自定義腳本
3.1 編寫腳本
添加文件位置為/etc/keepalived/haproxy_check.sh(74、75兩個(gè)節(jié)點(diǎn)文件內(nèi)容一致即可)
#!/bin/bash
COUNT=`ps -C haproxy --no-header |wc -l`
if [ $COUNT -eq 0 ];then
/usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg
sleep 2
if [ `ps -C haproxy --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
3.2 授權(quán)
haproxy_check.sh腳本授權(quán),賦予可執(zhí)行權(quán)限.
[root@localhost ~]# chmod +x /etc/keepalived/haproxy_check.sh
4 啟動(dòng)與測試
4.1 啟動(dòng) keepalived
啟動(dòng)成功兩個(gè)haproxy節(jié)點(diǎn)以后,我們可以啟動(dòng)keepalived服務(wù)程序
如果74、75的haproxy沒有啟動(dòng)則執(zhí)行啟動(dòng)腳本
[root@localhost ~]# /usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg
啟動(dòng)兩臺(tái)機(jī)器keepalived
[root@localhost ~]# service keepalived start | stop | status | restart
查看 haproxy、keepalived 進(jìn)程狀態(tài)
[root@localhost ~]# ps -ef | grep haproxy
[root@localhost ~]# ps -ef | grep keepalived
4.2 高可用測試
vip在27節(jié)點(diǎn)上

27節(jié)點(diǎn)宕機(jī)測試:停掉27的keepalived服務(wù)即可

查看28節(jié)點(diǎn)狀態(tài):我們發(fā)現(xiàn)VIP漂移到了28節(jié)點(diǎn)上,那么28節(jié)點(diǎn)的haproxy可以繼續(xù)對外提供服務(wù)

5 相關(guān)信息
上一篇:MQ RabbitMQ 高可用集群(三):Ha-Proxy安裝和配置
下一篇:MQ RabbitMQ 高可用集群(五):集群配置與測試運(yùn)行
博文不易,辛苦各位猿友點(diǎn)個(gè)關(guān)注和贊,感謝