pgpool是postgresql-ha高可靠集群的代理工具,提供了负载均衡、连接池、自动故障转移、在线恢复、复制、看门狗等功能,bitnami提供了postgresql数据库的helm的安装包,可以很容易进行postgresql高可靠k8s环境的安装,但bitnami提供的镜像安全漏洞很多,如下图:

不得不使用ubuntu 20重新进行构建镜像,费用了九牛二虎之力构建的镜像部署后,postgresql-ha可以正常启动,但pgpool无法正常启动,总报failed to authenticate with backend using SCRAM 导致pgpool总是重启,在网上也没找到这种错误的解决方法。

使用bitnami/postgresql-ha原镜像都没问题,可一换成自己构建的镜像就出这个错,不得不怀疑我构建的镜像有问题,但能有什么问题呢,测试三个节点都正常,百思不得其解。看来得深入的了解pgpool的配置的,使用SCRAM进行搜索,发现升级PostgreSQL密码到SCRAM的方法 - 墨天轮介绍SCRAM,原来postgresql客户端认证有两种方式:MD5与scram-sha-256,通过以下命令可以查看到postgresql使用哪种认证方式:

postgres=# SELECT rolname, rolpassword ~ '^SCRAM-SHA-256\$' AS has_upgraded
postgres-# FROM pg_authid
postgres-# WHERE rolcanlogin;rolname  | has_upgraded
----------+--------------postgres | trepmgr   | t
(2 rows)

如果是t,说明使用scram-sha-256密码加密方式,可以进一步使用下面的命令验证一下

postgres=# select passwd from pg_shadow where usename = 'postgres';passwd
---------------------------------------------------------------------------------------------------------------------------------------SCRAM-SHA-256$4096:iAmKIA8/wN/yEXLBzxjBFA==$mS54MmmMdXnnkR8y6ZZ2zsbkOyQokTVzk0zZvSN1NSs=:SNsbmxL+dIuZkfl9+F1v9XAZwJjDB1f9/wy6rC0WG24=
(1 row)

进一步证实了的确是scram-sha-256方式认证的。

再看一下bitnami/postgresql-ha镜像里的这两项参数

postgres=# SELECT rolname, rolpassword ~ '^SCRAM-SHA-256\$' AS has_upgraded
postgres-# FROM pg_authid
postgres-# WHERE rolcanlogin;rolname  | has_upgraded
----------+--------------postgres | frepmgr   | f
(2 rows)

哦哦哦,这里是f,给发非scram-sha-256方式,再查查密码

postgres=# select passwd from pg_shadow where usename = 'postgres';passwd
-------------------------------------md5a3556571e93b0d20722ba62be61e8c2d
(1 row)

看看看,人家是用md5的。

找到这,情况比较明朗了,看来自己构建的容器没问题,安全性更高了,只是pgpool还是使用默认的方式md5,所以验证不能过,看看是不是这样,经过一翻研究,发现pgpool的密码是放在conf/pool_pass的文件里,进入容器中看看

I have no name!@postgresql-ha-pgpool-6d76b7d57b-q47bw:/opt/bitnami/pgpool/conf$ ls
pgpool.conf  pool_hba.conf  pool_passwd
I have no name!@postgresql-ha-pgpool-6d76b7d57b-q47bw:/opt/bitnami/pgpool/conf$ cat pool_passwd
postgres:md5a3556571e93b0d20722ba62be61e8c2d

的确是md5方式,到此,情况明了了,可是如何让他变成scram-sha-256认证方式呢?那就看bitnami/pgpool说明文档中找吧,很可惜,没找到与scram相关的配置。难道bitnami/pgpool不支持scram认证方式吗?再用scram为关键字从bitnami/pgpool的脚本中找,果然在libpgpool.sh的脚本中找到了

可这些代码只是校验用的,并不是改变认证方式的。没什么用啊!!!再找找,找到了

pgpool_generate_password_file(),生成密码文件,老外代码写的就是好,脚本文件都写得很明了,看来跟PGPOOL_AUTHENTICATION_METHOD这个变量有关。找到这,基本找到解决方案了,在创建容器时,设置这个变量就好了,bitnami/pgpool没有提供直接的设置值的方法,但提供了pgpool.extraEnvVars这个设置环境变量的功能,执行helm安装时,设置这个变量就行了,执行helm install时,加上这个参数

 --set pgpool.extraEnvVars\[0\].name="PGPOOL\_AUTHENTICATION\_METHOD",pgpool.extraEnvVars\[0\].value="scram\-sha\-256"

容器可以正常了启动了。再进入到pgpool容器中,看一下pool_passwd文件

I have no name!@postgresql-ha-pgpool-848bbcfcdb-rlhpn:/opt/bitnami/pgpool/conf$ cat pool_passwd
postgres:AESusCdlqVhMOLDhpD6RdbWtA==

变成AES加密的了。使用客户端连接pgpool的svc,完美,一点问题没有。

bitnami 的pgpool连接postgresql-ha出错SCRAM相关推荐

  1. PHP PDO连接PostgreSQL报错 SCRAM authentication requires libpq version 10 or above in解决

    文章目录 一.PHP pdo方式连接PostgreSQL数据库 二.连接时发现如下报错 三.解决办法 一.PHP pdo方式连接PostgreSQL数据库 function pdo_query_pos ...

  2. 使用 bitnami/postgresql-repmgr 镜像快速设置 PostgreSQL HA

    什么是 PostgreSQL HA? 此 PostgreSQL 集群解决方案包括 PostgreSQL 复制管理器(replication manager),这是一种用于管理 PostgreSQL 集 ...

  3. PostgreSQL HA集群高可用方案介绍 pgpool-II+PostgreSQL HA方案部署

    PostgreSQL HA集群高可用方案介绍 & pgpool-II+PostgreSQL HA方案部署 一.PostgreSQL HA集群高可用方案介绍 二.pgpool-II+Postgr ...

  4. PostgreSQL 14和SCRAM认证的改变--应该迁移到SCRAM?

    PostgreSQL 14和SCRAM认证的改变--应该迁移到SCRAM? 最近,一些PG使用者反馈他们切换到PG14后,遇到了一些连接错误. "FATAL:  password authe ...

  5. pgpool 之四 2 pgpool + 2 postgresql 的 stream replication 模式

    os: ubuntu 16.04 db: postgresql 9.6.8 pgpool: pgpool-II-3.7.7 pgpool 简介 准确的名字是Pgpool-II,这里简称为pgpool. ...

  6. Python3连接PostgreSQL(10.5)数据库

    一.Psycopg简介 Psycopg是Python编程语言中最流行的PostgreSQL数据库适配器.它的主要功能是完整实现Python DB API 2.0规范和线程安全(多个线程可以共享相同的连 ...

  7. Entity Freamwork 6连接PostgreSql数据库

    原文 Entity Freamwork 6连接PostgreSql数据库 开发环境 VS 2015  Update 1   Postgre Sql 9.4 使用过程 1.使用Nuget在项目中添加对E ...

  8. java编译POSTGRESQL_Java连接PostgreSQL数据库(安装环境 + 简易测试代码)

    --[楼主比较啰嗦, 会列出几个异常情况以供参考]-- 1, 安装环境 1.0 Win7 32位 1.2 编译器:  Spring Tool Suite 3.7.1  官网下载地址:http://sp ...

  9. win10虚拟机怎么连接服务器,Win10系统虚拟机尝试连接到服务器出错怎么办

    很多用户都会在win10系统中使用虚拟机功能,而在使用的时候有用户却提示"虚拟机尝试连接到服务器'XXX'时出错,请检查虚拟管理服务是否正在运行以及是不授权你连接到此服务器"的错误 ...

最新文章

  1. CPU缓存与CPU性能的关系
  2. 73.关系操作有哪些?
  3. 电源完整性仿真让电路板更完美
  4. Python whl文件制作简介
  5. SAP UI5 的前世今生
  6. python字频统计软件_python结巴分词以及词频统计实例
  7. es分页查询重复数据_ES优化 - 巨量数据如何提高查询性能
  8. sqlalchemy mysql_SQLAlchemy(1)
  9. Hybrid Skeleton Driven Surface Registration for Temporally Consistent Volumetric Video
  10. bootstrap使用modal动态对话框时,按回车键无法确认,反而取消对话框
  11. Java找到二维数组中的最大值并打印坐标
  12. 通达信zig函数的python实现
  13. 【TensorFlow系列】【九】利用tf.py_func自定义算子
  14. 无线网破解 跑字典 EWSA使用教程
  15. 人工智能 猴子摘香蕉问题
  16. Linux中COPYODM的作用,odm操作指南
  17. 笔记本 安装Linux系统
  18. ICPC North America Qualifier 2017 B.Bumped! (分层图 + spfa)
  19. 电池包IPX9K、IPX9测试目的
  20. 10. kafka消费者如何分配分区

热门文章

  1. 什么是大数据 究竟多大才算是大数据,大数据怎么学习?
  2. DataFrame 数据筛选
  3. 远行星号 java_不纠结刷种子了,duzahk.java里面直接加了点东西。
  4. 关于Android app正式版本和测试版本的切换
  5. 认计算机电源,电脑硬件认识之什么是电脑的电源[图文]
  6. 我是如何在毕业不久只用1年就升为开发组长的
  7. 【FreeRTOS】队列管理
  8. 第三天python作业题
  9. Thumbnailator实现图片压缩
  10. Mac系统下修改Java的版本