RHEL 8上使用MySQL和Keepalived实现高可用性

在企业级应用程序中,数据的高可用性是非常重要的。为了确保数据的连续性和可靠性,我们通常会采用将数据库部署在高可用集群中的方法。在本文中,我们将学习如何在RHEL 8上使用MySQL和Keepalived实现高可用性。

系统环境

在开始之前,我们首先需要准备以下环境:

  • 两台运行RHEL 8的服务器,分别称为Server A和Server B。
  • 在两台服务器上安装并配置MySQL数据库。
  • 在两台服务器上安装并配置Keepalived。

安装和配置MySQL

首先,我们需要在两台服务器上安装MySQL。假设我们已经完成了这一步。

接下来,我们需要配置MySQL以允许复制。在Server A上,打开MySQL配置文件my.cnf并进行以下更改:

# 开启二进制日志复制
log-bin=mysql-bin

# 设置服务器唯一ID
server-id=1

# 允许复制的数据库
binlog-do-db=my_database_name

# 设置复制密码
master-password=your_password

在Server B上,对于my.cnf文件进行相同的更改,只需将server-id的值设为2。

然后,我们需要创建一个MySQL用户并为其授予复制权限。在Server A上,登录MySQL并执行以下命令:

CREATE USER 'replication'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
FLUSH PRIVILEGES;

请确保将your_password替换为您自己的密码。

安装和配置Keepalived

步骤 1:在两台服务器上安装Keepalived。

sudo yum install -y keepalived

步骤 2:在Server A上,创建Keepalived配置文件/etc/keepalived/keepalived.conf,并进行以下配置:

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 10
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass your_password
    }
    virtual_ipaddress {
        192.168.0.100
    }
}

virtual_server 192.168.0.100 3306 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 50
    protocol TCP
    real_server 192.168.0.101 3306 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
        }
    }
    real_server 192.168.0.102 3306 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
        }
    }
}

请确保将your_password替换为与Server A上的keepalived.conf文件中相同的密码。另外,将192.168.0.100替换为您想要使用的虚拟IP地址。

步骤 3:在Server B上,创建Keepalived配置文件/etc/keepalived/keepalived.conf,并进行以下配置:

vrrp_instance VI_1 {
    state SLAVE
    interface eth0
    virtual_router_id 10
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass your_password
    }
    virtual_ipaddress {
        192.168.0.100
    }
}

请确保将your_password替换为与Server A上的keepalived.conf文件中相同的密码。

启动服务

步骤 1:在两台服务器上启动MySQL服务。

sudo systemctl start mysqld

步骤 2:在两台服务器上启动Keepalived服务。

sudo systemctl start keepalived

测试高可用性

现在,我们已经完成了高可用集群的配置。为了测试它是否正常工作,我们可以执行以下步骤:

步骤 1:在Server A上登录MySQL,并创建一个数据库和表