keepalived的简单配置
Keepalived是一款流行的高可用软件,通过为keepalived集群设置虚IP和健康检测脚本,当检查失败的时候,根据keepalived的策略使虚IP在服务器之间漂移。由于虚IP漂移过程中可能有交换机arp缓存导致请求失效,所以在切换到master之后,应立刻自动执行脚本刷新交换机的缓存。
安装和配置过程
首先在主备两台服务器上安装keepalived,然后设置健康检查脚本,修改配置文件,最后做故障切换测试。
安装keepalived
解决keepalived安装过程的依赖
yum -y install popt-devel sendmail
/etc/init.d/sendmail start
chkconfig sendmail on
下载安装keepalived
cd /data/install/
wget http://www.keepalived.org/software/keepalived-1.2.19.tar.gz
tar xvf keepalived-1.2.19.tar.gz
cd keepalived-1.2.19
./configure --prefix=/data/program/keepalived
make -j 4 && make install && echo ok
# 系统环境
cp /data/program/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /data/program/keepalived/sbin/keepalived /usr/sbin/
cp /data/program/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
chkconfig keepalived on
健康检查脚本范例
自此,服务器环境准备完成,然后编辑健康检查脚本,这里以tomcat http服务为例,脚本文件如下/etc/keepalived/check_tomcat.sh:
#!/bin/bash
service=localhost:8080
count=0
for (( k=0; k<2; k++ ))
do
check_code=$(curl --connect-timeout 2 -sL -w "%{http_code}\\n" $service -o /dev/null)
if [[ $check_code -ne 200 ]]; then
let count=$count+1
continue
else
count=0
break
fi
done
if [ $count -ne 0 ]; then
exit 1
else
exit 0
fi
然后还必须给该脚本可执行权限
chmod +x /etc/keepalived/check_tomcat.sh
脚本的作用是检查本机的8080端口,如果返回码是200就认为健康,然后退出。如果连续两次检查都不是200,则脚本返回1。刷新交换机缓存的脚本如下/etc/keepalived/fresh_arp.sh:
#!/bin/bash
VIP=192.168.1.1
GATEWAY=192.168.1.254
/sbin/arping -I eth0 -c 3 -s $VIP $GATEWAY &> /dev/null
这里的VIP是192.168.1.1,也就是在主备两台服务器上漂移的虚拟IP地址,发生漂移之后,要使用arping命令到交换机上刷新mac地址表缓存。
编辑配置文件
编辑keepalived的配置文件/etc/keepalived/keepalived.conf,内容如下:
global_defs {
notification_email {
[email protected]
}
notification_email_from root@localhost
smtp_server localhost
smtp_connect_timeout 30
router_id keepalived1.xnow.me
}
vrrp_script chk_tomcat {
script "/etc/keepalived/check_tomcat.sh"
interval 2
weight -5
fall 3
rise 2
}
vrrp_instance tomcat_cluster {
state MASTER
interface eth0
mcast_src_ip 192.168.1.10
virtual_router_id 51
priority 101
#nopreempt
advert_int 1
smtp_alert
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.1.1/24
}
track_script {
chk_tomcat
}
notify_master "/etc/keepalived/fresh_arp.sh"
}
global_defs 里面定义了全局的配置,MASTER和BACKUP的配置可以完全一样,也可以完全不一样或部分一样。
- 发送邮件的信息,notification_email定义把邮件发给谁
- notification_email_from 指定发送邮件的来源地址
- smtp_server 定义smtp服务器地址,这里指定为localhost,所以本地需要开启一个sendmail或者postfix来发送邮件
- smtp_connect_timeout 是发送邮件的超时信息
- router_id 本节点的标示,通常为hostname(可以不是),通知邮件里会用到。
vrrp_script 中定义脚本执行的行为,chk_tomcat是本实例的名字
- script 指定脚本路径
- interval 指定脚本检查频率
- weight 如果检查失败,该节点的权重-5
- fall 如果连续3次检查失败,认为节点服务不可用
- rise 如果连续2次检查成功则认为节点正常
vrrp_instance 定义对外提供服务的VIP区域及其相关属性
- state state 可以是MASTER或BACKUP,但集群启动时会将priority比较大的节点选举为MASTER。
- interface 节点固有IP(非VIP)的网卡,用来发VRRP包
- mcast_src_ip 修改vrrp组播包的源地址,默认源地址为master的IP。
- virtual_router_id 取值0-255之间,区分多个instance的VRRP组播,同instance该值相同
- priority 优先级,数字越大,优先级越高
- nopreempt 使用非抢占模式,这样,只要 Master 没坏,即使 Backup 的优先级更高,也不会触发选举。比如Master挂了,ip漂移到Backup机子上后,原Master恢复,ip不会漂移回原Master机子。因为切换中有丢包,如果Backup机子可以稳定工作就避免频繁切换。
- advert_int 发VRRP包的时间间隔,即多久进行一次master选举
- smtp_alert 启用邮箱发送切换报警
authentication 定义节点间的认证,MASTER和BACKUP的这部分配置必须一致
- auth_type 认证方式
- auth_pass 认证密码
- virtual_ipaddress 虚拟IP
- track_script 指定前面脚本模块里面定义的名字
- notify_master 当keepalived检查到本节点是master的时候,执行脚本。类似功能的配置项还有notify_backup。
tips
BACKUP的配置和MASTER大致相同,修改如下几项即可:
- router_id 建议设置为主机名,发送报警邮件的时候方便排查问题。
- state 备机的state设置为BACKUP
- mcast_src_ip 本机发送vrrp的地址,不能是vip
- priority 优先级,BACKUP的优先级应该比MASTER低
测试
根据以上配置keepalived会每2秒钟检查一次本机的8080端口,如果要配置其它服务,可以修改该脚本,或者不使用脚本完成其它服务的健康检查。
测试的时候,通过关闭MASTER上的tomcat,优先级-5,MASTER的priority变成96,虚IP会切换到BACKUP上去。
同时,配置的[email protected]邮箱会收到报警邮件。
当前暂无评论 »