Keepalived 高可用性配置指南

在现代的IT基础设施中,高可用性(High Availability, HA)是至关重要的。LinuxVirtual Server (LVS) 和 Keepalived 是两个常用的工具,它们可以帮助实现负载均衡故障转移。本文将详细介绍如何在CentOS Linux上配置Keepalived,以实现自动故障转移。

Keepalived 的工作原理

在主从复制数据库设置中,如果主服务器失败,需要手动更改配置以切换到下一个可用的服务器。这通常会导致停机时间,因为手动故障转移需要时间。Keepalived 是一个提供接口故障转移的工具。通过良好的Keepalived实现,当主服务器不可用时,可以自动将虚拟IP地址切换到热备用服务器。因此,第二台服务器将处理流量,而不会产生生产环境中的停机时间。

先决条件

本教程将使用CentOSLinux作为操作系统。以下是需要首先设置的先决条件,以完成本指南:

  • 工作MySQL主从复制
  • 主服务器的虚拟IP地址(VIP)

网络场景如下:

  • 主服务器 - 192.168.40.222
  • 从服务器 - 192.168.40.223
  • 虚拟IP地址 - 192.168.40.224

教程

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的命令:

  • service keepalived start - 用于启动Keepalived服务
  • service keepalived stop - 用于停止Keepalived服务
  • service keepalived restart - 用于重启Keepalived服务
  • service keepalived status - 用于检查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)上。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485