centos

如何在CentOS上部署PostgreSQL集群

小樊
96
2025-02-14 17:01:55
栏目: 云计算

在CentOS上部署PostgreSQL集群可以通过多种方式实现,其中一种常见的方法是使用Patroni和Pacemaker来管理高可用性和故障转移。以下是一个基本的步骤指南:

前提条件

  1. CentOS 7或更高版本
  2. 至少三台服务器(用于高可用性)。
  3. PostgreSQL 9.6或更高版本
  4. Pacemaker和Corosync
  5. Patroni

步骤指南

1. 安装必要的软件包

在所有节点上安装以下软件包:

sudo yum install -y centos-release-scl
sudo yum install -y rh-postgresql96 rh-postgresql96-server
sudo yum install -y pacemaker pcs
sudo yum install -y patroni

2. 配置Pacemaker和Corosync

在所有节点上启动并启用Pacemaker和Corosync服务:

sudo systemctl start pacemaker
sudo systemctl enable pacemaker
sudo systemctl start corosync
sudo systemctl enable corosync

初始化Pacemaker集群:

sudo pcs cluster auth <node1> <node2> <node3>
sudo pcs cluster setup --name pg_cluster <node1> <node2> <node3>
sudo pcs cluster start --all
sudo pcs cluster enable --all

3. 配置Corosync

编辑/etc/corosync/corosync.conf文件,确保配置如下:

totem {
    version: 2
    cluster_name: pg_cluster
    transport: udpu
}

nodelist {
    node {
        ring0_addr: <node1_ip>
        nodeid: 1
    }
    node {
        ring0_addr: <node2_ip>
        nodeid: 2
    }
    node {
        ring0_addr: <node3_ip>
        nodeid: 3
    }
}

quorum {
    provider: corosync_votequorum
}

logging {
    to_logfile: yes
    logfile: /var/log/corosync/corosync.log
    to_syslog: yes
}

4. 配置Patroni

在每个节点上创建Patroni配置文件/etc/patroni.yml,示例配置如下:

scope: postgres
name: <node_name>
namespace: /db
data_dir: /var/lib/pgsql/9.6/data
restapi:
  listen: 0.0.0.0
  connect_address: <node_ip>
  ssl:
    cert_file: /etc/pki/tls/certs/server.crt
    key_file: /etc/pki/tls/private/server.key
    verify_mode: verify_peer
    ca_file: /etc/pki/tls/certs/ca.crt
pg_hba:
- host    replication     replicator     <node_ip>/32            md5
- host    all             all             0.0.0.0/0               md5
authentication:
  replication:
    username: replicator
    password: <replicator_password>
  superuser:
    username: postgres
    password: <postgres_password>
postgresql:
  listen: 0.0.0.0
  connect_address: 127.0.0.1
  data_dir: /var/lib/pgsql/9.6/data
  version: 9.6
  pg_hba:
  - host    replication     replicator     <node_ip>/32            md5
  - host    all             all             0.0.0.0/0               md5
  authentication:
    replication:
      username: replicator
      password: <replicator_password>
    superuser:
      username: postgres
      password: <postgres_password>
  parameters:
    wal_level: replica
    max_wal_senders: 4
    wal_keep_segments: 8
    hot_standby: on

5. 启动Patroni

在每个节点上启动Patroni服务:

sudo systemctl start patroni
sudo systemctl enable patroni

6. 验证集群状态

检查Patroni和Pacemaker的状态:

sudo systemctl status patroni
sudo pcs status

注意事项

通过以上步骤,你应该能够在CentOS上成功部署一个PostgreSQL集群,并实现高可用性和故障转移。

0
看了该问题的人还看了