Huaweicloud helm安装PostgreSQL HA
在 《Huaweicloud CCE helm install Bitnami PostgreSQL》写了下如何通过helm部署单节点 PG 和 master/standy架构。但神奇的会发现 Bitnami 除了提供这个helm chart外,还有一个 PostgreSQL HA 的chart,两者之间有何异同呢?
一、PostgreSQL-HA 和 PostgreSQL Helm chart之间的差异
有两种不同的方法来部署 PostgreSQL 集群:使用 PostgreSQL Helm 图表或 PostgreSQL 高可用性 (HA) Helm 图表。这两种解决方案都提供了一种在生产环境中运行 PostgreSQL 的简单可靠的方法。继续阅读以发现它们之间的差异,并检查哪一个更适合您的需求。
- PostgreSQL HA 和 PostgreSQL chart 都配置具有主从拓扑的集群。主节点具有写入权限,而复制则在具有只读权限的从节点上进行。
- PostgreSQL HA Helm chart 默认部署一个三节点集群,一个节点用于启动 pgpool,还有一主一从的PostgreSQL。PostgreSQL chart 默认配置有两个节点的集群(一主一从)。
- PostgreSQL HA Helm chart 使用 pgpool 来处理与节点的连接。pgpool 负责在节点之间传播查询。
- PostgreSQL HA Helm chart 包含一个 repmgr 模块,该模块通过自动成员资格控制确保高可用性。如果主节点宕机,任何一个从节点都会被提升为主节点以避免数据丢失。
下图显示了两者的区别:
二、PostgreSQL-HA 的安装
因为华为云CCE使用的存储类型是csi-disk,这里我们指定下,
1helm install pgha oci://registry-1.docker.io/bitnamicharts/postgresql-ha \
2 --set postgresql.password=pgpasswd \
3 --set postgresql.repmgrPassword=pgreppasswd \
4 --set persistence.storageClass=csi-disk
5
6# 查看安装结果
7[root@testcce-92497 ~]# kubectl get pods
8NAME READY STATUS RESTARTS AGE
9pgha-postgresql-ha-pgpool-d47b5575b-qc8gh 1/1 Running 0 101s
10pgha-postgresql-ha-postgresql-0 1/1 Running 0 101s
11pgha-postgresql-ha-postgresql-1 1/1 Running 0 101s
12pgha-postgresql-ha-postgresql-2 1/1 Running 0 101s
13[root@testcce-92497 ~]#
14[root@testcce-92497 ~]#
15[root@testcce-92497 ~]# kubectl get pods
16NAME READY STATUS RESTARTS AGE
17pgha-postgresql-ha-pgpool-d47b5575b-qc8gh 1/1 Running 0 109s
18pgha-postgresql-ha-postgresql-0 1/1 Running 0 109s
19pgha-postgresql-ha-postgresql-1 1/1 Running 0 109s
20pgha-postgresql-ha-postgresql-2 1/1 Running 0 109s
21[root@testcce-92497 ~]# kubectl get svc
22NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
23kubernetes ClusterIP 10.247.0.1 <none> 443/TCP 4d2h
24pgha-postgresql-ha-pgpool ClusterIP 10.247.181.238 <none> 5432/TCP 113s
25pgha-postgresql-ha-postgresql ClusterIP 10.247.179.184 <none> 5432/TCP 113s
26pgha-postgresql-ha-postgresql-headless ClusterIP None <none> 5432/TCP 113s
27[root@testcce-92497 ~]# kubectl get pvc
28NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
29data-pgha-postgresql-ha-postgresql-0 Bound pvc-ba91a1f2-2678-4a97-b5e5-19e90e6e8d9d 8Gi RWO csi-disk 2m1s
30data-pgha-postgresql-ha-postgresql-1 Bound pvc-d31b0210-0861-4cdb-8564-b376df5adf9f 8Gi RWO csi-disk 2m1s
31data-pgha-postgresql-ha-postgresql-2 Bound pvc-6d5c9774-9cdc-466b-9a40-159487f25e44 8Gi RWO csi-disk 2m1s
32
33# 登录验证
34[root@testcce-92497 ~]# kubectl exec -it pgha-postgresql-ha-pgpool-d47b5575b-qc8gh -- /bin/bash
35I have no name!@pgha-postgresql-ha-pgpool-d47b5575b-qc8gh:/$ psql -h pgha-postgresql-ha-pgpool -p 5432 -U postgres -d postgres
36Password for user postgres:
37psql (14.8, server 15.3)
38WARNING: psql major version 14, server major version 15.
39 Some psql features might not work.
40Type "help" for help.
41
42postgres=# \l
43 List of databases
44 Name | Owner | Encoding | Collate | Ctype | Access privileges
45-----------+----------+----------+-------------+-------------+-----------------------
46 postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
47 repmgr | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
48 template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
49 | | | | | postgres=CTc/postgres
50 template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
51 | | | | | postgres=CTc/postgres
52(4 rows)
如果需要涉及指定版本和副本数,也可以使用如下指令进行更新:
1helm upgrade my-release --version 8.0.0 oci://registry-1.docker.io/bitnamicharts/postgresql-ha \
2 --set postgresql.password=[POSTGRESQL_PASSWORD] \
3 --set postgresql.repmgrPassword=[REPMGR_PASSWORD] \
4 --set postgresql.replicaCount=1 \
5 --set postgresql.upgradeRepmgrExtension=true
参考页面:
https://artifacthub.io/packages/helm/bitnami/postgresql-ha
https://docs.bitnami.com/kubernetes/infrastructure/postgresql/get-started/compare-solutions/
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/helm-postgresql-ha/8577.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.