Bir önceki BFM yazımda BFM in nasıl çalıştığını detaylı anlatmıştım, okumak ve incelemek isteyenler için; https://www.farukcevik.com.tr/postgresql-bfm-bidirectional-failover-manager/
Bu yazımızda birden fazla sunucumuz uzak lokasyonlarda ve farklı network lerde olduğunda nasıl bir çözüm yolu izleniyor bunu açılmaya çalışacağız; Bir önceki yazıda PostgresSQL Kurulumlarını, BFM ve minipg kurulumlarını açıklamıştık burada farklı olarak bir witness server araya girecek ve VIP IP ler için ise, her subnet için ayrı bir VIP IP tanımlanacaktır.
OS | Version | IP | VIP IP |
RedHat8 | PostgreSQL13 (Master Or Slave) | 192.168.5.132/24 | 192.168.5.101/24 |
RedHat8 | PostgreSQL13 (Master Or Slave) | 192.168.81.132/24 | 192.168.81.101/24 |
RetHat8 | Witness Server (Ngnix TCP Blance) | it doesn’t matter | —- |
Yapı aşağıdaki şekilde özetlenmiştir.
Burada Doğrudan Witness Server Konfigürasyonu ile Failover ve Switcover olaylarına odaklanacağız.
Withness Server İçin; RedHat 8 için Ngnix Configürasyonu;
# sudo dnf install -y nginx
# sudo systemctl enable --now nginx.service
# sudo systemctl status nginx
TCP Balans işlemi için;
# vi /etc/nginx/nginx.conf
stream {
upstream postgresbackend{
server 192.168.5.101:5432;
server 192.168.81.101:5432;
}
server {
listen 5433;
proxy_pass postgresbackend;
}
}
Nginx bakalım bizim 5432 portunu dinliyor mu?
[root@bfmwather ~]# netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 19672/nginx: master
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 900/sshd
tcp 0 0 0.0.0.0:5433 0.0.0.0:* LISTEN 19672/nginx: master
tcp6 0 0 :::9994 :::* LISTEN 2456/java
tcp6 0 0 :::80 :::* LISTEN 19672/nginx: master
tcp6 0 0 :::22 :::* LISTEN 900/sshd
Burada şu sorulabilir peki hocam güzelde, fakat burada witness server giderse HA ne olacak, tüm sistem gider dediğinizi duyar gibiyim. Bu şekilde düşünenler için şöyle bir konfigurasyon yapılabilir. Uygulama sunucuları üzerine Nginx konfigürasyonu belli bir port üzerinden yapılır ve böylelikle uygulama sunucuları ayakta olduğu sürece her zaman master sunucuya bağlanması garanti edilmiş olur, zaten uygulama sunucularınız gitmiş ise veritabanının nerede olduğununda sanırım çok bir anlamı olmayacaktır.
Bir yanıt yazın