
Patroni是一个用于创建定制化PostgreSQL高可用(HA)解决方案的模板,采用Python开发,并结合分布式配置存储(如ZooKeeper、etcd、Consul或Kubernetes)实现高可用性。它源自Compose的Governor项目分支,包含更多新功能,适用于数据库工程师、DBA、DevOps工程师和SRE在数据中心或其他环境中快速部署HA PostgreSQL。
Kubernetes用户注意:Patroni可原生运行在Kubernetes上,详见https://github.com/zalando/patroni/blob/master/docs/kubernetes.rst%E3%80%82
maximum_lag_on_failover)和同步复制bashbrew install postgresql etcd haproxy libyaml python
自psycopg2-2.8起,默认不再安装二进制版本,需手动选择安装方式:
通过系统包管理器:
bash# Debian/Ubuntu (Python 2) sudo apt-get install python-psycopg2 # Debian/Ubuntu (Python 3) sudo apt-get install python3-psycopg2 # RedHat/Fedora/CentOS (Python 2) sudo yum install python-psycopg2
安装二进制包:
bashpip install psycopg2-binary
从源码安装:
bashpip install psycopg2>=2.5.4
使用pip安装Patroni及所需依赖:
bashpip install patroni[dependencies]
其中dependencies可包含以下一项或多项:
etcd:使用etcd作为DCS时需安装python-etcd模块consul:使用Consul作为DCS时需安装python-consul模块zookeeper:使用ZooKeeper作为DCS时需安装kazoo模块exhibitor:使用Exhibitor作为DCS时需安装kazoo模块(与ZooKeeper依赖相同)kubernetes:使用Kubernetes作为DCS时需安装kubernetes模块aws:使用AWS回调时需安装boto模块示例:安装Patroni及etcd和AWS依赖
bashpip install patroni[etcd,aws]
注意:外部工具(如WAL-E)需独立安装。
启动分布式配置存储(以etcd为例):
bashetcd --data-dir=data/etcd
启动Patroni节点(不同终端运行):
bash./patroni.py postgres0.yml ./patroni.py postgres1.yml
配置HAProxy(提供单一连接端点):
bashhaproxy -f haproxy.cfg
连接到集群:
bashpsql --host 127.0.0.1 --port 5000 postgres
完整配置说明见https://github.com/zalando/patroni/blob/master/docs/SETTINGS.rst%EF%BC%8C%E9%85%8D%E7%BD%AE%E7%A4%BA%E4%BE%8B%E5%8F%AF%E5%8F%82%E8%80%83https://github.com/zalando/patroni/blob/master/postgres0.yml%E3%80%82
通过环境变量覆盖配置的详细说明见https://github.com/zalando/patroni/blob/master/docs/ENVIRONMENT.rst%E3%80%82
Patroni默认使用PostgreSQL异步流复制,可通过maximum_lag_on_failover设置控制故障转移时的最大延迟(字节数)。也支持同步复制以提供更强的数据持久性,详见https://github.com/zalando/patroni/blob/master/docs/replication_modes.rst%E3%80%82
应用连接时应使用非超级用户。Patroni需要数据库访问权限以正常运行,若应用使用超级用户可能耗尽连接池(包括superuser_reserved_connections预留的连接),导致Patroni无法访问主库,引发异常行为。




探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务