温馨提示×

PostgreSQL在CentOS上的集群搭建

小樊
50
2025-10-05 07:18:26
栏目: 云计算

在CentOS上搭建PostgreSQL集群,通常指的是使用Patroni和Corosync来创建一个高可用的PostgreSQL集群。以下是搭建步骤的概述:

  1. 准备工作

    • 确保你有三台或以上的服务器,用于部署PostgreSQL集群的不同节点。
    • 每台服务器上都安装了CentOS操作系统。
    • 所有服务器之间可以互相通信。
  2. 安装必要的软件包: 在所有节点上安装PostgreSQL、Patroni、Corosync和Pacemaker。可以使用以下命令安装:

    sudo yum install postgresql-server patroni corosync pacemaker 
  3. 配置Corosync: 在每台服务器上编辑/etc/corosync/corosync.conf文件,配置集群成员信息和网络设置。例如:

    totem { version: 2 cluster_name: pg_cluster transport: udpu } nodelist { node { ring0_addr: server1_ip nodeid: 1 } node { ring0_addr: server2_ip nodeid: 2 } node { ring0_addr: server3_ip nodeid: 3 } } quorum { provider: corosync_votequorum } logging { to_logfile: yes logfile: /var/log/corosync/corosync.log to_syslog: yes } 

    替换server1_ipserver2_ipserver3_ip为实际的IP地址。

  4. 启动并启用Corosync服务

    sudo systemctl start corosync sudo systemctl enable corosync 
  5. 配置Pacemaker: 在所有节点上创建Pacemaker配置文件/etc/pacemaker/cib.xml,定义集群资源和约束。

  6. 启动并启用Pacemaker服务

    sudo systemctl start pacemaker sudo systemctl enable pacemaker 
  7. 配置Patroni: 在每台服务器上创建Patroni配置文件/etc/patroni.yml,指定PostgreSQL数据目录、监听地址、认证信息等。例如:

    scope: postgresql name: postgresql@server1 namespace: /db/ restapi: listen: 0.0.0.0:8008 connect_address: server1_ip etcd: host: 127.0.0.1:2379 scheme: http bootstrap: dcs: ttl: 30 loop_wait: 10 retry_timeout: 10 maximum_lag_on_failover: 1048576 postgresql: use_pg_rewind: true use_slots: true parameters: wal_level: replica max_connections: 100 hot_standby: on postgresql: listen: 0.0.0.0:5432 connect_address: server1_ip data_dir: /var/lib/pgsql/data pg_hba: - host replication replicator 0.0.0.0/0 md5 - host all all 0.0.0.0/0 md5 authentication: replication: username: replicator password: your_password resources: - name: postgresql type: postgresql check: conninfo operators: - role: Master - role: Standby - role: Monitor - role: Promotable - role: Slave - role: Unreachable 

    替换server1_ip为实际的IP地址,并设置合适的用户名和密码。

  8. 启动Patroni

    sudo systemctl start patroni sudo systemctl enable patroni 
  9. 验证集群状态: 使用crm_mon命令查看集群状态,确保所有资源都已正确配置并运行。

    crm_mon -f 

请注意,这只是一个基本的指南,实际部署时可能需要根据具体需求进行调整。在生产环境中部署之前,建议详细阅读Patroni和Corosync的官方文档,并进行充分的测试。

0