概要
本文档基于keepalivend2.0.20与mysql8来实现,为了部署MySQL的高可用性解决方案,使用Keepalived和MySQL复制来实现。Keepalived可以确保MySQL服务在主服务器发生故障时能够自动切换到备份服务器。以下是详细的部署步骤:
注意:在开始之前,请确保你已经安装了MySQL,并且主服务器和备份服务器上都已经配置好MySQL。
安装Keepalived
在主服务器和备份服务器上安装Keepalived。
1、在线安装
在Debian/Ubuntu上,使用以下命令安装:
sudo apt-get install keepalived
在CentOS/RHEL上,使用以下命令安装:
sudo yum install keepalived
2、下载安装
- 可通过官方Keepalived for Linux下载需要的版本。
wget https://www.keepalived.org/software/keepalived-2.0.20.tar.gz tar -xvf keepalived-2.0.20.tar.gz
-
编译 注意:如服务器已存在相关依赖可直接执行
yum -y install libnl libnl-devel yum -y install GCC yum install openssl-devel -y ./configure --prefix=/data/keepalived-2.0.20/data make && make install
- 环境配置
mkdir /etc/keepalived cp /data/keepalived-2.0.20/keepalived/etc/init.d/keepalived /etc/init.d/ cp /usr/local/keepalived-2.0.20/etc/sysconfig/keepalived /etc/sysconfig/ cp /usr/local/keepalived-2.0.20/sbin/keepalived /usr/sbin/
- 添加开机启动
chmod +x /etc/init.d/keepalived chkconfig --add keepalived
3、配置Keepalived
注意:自定义安装是修改已下内容
在主服务器上,keepalived.conf
文件并添加以下内容:
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id node-1 #唯一
vrrp_skip_check_adv_addr
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script chk_haproxy {
# 脚本位置
script "/etc/keepalived/mysql_check.sh"
# 脚本执行的时间间隔
interval 3
weight 2
}
vrrp_instance VI_1 {
state MASTER # MASTER 表示主节点,BACKUP 表示备份节点
interface ens192 #网卡
nopreempt # 非抢占模式配置添加在主节点
virtual_router_id 51 # 虚拟路由的id,主备节点需要设置为相同
priority 150 #优先级
advert_int 1
authentication {
auth_type PASS
auth_pass sinoKepp
}
track_script {
chk_haproxy ## 检查 HAProxy 服务是否存活
}
virtual_ipaddress {
xx.x.x.xxx dev ens192 #虚拟IP
}
}
在备份服务器keepalived.conf
文件中添加以下内容:
! Configuration File for keepalived
global_defs {
router_id node-2 #唯一
vrrp_skip_check_adv_addr
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script chk_haproxy {
# 脚本位置
script "/etc/keepalived/mysql_check.sh"
# 脚本执行的时间间隔
interval 3
weight 2
}
vrrp_instance VI_1 {
state BACKUP #备 MASTER 表示主节点,BACKUP 表示备份节点
interface ens192 #网卡
virtual_router_id 51 # 虚拟路由的id,主备节点需要设置为相同
priority 50 #优先级
advert_int 1
authentication {
auth_type PASS
auth_pass sinoKepp
}
track_script {
chk_haproxy ## 检查 HAProxy 服务是否存活
}
virtual_ipaddress {
x.x.x.xxx dev ens192 #虚拟IP
}
}
注意:将Your_Password
替换为一个安全的密码,Your_Virtual_IP
替换为使用的虚拟IP地址。
4、启动Keepalived
在主服务器和备份服务器上启动Keepalived服务:
sudo systemctl start keepalived
还要确保Keepalived在系统启动时自动启动:
systemctl enable keepalived
5、查看虚拟IP
ip addr|grep xx.x.x.xxx
注意: 如主机备机都存在虚拟IP,关闭防火墙时正常。使用下述命令,本人服务器使用的防火墙为firewall
sudo firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --protocol vrrp -j ACCEPT
systemctl restart firewalld
小结
以上步骤提供了一个基本的高可用性MySQL部署示例。具体的部署细节可能因你的环境和需求而有所不同。在部署前,务必备份你的数据,并在生产环境中小心谨慎地执行这些步骤。同时,你还可以考虑使用更高级的高可用性解决方案,如MHA,以提供更强大的高可用性。