三、kubernetes部署postgresql高可用集群

kubernetes部署postgresql高可用集群

部署步骤

参考官网地址:https://artifacthub.io/packages/helm/bitnami/postgresql-ha

准备工作

需安装kubernetes集群;
需安装Helm;
需安装Nexus3;
需安装NFS持久化插件。
如果未安装参考我的【kubernetes集群部署教程】【kubernetes部署Nexus3教程】

Helm部署postgresql

# 添加仓库源
helm repo add bitnami https://charts.bitnami.com/bitnami

在官网上查看到截止目前的版本如下图:
在这里插入图片描述
经过一些测试,决定采用部署11.7.7这个版本的postgresql-ha。

# 拉取镜像
helm pull bitnami/postgresql-ha --version 11.7.7
# 解压
tar -xvf postgresql-ha-11.7.7.tgz
cd postgresql-ha
vi values.yaml

# 管理镜像到自己的nexus3私服,如果不采用私服可以不管
# 查看values.yaml可以查看到相关镜像
docker pull bitnami/postgresql-repmgr:15.3.0-debian-11-r16
docker tag bitnami/postgresql-repmgr:15.3.0-debian-11-r16 10.108.69.78:8082/bitnami/postgresql-repmgr:15.3.0-debian-11-r16
docker push 10.108.69.78:8082/bitnami/postgresql-repmgr:15.3.0-debian-11-r16

docker pull bitnami/pgpool:4.4.3-debian-11-r10
docker tag bitnami/pgpool:4.4.3-debian-11-r10 10.108.69.78:8082/bitnami/pgpool:4.4.3-debian-11-r10
docker push 10.108.69.78:8082/bitnami/pgpool:4.4.3-debian-11-r10

docker pull bitnami/postgres-exporter:0.13.1-debian-11-r0
docker tag bitnami/postgres-exporter:0.13.1-debian-11-r0 10.108.69.78:8082/bitnami/postgres-exporter:0.13.1-debian-11-r0
docker push 10.108.69.78:8082/bitnami/postgres-exporter:0.13.1-debian-11-r0

docker pull bitnami/bitnami-shell:11-debian-11-r130
docker tag bitnami/bitnami-shell:11-debian-11-r130 10.108.69.78:8082/bitnami/bitnami-shell:11-debian-11-r130
docker push 10.108.69.78:8082/bitnami/bitnami-shell:11-debian-11-r130

# 主要编辑如下内容
#########================#########
global.storageClass: "nfs-storage"
# 设置镜像拉取为nexus3的docker私服,如果不采用私服留空
global.imageRegistry: "10.108.69.78:8083"  
global.postgresql.username: "postgres"
global.postgresql.password: "xxxxxxx"
global.postgresql.repmgrUsername: "repmgr"
global.postgresql.repmgrPassword: "yyyyyy"
#########================#########

# 安装
helm install postgresql-ha .

需要修改的位置有:
global.storageClass: “nfs-storage”
nfs-storage的值为安装NFS插件的时候设定好的默认值,当然也可以设置固定的账户和密码,我这里就不设置了。
其中pgpool.replicaCount的值为1即一个pgpool副本,如果服务器有条件的话可以设置为2保障数据库的绝对高可用,默认值为1任然有数据库宕机的风险。
其中postgresql.replicaCount的值为3即三个postgresql副本(至少3个才可以仲裁)。

安装成功后有如下提示:

[root@master postgresql-ha]# helm status postgresql-ha
NAME: postgresql-ha
LAST DEPLOYED: Thu Jul 13 12:06:05 2023
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: postgresql-ha
CHART VERSION: 11.7.7
APP VERSION: 15.3.0
** Please be patient while the chart is being deployed **
PostgreSQL can be accessed through Pgpool via port 5432 on the following DNS name from within your cluster:

    postgresql-ha-pgpool.default.svc.cluster.local

Pgpool acts as a load balancer for PostgreSQL and forward read/write connections to the primary node while read-only connections are forwarded to standby nodes.

To get the password for "postgres" run:

    export POSTGRES_PASSWORD=$(kubectl get secret --namespace default postgresql-ha-postgresql -o jsonpath="{.data.password}" | base64 -d)

To get the password for "repmgr" run:

    export REPMGR_PASSWORD=$(kubectl get secret --namespace default postgresql-ha-postgresql -o jsonpath="{.data.repmgr-password}" | base64 -d)

To connect to your database run the following command:

    kubectl run postgresql-ha-client --rm --tty -i --restart='Never' --namespace default --image docker.io/bitnami/postgresql-repmgr:15.3.0-debian-11-r16 --env="PGPASSWORD=$POSTGRES_PASSWORD"  \
        --command -- psql -h postgresql-ha-pgpool -p 5432 -U postgres -d postgres

To connect to your database from outside the cluster execute the following commands:

    kubectl port-forward --namespace default svc/postgresql-ha-pgpool 5432:5432 &
    psql -h 127.0.0.1 -p 5432 -U postgres -d postgres

就可以参考执行如下命令查看设定的随机密码了:

kubectl get secret --namespace default postgresql-ha-postgresql -o jsonpath="{.data.password}" | base64 -d
kubectl get secret --namespace default postgresql-ha-postgresql -o jsonpath="{.data.repmgr-password}" | base64 -d

高可用测试

安装完毕后应该有如下项:
存储卷:
在这里插入图片描述
pod:
在这里插入图片描述
service:
在这里插入图片描述
修改局域网中需要远程连接的windows电脑的hosts文件

10.102.108.221 postgresql-ha-pgpool

使用工具连接测试:
在这里插入图片描述
在这里插入图片描述

可以尝试创建数据库和表,然后插入数据在查看数据,发现各个pg库数据都同步即可。

可以测试把其中的某一个pod关闭掉甚至关闭某一台node节点服务(只要不关闭pgpool所在的node服务器,如果设置pgpool.replicaCount=2可以随意关闭任意台node),发现程序可以继续读写数据库,当服务器再次开机的时候发现数据将会自动同步则表示集群搭建完毕。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangweiji1006

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值