为共享etcd集群的Patroni/Postgres配置etcd账号密码认证
多Patroni集群共用etcd的用户密码认证配置指南
一、初始化阶段配置(新Patroni+etcd集群)
1. 启用etcd认证并创建隔离用户/角色
- 先以无认证模式启动etcd集群,执行命令创建root管理员用户:
输入密码后,为每个Patroni集群创建专属etcd用户(例如etcdctl user add rootpatroni_cluster1、patroni_cluster2):etcdctl user add patroni_cluster1 - 创建对应角色并分配集群专属前缀的读写权限(实现集群间etcd资源隔离):
etcdctl role add patroni_role1 etcdctl role grant-permission patroni_role1 readwrite /patroni/cluster1/* - 将用户绑定到对应角色:
etcdctl user grant-role patroni_cluster1 patroni_role1 - 启用etcd全局认证:
etcdctl auth enable
2. 配置Patroni的etcd认证参数
在Patroni配置文件(patroni.yml)中,修改etcd连接段,添加认证信息及专属前缀:
etcd: hosts: ["etcd-node1:2379", "etcd-node2:2379", "etcd-node3:2379"] username: patroni_cluster1 password: your_cluster_password prefix: /patroni/cluster1
每个Patroni集群使用独立的用户名、密码和前缀,严格隔离资源。
二、为已运行的Patroni集群添加etcd认证
1. 临时关闭etcd认证(需停机窗口)
- 停止所有Patroni节点服务:
systemctl stop patroni - 修改所有etcd节点的配置文件(如
/etc/etcd/etcd.conf.yml),关闭认证:auth: enabled: false - 重启所有etcd节点:
systemctl restart etcd
2. 创建专属用户与权限
参照初始化阶段的步骤,为已运行集群创建专属etcd用户、角色,并授予其现有etcd前缀的读写权限(例如原前缀为/patroni/existing_cluster,则授权该路径)。
3. 重新启用etcd认证
执行命令开启全局认证:
etcdctl auth enable
4. 更新Patroni配置并重启
修改每个Patroni节点的patroni.yml,添加etcd的username和password参数,指定对应集群的认证信息,然后重启服务:
systemctl start patroni
5. 验证配置有效性
检查Patroni集群状态,确认连接正常:
patronictl -c /etc/patroni/patroni.yml list
用etcdctl验证用户权限,确保只能访问专属前缀:
etcdctl --user patroni_cluster1:your_password get /patroni/cluster1/leader
三、关键注意事项
- 必须为每个Patroni集群分配独立的etcd前缀和专属用户,彻底避免跨集群资源干扰。
- 操作已运行集群时,需提前规划停机窗口,确保Patroni停止后再修改etcd配置,防止连接异常。
- 修改前建议备份etcd数据,避免配置失误导致数据丢失。
- 可通过
etcdctl --user命令提前验证用户权限,确保配置符合预期。
内容的提问来源于stack exchange,提问作者vrms
相关产品推荐
相关产品推荐

