跳到内容
标志
雷竞技下载官网Percona产品文档
部署在RHEL或CentOS上
初始化搜索
    雷竞技下载官网percona / postgresql-docs
    雷竞技下载官网percona / postgresql-docs
    • 雷竞技下载官网Percona Distribution for PostgreSQL 14 Documentation
        • 概述
        • 安装在Debian和Ubuntu上
        • 安装在RHEL和衍生产品上
        • 为Postgr雷竞技下载官网eSQL扩展启用Percona Distribution
        • 仓库概述
      • 从PostgreSQL迁移到Percona Distr雷竞技下载官网ibution for PostgreSQL
      • 将Percona D雷竞技下载官网istribution for PostgreSQL从13升级到14
      • 针对PostgreSQL的Perc雷竞技下载官网ona发行版的小升级
      • pg-stat-raybet雷竞技竞猜在线官网monitor
        • 高可用性
        • 部署在Debian或Ubuntu上
        • 部署在RHEL或CentOS上
          • 先决条件
          • 在/etc/hosts文件中设置主机名
          • 配置ETCD分布式存储
          • 安装Percon雷竞技下载官网a Distribution for PostgreSQL
          • 配置Patroni
          • HAProxy配置
        • 测试Patroni PostgreSQL集群
        • 备份和灾难恢复
        • 为PostgreSQL部署Percona Distribution备份容灾解决方案雷竞技下载官网
      • LDAP身份验证
    • 卸载
      • 发行说明索引
      • 雷竞技下载官网Percona Distribution for PostgreSQL 14.7 (2023-03-23)
      • 雷竞技下载官网Percona Distribution for PostgreSQL 14.6 (2022-11-23)
      • 雷竞技下载官网Percona Distribution for PostgreSQL 14.5 (2012-09-05)
      • 雷竞技下载官网Percona Distribution for PostgreSQL 14.4 (2012-06-27)
      • 雷竞技下载官网Percona Distribution for PostgreSQL 14.3 (2012-06-01)
      • 雷竞技下载官网Percona Distribution for PostgreSQL 14.2第二次更新(2022-05-05)
      • 雷竞技下载官网Percona Distribution for PostgreSQL 14.2 Update (2012-04-14)
      • 雷竞技下载官网Percona Distribution for PostgreSQL 14.2 (2017-03-16)
      • 雷竞技下载官网Percona Distribution for PostgreSQL 14.1第二次更新(2012-12-07)
      • 雷竞技下载官网Percona Distribution for PostgreSQL 14.1 Update (2012-12-02)
      • 雷竞技下载官网Percona Distribution for PostgreSQL 14.1 (2011-11-22)
    • 许可

    • 先决条件
    • 在/etc/hosts文件中设置主机名
    • 配置ETCD分布式存储
    • 安装Percon雷竞技下载官网a Distribution for PostgreSQL
    • 配置Patroni
    • HAProxy配置

    在RHEL或CentOS上使用Patroni部署PostgreSQL以获得高可用性¶

    本指南介绍了如何在Red Hat Enterprise Linux或CentOS上使用Patroni建立一个高可用性的PostgreSQL集群。

    先决条件¶

    对于这个设置,我们将使用运行在CentOS 8上的节点作为基本操作系统,并具有以下IP地址:

    主机名 公网IP地址 内部IP地址
    node1 157.230.42.174 10.104.0.7
    node2 68.183.177.183 10.104.0.2
    node3 165.22.62.167 10.104.0.8
    etcd 159.102.29.166 10.104.0.5
    HAProxy-demo 134.209.111.138 10.104.0.6

    请注意

    在生产(甚至非生产)设置中,PostgreSQL和ETCD节点将在一个私有子网内,没有任何到Internet的公共连接,而HAProxy将在一个不同的子网中,只允许来自选定IP范围的客户端流量。为了简单起见,我们在DigitalOcean VPS环境中实现了这种架构,每个节点都可以通过其内部私有IP访问其他节点。

    中设置主机名设置文件¶

    为了使节点相互感知并允许它们无缝通信,将它们的主机名解析为它们的公共IP地址。修改设置每个PostgreSQL节点的主机名和IP地址文件。以下是设置文件node1:

    127.0.0.1 localhost node1 10.104.0.7 node1 10.104.0.2 node2 10.104.0.8 node3

    的设置档案HAProxy-demo所有PostgreSQL节点的主机名和IP地址:

    127.0.1.1 HAProxy-demo HAProxy-demo 127.0.0.1 localhost 10.104.0.6 HAProxy-demo 10.104.0.7 node1 10.104.0.2 node2 10.104.0.8 node3

    保持设置档案etcd节点不变。

    配置ETCD分布式存储¶

    分布式配置存储有助于在故障转移期间在节点之间建立共识,并将管理三个PostgreSQL实例的配置。尽管Patroni可以与其他分布式共识存储(即Zookeeper, Consul等)一起工作,但最常用的是etcd。

    在此设置中,我们将在专用节点上配置ETCD。

    1. 安装etcdETCD节点上。对于CentOS 8, etcd包可以从Percona存储库中获得:雷竞技下载官网

    2. 安装雷竞技下载官网percona-release。

    3. 启用存储库:

      美元sudo雷竞技下载官网percona-release设置ppg14
    4. 使用以下命令安装etcd包:

      美元sudo好吃。安装etcdpython3-python-etcd
    5. 修改/etc/etcd/etcd.conf配置文件:

    [员]ETCD_DATA_DIR = " / var / lib / etcd /违约。etcd" ETCD_LISTEN_PEER_URLS="http://10.104.0.5:2380,http://localhost:2380" ETCD_LISTEN_CLIENT_URLS="http://10.104.0.5:2379,http://localhost:2379" ETCD_NAME="default" ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.104.0.5:2380" ETCD_ADVERTISE_CLIENT_URLS="http://10.104.0.5:2379" ETCD_INITIAL_CLUSTER="default=http://10.104.0.5:2380" ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster" ETCD_INITIAL_CLUSTER_STATE="new"
    1. 启动etcd要应用更改:

      美元sudosystemctl启用etcd美元sudosystemctl开始etcd美元sudosystemctl状态etcd
    2. 检查etcd集群成员。

      美元sudoetcdctl成员列表

      输出如下所示:

      21d50d7f768f153a: name=default peerURLs=http://10.104.0.5:2380 clientURLs=http://10.104.0.5:2379 isLeader=true

    安装Percon雷竞技下载官网a Distribution for PostgreSQL¶

    安装Percon雷竞技下载官网a Distribution for PostgreSQLnode1,node2和node3从Perc雷竞技下载官网ona库:

    1. 安装雷竞技下载官网percona-release。
    2. 启用存储库:

      美元sudo雷竞技下载官网percona-release设置ppg14
    3. 安装Percon雷竞技下载官网a Distribution for PostgreSQL包。

    重要的

    不初始化集群并启动postgresql服务。集群初始化和设置由Patroni在引导阶段处理。

    配置Patroni¶

    1. 在每个PostgreSQL节点上安装Patroni:

      美元sudo好吃。安装雷竞技下载官网percona-patroni
    2. 安装使Patroni能够与ETCD通信的Python模块。

      美元sudopython3- m皮普安装patroni[etcd]
    3. 创建Patroni所需的目录

      • 创建用于存储配置文件的目录,并使其属于postgres用户。
      美元sudomkdir- p/etc/patroni/美元sudo乔恩- rpostgres: postgres/etc/patroni/
      • 为Patroni创建数据目录。将其所有权更改为postgres用户并限制对它的访问
      美元sudomkdir/数据/ patroni- p $sudo乔恩- rpostgres: postgres/数据/ patroni $sudo修改文件权限700/数据/ patroni
    4. 创建patroni.yml配置文件。

      美元苏postgres美元vim/etc/patroni/patroni.yml
    5. 请指定以下配置:

      范围:postgres名称空间:/ pg_cluster /名字:node1restapi:听:10.104.0.7:8008# PostgreSQL节点IP地址connect_address:10.104.0.7:8008# PostgreSQL节点IP地址etcd:宿主:10.104.0.5:2379# ETCD节点IP地址引导:#本节将在初始化新集群后写入Etcd:///configdcs:ttl:30.loop_wait:10retry_timeout:10maximum_lag_on_failover:1048576postgresql:use_pg_rewind:真正的use_slots:真正的参数:wal_level:副本hot_standby:“上”logging_collector:“上”max_wal_senders:5max_replication_slots:5wal_log_hints:“上”# initdb的一些选项initdb:#注意:它需要是一个列表(一些选项需要值,其他是开关)-编码:use UTF8-data-checksumspg_hba:运行initdb后,在pg_hba.conf中添加以下行-主机复制复制器127.0.0.1/32 md5-主机复制复制器10.104.0.2/32 md5-主机复制复制器10.104.0.8/32 md5-主机复制复制器10.104.0.7/32 md5-主机所有所有0.0.0.0/0 md5# - hostssl all all 0.0.0.0/0 md5一些额外的用户需要在初始化新集群后创建用户:管理:密码:管理选项:-createrole-createdbpostgresql:听:10.104.0.7:5432# PostgreSQL节点IP地址connect_address:10.104.0.7:5432# PostgreSQL节点IP地址data_dir:/数据/ patroni#创建的数据目录bin_dir:/usr/pgsql-14/binpgpass:/ tmp / pgpass0身份验证:复制:用户名:复制因子密码:复制因子超级用户:用户名:postgres密码:postgres参数:unix_socket_directories:“。”标签:nofailover:假noloadbalance:假clonefrom:假nosync:假
    6. 创建的配置文件node2和node3。替换的节点和IP地址node1对那些node2和node3,分别。

    7. 创建systemd单元文件patroni.service在/etc/systemd/system。

      美元sudovim/etc/systemd/system/patroni.service

      在文件中增加如下内容:

      (单位)描述=运行器编排一个高可用性的PostgreSQL后=syslog。目标network.target(服务)类型=简单的用户=postgres集团=postgres#启动光顾流程ExecStart=/bin/patroni /etc/patroni/patroni.yml#发送HUP从patron .yml重新加载ExecReload=/bin/kill -s HUP $MAINPID#只杀死守护进程,而不是它的子进程,所以它会优雅地停止postgresKillMode=过程给服务器一个合理的启动/关闭时间TimeoutSec=30.#不要重新启动服务,如果它崩溃,我们要手动检查数据库的失败重新启动=没有(安装)WantedBy=multi-user.target
    8. 让系统了解新服务:

      美元sudosystemctldaemon-reload美元sudosystemctl启用patroni美元sudosystemctl开始patroni

      故障排除Patroni

      为了确保Patroni已经正常启动,可以使用以下命令查看日志:

      美元sudojournalctl- upatroni.service- nOne hundred.- f

      输出不应该显示任何错误:

      node01 systemd[1]:启动PostgreSQL高可用性管理器Sep 23 12:50:22 node01 patroni[10119]: 20121-09-23 12:50:22 022 INFO:选定的新etcd服务器http://10.104.0.2:2379 Sep 23 12:50:22 node01 patroni[10119]: 20121-09-23 12:50:22 029 INFO:没有更改PostgreSQL配置项,没有重新加载。Sep 23 12:50:22 node01 patroni[10119]: 20121-09-23 12:50:22,168 INFO: Lock owner: None;我是node1 Sep 23 12:50:22 node01 patroni[10119]: 20121-09-23 12:50:22 2,177 INFO:试图引导一个新的集群Sep 23 12:50:22 node01 patroni[10140]:属于这个数据库系统的文件将由用户“postgres”拥有。Sep 23 12:50:22 node01 patroni[10140]:此用户还必须拥有服务器进程。Sep 23 12:50:22 node01 patroni[10140]:数据库集群将使用区域设置“c.t utf -8”初始化。Sep 23 12:50:22 node01 patroni[10140]:默认的文本搜索配置将被设置为"english"。Sep 23 12:50:22 node01 patroni[10140]:启用了数据页校验和。[10140]:创建目录/var/lib/postgresql/12/main…ok Sep 23 12:50:22 node01 patroni[10140]:创建子目录… ok Sep 23 12:50:22 node01 patroni[10140]: selecting dynamic shared memory implementation ... posix Sep 23 12:50:22 node01 patroni[10140]: selecting default max_connections ... 100 Sep 23 12:50:22 node01 patroni[10140]: selecting default shared_buffers ... 128MB Sep 23 12:50:22 node01 patroni[10140]: selecting default time zone ... Etc/UTC Sep 23 12:50:22 node01 patroni[10140]: creating configuration files ... ok Sep 23 12:50:22 node01 patroni[10140]: running bootstrap script ... ok Sep 23 12:50:23 node01 patroni[10140]: performing post-bootstrap initialization ... ok Sep 23 12:50:23 node01 patroni[10140]: syncing data to disk ... ok Sep 23 12:50:23 node01 patroni[10140]: initdb: warning: enabling "trust" authentication for local connections Sep 23 12:50:23 node01 patroni[10140]: You can change this by editing pg_hba.conf or using the option -A, or Sep 23 12:50:23 node01 patroni[10140]: --auth-local and --auth-host, the next time you run initdb. Sep 23 12:50:23 node01 patroni[10140]: Success. You can now start the database server using: Sep 23 12:50:23 node01 patroni[10140]: /usr/lib/postgresql/14/bin/pg_ctl -D /var/lib/postgresql/14/main -l logfile start Sep 23 12:50:23 node01 patroni[10156]: 2021-09-23 12:50:23.672 UTC [10156] LOG: redirecting log output to logging collector process Sep 23 12:50:23 node01 patroni[10156]: 2021-09-23 12:50:23.672 UTC [10156] HINT: Future log output will appear in directory "log". Sep 23 12:50:23 node01 patroni[10119]: 2021-09-23 12:50:23,694 INFO: postprimary pid=10156 Sep 23 12:50:23 node01 patroni[10165]: localhost:5432 - accepting connections Sep 23 12:50:23 node01 patroni[10167]: localhost:5432 - accepting connections Sep 23 12:50:23 node01 patroni[10119]: 2021-09-23 12:50:23,743 INFO: establishing a new patroni connection to the postgres cluster Sep 23 12:50:23 node01 patroni[10119]: 2021-09-23 12:50:23,757 INFO: running post_bootstrap Sep 23 12:50:23 node01 patroni[10119]: 2021-09-23 12:50:23,767 INFO: Software Watchdog activated with 25 second timeout, timing slack 15 seconds Sep 23 12:50:23 node01 patroni[10119]: 2021-09-23 12:50:23,793 INFO: initialized a new cluster Sep 23 12:50:33 node01 patroni[10119]: 2021-09-23 12:50:33,810 INFO: no action. I am (node1) the leader with the lock Sep 23 12:50:33 node01 patroni[10119]: 2021-09-23 12:50:33,899 INFO: no action. I am (node1) the leader with the lock Sep 23 12:50:43 node01 patroni[10119]: 2021-09-23 12:50:43,898 INFO: no action. I am (node1) the leader with the lock Sep 23 12:50:53 node01 patroni[10119]: 2021-09-23 12:50:53,894 INFO: no action. I am (node1) the leader with the

      一个常见的错误是Patroni抱怨pg_hba.conf文件中缺少适当的条目。如果看到此类错误,必须手动添加或修复该文件中的条目,然后重新启动服务。

      改变守护神。yml文件和重新启动服务在这里不会有任何影响,因为bootstrap部分指定了在节点中首次启动PostgreSQL时应用的配置。即使修改了Patroni配置文件并重新启动服务,它也不会重复该过程。

      如果Patroni已经正常启动,您应该能够使用以下命令本地连接到PostgreSQL节点:

      “{。$ sudo psql -U postgres . bash data-prompt= " $ "

      命令输出应该如下所示:
      psql(14.1)输入“help”获取帮助。

      postgres = # ' ' '

    9. 在其余节点上配置、启用和启动Patroni。

    10. 当所有节点都正常运行后,可以使用以下命令查看集群状态:
    美元sudopatronictl- c/etc/patroni/patroni.yml列表+集群:postgres(7011110722654005156)-----------+|成员|宿主|角色|状态|TL|滞后在MB|+--------+-------+---------+---------+----+-----------+|node1|node1|领袖|运行|1|||node2|node2|副本|运行|1|0||node3|node3|副本|运行|1|0|+--------+-------+---------+---------+----+-----------+

    HAProxy配置¶

    HAProxy节点将接受客户端连接请求,并将这些请求路由到PostgreSQL集群的主节点。这样,客户机应用程序就不必知道底层集群中的哪个节点是当前的主节点。它所需要做的就是访问一个HAProxy URL并在那里发送它的读/写请求。在后台,HAProxy将连接路由到一个健康节点(只要至少有一个健康节点可用),并确保客户端应用程序请求永远不会被拒绝。

    HAProxy能够以轮询的方式将写请求路由到主节点,并将读请求路由到辅助节点,这样就不会不必要地加载辅助实例。为此,在HAProxy配置文件中提供不同的端口。在这个部署中,写路由到端口5000,读路由到端口5001。

    1. 在服务器上安装HAProxyHAProxy-demo节点:

      美元sudo好吃。安装haproxy
    2. HAProxy配置文件的路径为:/etc/haproxy/haproxy.cfg。在此文件中指定以下配置。

      100年全球maxconn默认日志全球模式tcp重试2客户机超时30 m超时连接4 s超时服务器30 m超时检查5 s听统计模式http绑定*:7000年统计数据支持数据uri /听主要结合*:5000选项httpchk /一级http-check期待地位200默认的服务器国米3 s下降3上升2 on-marked-down shutdown-sessions服务器node1 node1:5432 maxconn 100检查端口8008服务器node2 node2:5432 maxconn 100检查端口8008服务器node3 node3:5432 maxconn 100检查端口8008Listen standby balance roundbin bind *:5001 option HTTPCHK /replica http-check expect status 200 default-server inter3s fall 3 rise 2 on-mark -down shutdown-sessions server node1 node1:5432 maxconn 100 check port 8008 server node2 node2:5432 maxconn 100 check port 8008 server node3 node3:5432 maxconn 100 check port 8008

      HAProxy将使用Patroni托管的REST api来检查每个PostgreSQL节点的健康状态,并适当地路由请求。

    3. 启用SELinux布尔值以允许HAProxy绑定到非标准端口:

      美元sudosetsebool- phaproxy_connect_any在
    4. HAProxy重启:

      美元sudosystemctl重新启动haproxy
    5. 检查HAProxy日志是否有错误:

      美元sudojournalctl- uhaproxy.service- nOne hundred.- f

    联系我们

    如需免费技术帮助,请访问Percona雷竞技下载官网社区论坛。

    要报告错误或提交功能请求,请打开JIRA票。

    付费支持和管理或咨询服务,请联系雷竞技下载官网Percona销售。


    最后更新:2022年12月5日
    创建:2021年12月15日
    雷竞技下载官网Percona LLC,©2023
    用MkDocs的材料

    饼干的同意

    我们使用cookie来识别您的重复访问和偏好,以及衡量我们文档的有效性,以及用户是否找到了他们正在搜索的内容。在您的同意下,您将帮助我们更好地编写文档。

    Baidu
    map