介绍
为了防止单点组件不可用,本文介绍用keepalived实现主备双节点高可用,主节点不可用后自动切换到备节点继续提供服务。
另外,keepalived还可以做负载均衡。
安装
在组件对应的机器上安装:
yum install -y keepalived
主节点配置
我们以禅道zbox为例写一个配置,如下。首先check_zbox.sh是一个检测脚本,检测应用是不是可用,不可用时停止keepalived服务以自动切换到从。然后是在网卡开了一个虚拟ip。
[root@ldap ~]# cat /etc/keepalived/keepalived.conf
vrrp_script check_zbox {
script "/etc/keepalived/check_zbox.sh"
interval 2
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 150
authentication {
auth_type PASS
auth_pass zbox
}
track_script {
check_zbox
}
virtual_ipaddress {
192.168.178.131
}
}
检测脚本内容如下:
[root@ldap ~]# cat /etc/keepalived/check_zbox.sh
#!/bin/bash
return_code=`curl -s -w "%{http_code}" -o /dev/null http://127.0.0.1:90`
if [[ $return_code -ne 200 ]]; then
systemctl stop keepalived
fi
记得给脚本加权限。
从节点配置
与主节点相比,注意以下字段:state
、virtual_router_id
、priority
、virtual_ipaddress
。
[root@vm2 ~]# cat /etc/keepalived/keepalived.conf
vrrp_script check_zbox {
script "/etc/keepalived/check_zbox.sh"
interval 2
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 100
authentication {
auth_type PASS
auth_pass zbox
}
track_script {
check_zbox
}
virtual_ipaddress {
192.168.178.131
}
}
启动、测试
所有节点启动keepalived:
systemctl start keepalived && systemctl enable keepalived
正常情况下,在主节点ip addr
可以看到你定义的虚ip,在从节点看不到。访问虚ip可以正常访问组件。
然后如果停掉主节点的组件,访问虚ip还是可以正常访问组件,但是在主节点ip addr
看不到虚ip了,因为它跑到从节点了。