• 配置 `PostgreSQL` 与 `Keepalived` 以实现高可用性


    配置 PostgreSQLKeepalived 以实现高可用性通常包括以下步骤:

    PostgreSQL 配置

    1. 安装 PostgreSQL:在两台服务器上安装相同版本的 PostgreSQL。

      sudo yum install postgresql-server postgresql-contrib
      
      • 1
    2. 初始化数据库:在两台服务器上初始化 PGDATA 目录。

      sudo postgresql-setup initdb
      
      • 1
    3. 配置主从复制:设置一台服务器为主节点,另一台为从节点。

      • 在主服务器上

        • 修改 postgresql.conf 文件以允许复制。
          wal_level = replica
          max_wal_senders = 3
          wal_keep_segments = 64
          archive_mode = on
          archive_command = 'cp %p /path_to_archive/%f'
          
          • 1
          • 2
          • 3
          • 4
          • 5
        • pg_hba.conf 文件中允许从服务器的连接。
          host replication all 192.168.9.183/32 md5
          
          • 1
      • 在从服务器上

        • 停止 PostgreSQL 服务。
          sudo systemctl stop postgresql
          
          • 1
        • 清空 PGDATA 目录。
        • 从主服务器上使用 pg_basebackup 进行基础备份。
          pg_basebackup -h 192.168.9.195 -D /var/lib/pgsql/data -U replicator -v -P --wal-method=stream
          
          • 1
        • 创建 recovery.conf 文件以连接到主服务器。
          standby_mode = 'on'
          primary_conninfo = 'host=192.168.9.195 port=5432 user=replicator password=yourpassword'
          trigger_file = '/tmp/postgresql.trigger.5432'
          
          • 1
          • 2
          • 3
    4. 启动 PostgreSQL 服务:在两台服务器上启动服务。

      sudo systemctl start postgresql
      
      • 1

    Keepalived 配置

    1. 安装 Keepalived:如前所述,在两台服务器上安装 keepalived
      sudo yum install keepalived -y

    2. 配置 Keepalived:编辑 /etc/keepalived/keepalived.conf 文件,在两台服务器上配置主从。

      • 在主服务器上

        vrrp_instance VI_1 {
            state MASTER
            interface ens160
            virtual_router_id 51
            priority 100
            advert_int 1
            authentication {
                auth_type PASS
                auth_pass 1111
            }
            virtual_ipaddress {
                192.168.9.200
            }
            track_script {
                chk_postgresql
            }
        }
        
        vrrp_script chk_postgresql {
            script "/usr/lib/keepalived/check_postgres.sh"
            interval 2
            weight 2
        }
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19
        • 20
        • 21
        • 22
        • 23
      • 在从服务器上

        vrrp_instance VI_1 {
            state BACKUP
            interface ens160
            virtual_router_id 51
            priority 50
            advert_int 1
            authentication {
                auth_type PASS
                auth_pass 1111
            }
            virtual_ipaddress {
                192.168.9.200
            }
            track_script {
                chk_postgresql
            }
        }
        
        vrrp_script chk_postgresql {
            script "/usr/lib/keepalived/check_postgres.sh"
            interval 2
            weight 2
        }
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19
        • 20
        • 21
        • 22
        • 23
    3. 创建 PostgreSQL 检查脚本:在两台服务器上创建脚本 /usr/lib/keepalived/check_postgres.sh,用于检查 PostgreSQL 服务状态。

      #!/bin/bash
      PSQL="/usr/bin/psql"
      PGUSER="postgres"
      PGDATABASE="yourdatabase"
      
      $PSQL -U $PGUSER -d $PGDATABASE -c "select 1;" >/dev/null 2>&1
      if [ $? != 0 ]; then
          exit 1
      fi
      exit 0
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10

      确保脚本可执行:

      sudo chmod +x /usr/lib/keepalived/check_postgres.sh
      
      • 1
    4. 启动 Keepalived:在两台服务器上启动 Keepalived 服务。

      sudo systemctl start keepalived
      sudo systemctl enable keepalived
      
      • 1
      • 2

    测试和

    验证

    • 验证主从复制:确保主从复制正确设置且在运行。
    • 测试 Failover:尝试停止主服务器上的 PostgreSQL 服务,确保 Keepalived 将虚拟 IP 地址转移到从服务器。
    • 监控日志:查看 Keepalived 和 PostgreSQL 日志,确保没有错误。

    配置 PostgreSQLKeepalived 时,一定要考虑数据一致性和故障转移的机制。这通常涉及仔细的规划和测试,以确保在生产环境中可靠地运行。

  • 相关阅读:
    linux修改打开文件数限制open file limit
    NodeJs模块化
    Python3 数据结构
    23种设计模式(十九)职责链模式(阁瑞钛伦特软件-九耶实训)
    javaEE高阶
    【附源码】计算机毕业设计JAVA衡师社团管理系统
    ResNet详解:网络结构解读与PyTorch实现教程
    golang opt-in transparent telemetry
    行业追踪,2023-09-11
    C++---AVL树
  • 原文地址:https://blog.csdn.net/u011197085/article/details/134520121