searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

patroni使用 etcd集群现状分析

2023-06-19 02:15:40
20
0
Zalando Postgres Operator使用patroni提供kubernetes环境下postgresql集群的高可用,patroni使用etcd集群保存高可用数据。
patroni使用DCS可以选择共用k8s集群的etcd,也可以连接独立etcd。关于patroni使用etcd集群的影响分析如下。
 
operator相关配置
关于patroni使用DCS是否为共用k8s集群etcd,体现在operatorConfiguration配置中:
etcd_host: ""
如果etcd_host为空,表示共用k8s集群etcd;——默认值
如果希望使用独立etcd集群,则需在etcd_host配置访问地址;
 
现状
1、如果operatorConfiguration配置etcd_host为空,那么operator会置环境变量DCS_ENABLE_KUBERNETES_API为true;
2、如果operatorConfiguration配置etcd_host不为空,那么operator检测到配置,首先置DCS_ENABLE_KUBERNETES_API为false,将host值写入到环境变量ETCD_HOST中。
spilo 检测到环境变量ETCD_HOST后,会将值写入到patroni 配置文件中,形式如下:
bootstrap:
  ....
etcd:
  host: 10.104.89.255:2379
postgresql:
   .....
对于etcd_host不为空的情况,目前支持现状为:
        对于使用未开启权限认证的etcd集群,patroni可以正常运行;
        如果etcd集群开启认证,则会报错Error:  110: The request requires  user authentication;
目前patroni是支持使用开启认证的etcd集群,只是operator层面没有暴露etcd username/password相关配置;
 
持久化数据分析
patroni模块通过etcd持久化的数据如下:
  •  数据量
             根据以上数据分析,单个集群在etcd中持久化的数据为KB级;
  • *读写请求
             持续watch /service/{pg-cluster-name}目录一段时间:
   
               在集群正常运行过程中,对etcd的数据操作主要为leader key的CAS操作,以及pg集群各节点的状态更新;
               以上数据更新频率取决于patroni 配置loop_wait,默认值为10s;
               假设管理pg集群个数为M,每个集群规模为一主N从,反映到etcd的tps大约是MN/loop_wait,在集群规模不是超大情况下,请求量压力较小;
               当然除以上数据操作外,还有各个节点对leader key的watch操作;
 
0条评论
0 / 1000
z****n
5文章数
0粉丝数
z****n
5 文章 | 0 粉丝
原创

patroni使用 etcd集群现状分析

2023-06-19 02:15:40
20
0
Zalando Postgres Operator使用patroni提供kubernetes环境下postgresql集群的高可用,patroni使用etcd集群保存高可用数据。
patroni使用DCS可以选择共用k8s集群的etcd,也可以连接独立etcd。关于patroni使用etcd集群的影响分析如下。
 
operator相关配置
关于patroni使用DCS是否为共用k8s集群etcd,体现在operatorConfiguration配置中:
etcd_host: ""
如果etcd_host为空,表示共用k8s集群etcd;——默认值
如果希望使用独立etcd集群,则需在etcd_host配置访问地址;
 
现状
1、如果operatorConfiguration配置etcd_host为空,那么operator会置环境变量DCS_ENABLE_KUBERNETES_API为true;
2、如果operatorConfiguration配置etcd_host不为空,那么operator检测到配置,首先置DCS_ENABLE_KUBERNETES_API为false,将host值写入到环境变量ETCD_HOST中。
spilo 检测到环境变量ETCD_HOST后,会将值写入到patroni 配置文件中,形式如下:
bootstrap:
  ....
etcd:
  host: 10.104.89.255:2379
postgresql:
   .....
对于etcd_host不为空的情况,目前支持现状为:
        对于使用未开启权限认证的etcd集群,patroni可以正常运行;
        如果etcd集群开启认证,则会报错Error:  110: The request requires  user authentication;
目前patroni是支持使用开启认证的etcd集群,只是operator层面没有暴露etcd username/password相关配置;
 
持久化数据分析
patroni模块通过etcd持久化的数据如下:
  •  数据量
             根据以上数据分析,单个集群在etcd中持久化的数据为KB级;
  • *读写请求
             持续watch /service/{pg-cluster-name}目录一段时间:
   
               在集群正常运行过程中,对etcd的数据操作主要为leader key的CAS操作,以及pg集群各节点的状态更新;
               以上数据更新频率取决于patroni 配置loop_wait,默认值为10s;
               假设管理pg集群个数为M,每个集群规模为一主N从,反映到etcd的tps大约是MN/loop_wait,在集群规模不是超大情况下,请求量压力较小;
               当然除以上数据操作外,还有各个节点对leader key的watch操作;
 
文章来自个人专栏
中间件云原生实践
5 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0