安装
从官网下载相应版本安装包(本次使用Version 1.3.5)
官网地址:http://www.keepalived.org/download.html
安装步骤:
1.解压
[root@localhost ~]# tar xf keepalived-1.3.5.tar.gz
[root@localhost ~]# cd keepalived-1.3.5
2.编译安装
[root@localhost keepalived-1.3.5]# ./configure --prefix=/ --mandir=/usr/local/share/man/
[root@localhost keepalived-1.3.5]# make
[root@localhost keepalived-1.3.5]# make install
过程中可能会缺少一些依赖,安装相应的包即可.
比如:
./configure报错*** WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.
安装 libnl-devel 包 yum -y install libnl-devel 然后再次执行./configure
./configure报错configure: error: libnfnetlink headers missing
安装 libnfnetlink-devel 包 yum -y install libnfnetlink-devel 然后再次执行./configure
配置
[root@localhost ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs { #全局定义主要设置 keepalived 的通知机制和标识
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id HAproxy1
}
vrrp_script chk_haproxy { #配置脚本
script "/etc/keepalived/chk_haproxy.sh"
interval 2
}
vrrp_instance VI_1 { #VRRP(虚拟路由冗余协议)实例配置
state MASTER #另一个 Director 标记为 BACKUP!!!
nopreempt #非抢占模式.当两个都为BACKUP时才生效。不然MASTER还是会抢占
interface eth0 #实例绑定的网卡
virtual_router_id 51 #VRID 虚拟路由标识 00-00-5e-00-01-{VRID}
priority 150 #优先级高为master,master 至少要高于 backup 50 !!!
advert_int 1 #检查间隔
authentication {
auth_type PASS #验证:主备之间做身份验证 主备之间一定一致
auth_pass 1111
}
track_script {
chk_haproxy #主备检测脚本
}
virtual_ipaddress { #浮动ip
192.168.122.254/24
}
}
检测脚本
[root@localhost ~]# vim /etc/keepalived/chk_haproxy.sh
#!/bin/bash
A=`ps -C haproxy --no-header | wc -l`
if [ $A -eq 0 ]
then /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg
sleep 3
if [ `ps -C haproxy --no-header | wc -l ` -eq 0 ]
then /etc/init.d/keepalived stop
fi
fi
将相同配置拷贝到另一台主机修改相应的vrrp实例优先级和state
启动测试
扩展
当keepalived进入不同状态时可以执行相应的脚本:(在vrrp_instance段中)
notify_master "/etc/keepalived/scripts/become_master.sh"
notify_backup "/etc/keepalived/scripts/become_backup.sh"
notify_fault /etc/keepalived/scripts/fault.sh
notify_stop /etc/keepalived/scripts/stop.sh