PostgreSQL高可用性Orchestrator和CLI
patroni的Python项目详细描述
用户:postgresql ha的模板,带有zookeeper、etcd或consul
您可以在 patroni.readthedocs.io 上找到此文档的一个版本,该版本可搜索且更易于导航。
使用PostgreSQL运行高可用性的方法有很多;有关列表,请参阅PostgreSQL文档
patroni是一个模板,您可以使用python创建自己的定制的高可用性解决方案,并且为了获得最大的可访问性,它是一个分布式配置存储,比如zookeeper , ETCD , 领事 或 领事 。数据库工程师、DBA、DevOps工程师和SRE希望在数据中心或其他任何地方快速部署HA PostgreSQL,希望他们会发现它很有用。
我们称之为"模板",因为它远远不是一个一刀切或即插即用的复制系统。它将有自己的警告。明智使用。
注意kubernetes用户 :用户可以在kubernetes上运行。请看一下用户文档中的"kubernetes"一章。
帕罗尼如何工作
patroni起源于compose的项目,它是州长的分支。它包括许多新功能。
有关基于Docker与用户部署的示例,请参见目前在Zalando使用的spilo。
有关其他背景信息,请参见:
- 自动上的大象:ha clustered postgresql with helm ,由Josh Berkus和Oleksii Kliukin在2017年柏林库贝肯的演讲
- 与kubernetes和patroni的PostgreSQL HA ,Josh Berkus在kubecon 2016的演讲(视频)
- 2016年2月zalando科技博客文章
社区
有两个地方可以与用户社区建立联系:在github上,通过issues和prs,在github上,在postgresql slack上,在频道上。如果您正在使用patroni,或只是感兴趣,请加入我们。
技术要求/安装
Mac OS的先决条件
要在Mac上安装需求,请运行以下命令:
brew install postgresql etcd haproxy libyaml python
心理2
从 psycopg2-2.8开始, 默认情况下将不再安装psycopg2的二进制版本。从源代码安装它需要c编译器和postgres+python开发包。 因为在python世界中,不可能将依赖项指定为 psycopg2或 psycopg2二进制文件
有几个选项可供选择:
- 使用发行版中的软件包管理器
sudo apt-get install python-psycopg2 # install python2 psycopg2 module on Debian/Ubuntu sudo apt-get install python3-psycopg2 # install python3 psycopg2 module on Debian/Ubuntu sudo yum install python-psycopg2 # install python2 psycopg2 on RedHat/Fedora/CentOS
- 从二进制软件包安装psycopg2
pip install psycopg2-binary
- 从源代码安装psycopg2
pip install psycopg2>=2.5.4
PIP的一般安装
用户可以安装PIP:
pip install patroni[dependencies]
其中依赖项可以为空,也可以由以下一项或多项组成:
< DL>例如,要将patroni和etcd的依赖项一起安装为dcs和aws回调的命令是:
pip install patroni[etcd,aws]
请注意,用于调用副本创建或自定义bootstap脚本(即wal-e)的外部工具应独立于用户安装。
运行和配置
要开始,请从不同的终端执行以下操作:
> etcd --data-dir=data/etcd > ./patroni.py postgres0.yml > ./patroni.py postgres1.yml
然后您将看到一个高可用性集群启动。测试yaml文件中的不同设置以查看集群的行为如何更改。杀死一些组件以查看系统的行为。
添加更多的postgres*.yml文件以创建更大的集群。
patroni提供了一个配置,它将为您的应用程序提供一个连接到集群领导的端点。要配置, 运行:
> haproxy -f haproxy.cfg
> psql --host 127.0.0.1 --port 5000 postgres
yaml配置
点击 此处 获取有关etcd、consul和zookeeper设置的全面信息。例如,请参见 postgres0.yml 。
复制选项
用户使用Postgres的流复制,默认情况下是异步的。用户的异步复制配置允许在故障转移时设置最大延迟。此设置可确保如果跟随者在引导者之后超过特定字节数,则不会发生故障转移。应根据业务需求增加或减少此设置。也可以使用同步复制来获得更好的持久性保证。有关详细信息,请参见复制模式文档。
应用程序不应使用超级用户
从应用程序连接时,始终使用非超级用户。用户需要访问数据库才能正常工作。通过使用应用程序中的超级用户,可以使用 超级用户保留的连接设置潜在地使用整个连接池,包括为超级用户保留的连接。如果由于连接池已满,用户无法访问主池,则行为将不受欢迎。