日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

bitnami 的pgpool连接postgresql-ha出错SCRAM

發布時間:2023/12/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bitnami 的pgpool连接postgresql-ha出错SCRAM 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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原鏡像都沒問題,可一換成自己構建的鏡像就出這個錯,不得不懷疑我構建的鏡像有問題,但能有什么問題呢,測試三個節點都正常,百思不得其解??磥淼蒙钊氲牧私鈖gpool的配置的,使用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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。