使用 Pacemaker 和 Corosync,实现数据库高可用

高可用对于关键系统至关重要,即使面临硬件或软件故障,这些系统也应该保持可访问。Pacemaker 和 Corosync 是开源工具,允许您在 Linux 服务器上创建高可用集群。

在深入进行配置之前,我们先简单了解一下什么是高可用集群:

高可用集群涉及将多个服务器(节点)组合在一起,以便为关键服务提供冗余。如果一个节点发生故障,另一个节点将无缝接管,从而确保服务的持续可用性。

设置 Pacemaker 和 Corosync

步骤 1:安装 Pacemaker 和 Corosync。在每个节点上,安装 Pacemaker 和 Corosync 软件包:

sudo apt update
sudo apt install pacemaker corosync

步骤 2:配置 Corosync。编辑每个节点上的 Corosync 配置文件:

sudo nano /etc/corosync/corosync.conf

以下是一个双节点集群的基本配置示例:

totem {
    version: 2
    secauth: off
    cluster_name: my_cluster
    transport: udpu
}

nodelist {
    node {
        ring0_addr: node1_IP
        nodeid: 1
    }
    node {
        ring0_addr: node2_IP
        nodeid: 2
    }
}
quorum {
    provider: corosync_votequorum
}

node1_IPnode2_IP替换为节点的实际 IP 地址。

步骤 3:启动 Corosync。在每个节点上启动 Corosync 服务:

sudo systemctl start corosync

步骤 4:启用开机启动 Corosync。确保 Corosync 在机器启动时自动启动:

sudo systemctl enable corosync

配置 Pacemaker

步骤 5:启动 Pacemaker。在每个节点上启动 Pacemaker 服务:

sudo systemctl start pacemaker

步骤 6:启用开机启动 Pacemaker。使 Pacemaker 在机器启动时自动启动:

sudo systemctl enable pacemaker

创建虚拟 IP 资源

步骤 7:创建一个资源代理。Pacemaker 使用资源代理管理资源。要为虚拟 IP(VIP)地址创建简单的资源代理,请创建如下vip.sh文件:

sudo nano /usr/local/bin/vip.sh

添加以下内容:

#!/bin/bash
/sbin/ifconfig eth0:0 $1 netmask 255.255.255.0 up

并使脚本可执行:

sudo chmod +x /usr/local/bin/vip.sh

步骤 8:现在创建资源,为 VIP 创建一个 Pacemaker 资源。在其中一个节点上,运行:

sudo crm configure primitive vip ocf:heartbeat:IPaddr2 params ip="VIP_IP" nic="eth0" cidr_netmask="24" op monitor interval="10s"

VIP_IP替换为您要使用的虚拟 IP 地址。

步骤 9:创建一个资源组。创建包含 VIP 资源的资源组:

sudo crm configure group vip_group vip

测试故障转移

步骤 10:模拟节点故障。要测试集群,可通过在其中一个节点上停止 Corosync 服务,来模拟节点故障:

sudo systemctl stop corosync

检查其余节点上的集群状态:

sudo crm status

您应该会看到 VIP 已移至正常运行的节点。

PostgreSQL 配置

在添加 Pacemaker 的 pgsql 资源来管理 PostgreSQL 服务之前,您需要在每个节点上安装 PostgreSQL 软件包,并初始化 PostgreSQL 数据库。

安装后,配置 PostgreSQL 将监听的绑定地址。这需要设置为 *,以便 PostgreSQL 服务将监听任何地址。PostgreSQL 将扫描新地址,并在它们出现在节点上时自动绑定到这些地址。这是允许 PostgreSQL 在节点故障转移时开始监听 VIP 地址所必需的。

echo "listen_addresses = '*'" >> /db/pgsql/data/postgresql.conf

此外,关于如何将 PostgreSQL 配置为一个 Pacemaker 资源,以管理 PostgreSQL 服务,请参阅 “使用 PAF 实现自动故障转移”,了解更多详细信息。

其他配置

要配置更多资源、护栏或复杂约束,请参阅 Pacemaker 文档和教程。Pacemaker 和 Corosync 为构建高可用系统提供了广泛的功能。

祝贺!您已使用 Pacemaker 和 Corosync 在 Linux 上成功设置高可用集群。您的服务现在可以灵活应对节点故障,从而为关键应用程序提供不间断的可用性。