You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为共享etcd集群的Patroni/Postgres配置etcd账号密码认证

多Patroni集群共用etcd的用户密码认证配置指南

一、初始化阶段配置(新Patroni+etcd集群)

1. 启用etcd认证并创建隔离用户/角色

  • 先以无认证模式启动etcd集群,执行命令创建root管理员用户:
    etcdctl user add root
    
    输入密码后,为每个Patroni集群创建专属etcd用户(例如patroni_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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 11:42:32