这篇文章简单介绍利用keepalived软件,实现高可用,即实现故障自动切换。可以作为例如:Nginx、Haproxy、Mysql等的高可用解决方案软件。以zabbix为例,下面介绍keepalived的安装和使用,其他服务配置文件更改相应端口即可。
在两台安装了zabbix-server的服务器上执行:
yum install -y ipvsadm
yum install -y keepalived
vi /etc/keepalived/keepalived.conf(第一台)
! Configuration File for keepalived
global_defs {
router_id db-01
}
vrrp_instance VI_1 {
state BACKUP # 两个节点都为BACKUP状态,根据优先级大小判断谁为MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
nopreempt # 非抢占模式
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟IP池
virtual_ipaddress {
192.168.0.242
}
}
virtual_server 192.168.0.242 10051 {
delay_loop 2
lb_algo wrr
lb_kind DR
persistence_timeout 60
protocol TCP
real_server 192.168.0.1 10051 {
weight 3
notify_down /etc/keepalived/zabbix.sh # 当服务down了之后,执行的脚本
TCP_CHECK {
connect_timeout 10 # 连接超时时长(秒)
nb_get_retry 3 # 服务连接失败,重试次数
delay_before_retry 3 #每隔3秒检测一次服务是否可用
}
}
}
vi /etc/keepalived/keepalived.conf(第二台)
! Configuration File for keepalived
global_defs {
router_id db-01
}
vrrp_instance VI_1 {
state BACKUP # 两个节点都为BACKUP状态,根据优先级大小判断谁为MASTER
interface eth0
virtual_router_id 51
priority 90
advert_int 1
nopreempt # 非抢占模式
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟IP池
virtual_ipaddress {
192.168.0.242
}
}
virtual_server 192.168.0.242 10051 {
delay_loop 2
lb_algo wrr
lb_kind DR
persistence_timeout 60
protocol TCP
real_server 192.168.0.2 10051 {
weight 3
notify_down /etc/keepalived/zabbix.sh # 当服务down了之后,执行的脚本
TCP_CHECK {
connect_timeout 10 # 连接超时时长(秒)
nb_get_retry 3 # 服务连接失败,重试次数
delay_before_retry 3 #每隔3秒检测一次服务是否可用
}
}
}
vi /etc/keepalived/zabbix.sh(两台)
#!/bin/sh
pkill keepalived
chmod +x /etc/keepalived/zabbix.sh
/etc/init.d/keepalived restart
或者centos7使用
systemctl start keepalived