在现代的IT基础设施中,高可用性(High Availability, HA)是至关重要的。LinuxVirtual Server (LVS) 和 Keepalived 是两个常用的工具,它们可以帮助实现负载均衡和故障转移。本文将详细介绍如何在CentOS Linux上配置Keepalived,以实现自动故障转移。
在主从复制数据库设置中,如果主服务器失败,需要手动更改配置以切换到下一个可用的服务器。这通常会导致停机时间,因为手动故障转移需要时间。Keepalived 是一个提供接口故障转移的工具。通过良好的Keepalived实现,当主服务器不可用时,可以自动将虚拟IP地址切换到热备用服务器。因此,第二台服务器将处理流量,而不会产生生产环境中的停机时间。
本教程将使用CentOSLinux作为操作系统。以下是需要首先设置的先决条件,以完成本指南:
网络场景如下:
Keepalived通常在大多数Linux仓库中可用。以下是在两台服务器上安装Keepalived服务的命令:
sudo yum -y install keepalived
备份默认Keepalived配置文件,以防以后想将其用作模板或参考。
mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.back
可以复制以下配置块,但必须为环境做适当的更改,包括IP和接口、优先级和单播对等体。
位置:/etc/keepalived/keepalived.conf
vrrp_script chk_mysql {
script "pidof mysqld"
interval 2
weight 2
}
vrrp_instance VI_1 {
interface enp0s3
state MASTER
virtual_router_id 50
unicast_src_ip 192.168.40.222
unicast_peer {
192.168.40.223
}
priority 102
track_script {
chk_mysql
}
virtual_ipaddress {
192.168.40.224/24 dev enp0s3
}
}
提示:运行此命令以显示当前网络配置,并查看服务器上配置的网络接口:
ip addr show
通过此命令,还可以看到分配给主服务器的虚拟IP地址:
再次,可以复制以下配置块,但需要为环境做适当的更改。
位置:/etc/keepalived/keepalived.conf
vrrp_script chk_mysql {
script "pidof mysqld"
interval 2
weight 2
}
vrrp_instance VI_1 {
interface enp0s3
state BACKUP
virtual_router_id 50
unicast_src_ip 192.168.40.223
unicast_peer {
192.168.40.222
}
priority 101
track_script {
chk_mysql
}
virtual_ipaddress {
192.168.40.224/24 dev enp0s3
}
}
在两台服务器上运行此防火墙命令:
firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface enp0s3 --destination 224.0.0.18 --protocol vrrp -j ACCEPT;
firewall-cmd --direct --permanent --add-rule ipv4 filter OUTPUT 0 --out-interface enp0s3 --destination 224.0.0.18 --protocol vrrp -j ACCEPT;
firewall-cmd –reload;
配置Keepalived服务,以便在服务器启动时自动启动:
systemctl enable keepalived
启动Keepalived服务:
systemctl start keepalived
现在检查主服务器和从服务器上的Keepalived状态:
service keepalived status
如果状态显示为活动,那么已经正确配置了Keepalived服务:
以下是需要控制Keepalived的命令:
如果遇到这样的问题:
Keepalived[1650]: WARNING - default user 'keepalived_script' for script execution does not exist - please create.
通过以下方式解决:
sudo useradd -g users -M keepalived_script
然后重启Keepalived服务:
sudo systemctl restart keepalived
可以在这里检查keepalived的日志:
/var/log/messages
现在是测试Keepalived是否能够进行故障转移的最受期待的部分,让通过首先关闭主服务器(192.168.40.222)来测试它。
现在,将看到虚拟IP地址(192.168.40.224)现在转移到了从服务器(192.168.40.223)上。