Genel

Kubernetes ÜzerindeHigh Available PostgreSQL Cluster Kurulumu

Merhabalar! Bu yazımda Stolon PostgreSQL operatör ile Kubernetes cluster üzerinde Leader-Follower şeklinde çalışan PostgreSQL cluster kurulumunun nasıl yapıldığını anlatacağım. İyi okumalar!

https://github.com/sorintlab/stolon adresinden repoyu indirin.

cd stolon/examples/kubernetes/

Eğer farklı bir PostgreSQL imajı kullanılacaksa base imaj verilmelidir.

Cluster Kurulumu

kubectl run -i -t stolonctl –image=local.docker.registry:5000/postgis-stolon:latest –restart=Never –rm — /usr/local/bin/stolonctl –cluster-name=kube-stolon –store-backend=kubernetes –kube-resource-kind=configmap init

kubectl apply -f stolon-sentinel.yaml
kubectl apply -f stolon-keeper.yaml
kubectl apply -f secret.yaml
kubectl apply -f stolon-proxy.yaml
kubectl apply -f stolon-proxy-service.yaml
kubectl apply -f role.yaml
kubectl apply -f role-binding.yaml

İlgili YAML dosyaları düzenlenerek kaç master kaç replica olacağı belirlenebilir. Ayrıca unutulmamalıdır ki her bir postgresql instance’ı persistent volume’a ihtiyaç duymaktadır.

Kubernetes Üzerindeki Cluster

kubectl get pods
NAME                               READY     STATUS    RESTARTS   AGE
stolon-keeper-0                    1/1       Running   0          5m
stolon-keeper-1                    1/1       Running   0          5m
stolon-proxy-fd7c9b4bd-89c9z       1/1       Running   0          5m
stolon-proxy-fd7c9b4bd-pmj86       1/1       Running   0          5m
stolon-sentinel-5c76865bd5-bc9n2   1/1       Running   0          5m
stolon-sentinel-5c76865bd5-fmqts   1/1       Running   0          5m

Bir Master Öldügünde

no keeper info available db=cb96f42d keeper=keeper0
no keeper info available db=cb96f42d keeper=keeper0
master db is failed db=cb96f42d keeper=keeper0
trying to find a standby to replace failed master
electing db as the new master db=087ce88a keeper=keeper1

Eğer leader sunucusu (master) kapandığında otomatik olarak follower olan diğer sunucular master’lığı alarak db’ye bağlantıyı sağlamaya devam edecektir.