K8s 安装 pg集群服务器
主要的目的是做到自动灾备切换,利用kubernetes 集群做到高可用的数据库服务。
三个节点, 2节点部署 proxy,sentinel,3节点keeper (DB)
本文选着stolon,
详细解决方案,原理请看:项目地址 https://github.com/sorintlab/stolon
总体架构架构
下面是步骤
1. 创建临时目录下载项目
mkdir stolon
git clone https://github.com/sorintlab/stolon.git
或者自己手工下载zip包,解压到stolon目录
进入/examples/kubernetes
这里保存k8s的脚本
kubernetes git:(master) ✗ ll
total 104
-rw-r--r-- 1 moqiyi staff 8.4K Apr 18 20:58 README.md
drwxr-xr-x 3 moqiyi staff 96B Apr 18 21:41 image
-rw-r--r-- 1 moqiyi staff 3.7K Apr 18 20:58 postgresql_upgrade.md
-rw-r--r-- 1 moqiyi staff 255B Apr 18 20:58 role-binding.yaml
-rw-r--r-- 1 moqiyi staff 571B Apr 18 20:58 role.yaml
-rw-r--r-- 1 moqiyi staff 136B Apr 18 21:51 secret.yaml
-rw-r--r-- 1 moqiyi staff 3.2K Apr 18 22:05 stolon-keeper.yaml
-rw-r--r-- 1 moqiyi staff 234B Apr 18 23:34 stolon-proxy-service.yaml
-rw-r--r-- 1 moqiyi staff 1.5K Apr 18 21:56 stolon-proxy.yaml
-rw-r--r-- 1 moqiyi staff 1.3K Apr 18 20:58 stolon-sentinel.yaml
一共有7个yaml文件
2. 创建pv数据盘(nfs)
git上默认是利用了本地存储,这里我们使用nfs去保存数据,一面服务挂了可以恢复。更加好的是使用分布式存取服务rook ceph.(https://rook.io/, cloud native storage)
在nsf服务器上 创建pv1,pv2,pv3 目录
创建pv1, pv2,pv3 的yaml
# pv1.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pg-pv1
spec:
capacity:
storage: 2Gi
accessModes:
- ReadWriteMany
storageClassName: nfs
nfs:
path: /home/nfs/pv1 <--这个一定要先在服务器上创建
server: k8s-nfs <--服务器地址
kubectl apply -f pv1.yaml
重复以上 依次创建 2,3作为冗余备份数据
原则上一个pv就对应一个pvc,有兴趣可以查询
如何创建nfs服务器,请参看本人的上一篇文章(NFS服务器部分)
https://blog.csdn.net/davidqymo/article/details/105473358
3. 修改密码文件
修改密码文件secret.yaml
---
apiVersion: v1
kind: Secret
metadata:
name: stolon
type: Opaque
da