
Bu yazıda, HA(High Availability) yapıda PostgreSQL Patroni Cluster Kurulumu ‘nun önemli bileşenlerinin yapılandırmasını adım adım ele alacağız. Bu bölüm, tüm sunucularda yapılması gereken sistemsel ayarlar ile sunucularda gerçekleştirilecek temel veri tabanı yapılandırmalarını kapsamaktadır. Kurulum için 3 veri tabanı sunucusu ve 1 HAProxy-Pgbouncer sunucumuz olacaktır. Cluster mimarimiz anlaşılması açısından aşağıdaki görselde sade bir şekilde belirtmek istedim.

Mimarimizden de anlaşılacağı üzere uygulamalar doğrudan veri tabanı sunucularına bağlanmak yerine haprxypb makinemizdeki pgbouncer ve haproxy servislerine bağlantı sağlayacak. Buradaki HAproxy ve Pgbouncer ayrı sunucularda yapılandırılması tavsiye edilmektedir. Öncelikle veri tabanı sunucularının kurulumundan başlıyoruz.
Postgresql Kurulumu
- Sunucu Hostname Ayarlarının Yapılandırılması
Patroni kümesi içinde yer alacak tüm sunucuların birbiriyle sorunsuz iletişim kurabilmesi için /etc/hosts dosyasını aşağıdaki gibi düzenleyin. Bu işlem tüm sunucularda yapılmalıdır.
sudo vi /etc/hosts
192.168.26.101 postgres1
192.168.26.102 postgres2
192.168.26.103 postgres3
192.168.26.104 haprxypb- PostgreSQL 15 Kurulumu
Tüm db sunucularında(postgres1,postgres2,postgres3) PostgreSQL 15 sürümünü aşağıdaki komut ile install:
sudo yum install postgresql15 postgresql15-server postgresql15-contrib- Data Dizini Oluşturma
PostgreSQL data ve conf dosyalarını init edeceğimiz /data directory tüm sunucularda oluşturulup owner-group postgres olarak ayarlanır:
sudo mkdir /data
sudo chown postgres:postgres /data- initdb işlemi
Postgres kullanıcısı ile birinci sunucuda (örneğin postgres1) oluşturduğumuz directory’e init gerçekleştirilir. Diğer node lar için Patroni config işlemlerini yaptıktan sonra, patroni servisini start verdikten sonra gerekli verileri diğer sunuculara otomatik olarak taşıyacaktır.
sudo su - postgres
/usr/pgsql-15/bin/initdb -D /datapostgresql.confDosyasının Düzenlenmesi
Bu ayarlar, veritabanının kullanılabilirliğini ve performansını optimize etmek için gereklidir. /data/postgresql.conf dosyasında aşağıdaki parametreleri düzenleyelim:
data_directory = '/data'
listen_addresses = '*'
shared_buffers = 2048MB
max_connections = 200pg_hba.confDosyasına Erişim Kurallarının Eklenmesi
/data/pg_hba.conf dosyasına, hem normal kullanıcı bağlantıları hem de replikasyon işlemleri için gerekli olan aşağıdaki satırları ekleyin. Burada tüm iplerden gelen erişimlere izin verdik prod ortamlarda kullanıcı,ip ve database bazlı erişim izni vermeniz gerekmektedir.
# Replikasyon bağlantı izinleri
host replication replicator 127.0.0.1/32 md5
host replication replicator 0.0.0.0/0 md5
# Genel bağlantı izinleri
host all all 0.0.0.0/0 md5- PostgreSQL Servisinin Başlatılması
Postgresql servisi başlatılıp postgres şifresi değiştirilir ve cluster için kullanılacak replicator kullanıcısı oluşturulur.
sudo systemctl enable --now postgresql-15.service--Postgres kullanıcısı ile
psql -c "ALTER USER postgres WITH PASSWORD 'postgres';"
psql -c "CREATE USER replicator WITH REPLICATION PASSWORD 'replication';"- PostgreSQL Servis Dosyasını Düzenleme
Postgresql servisi default olarak data dizinini /var/lib/pgsql/15/data/ olarak oluşturur. Servisin /data dizinin altında başlaması için environment PGDATA değeri değiştirilmelidir:
sudo vi /usr/lib/systemd/system/postgresql-15.serviceAşağıdaki satırı bulun ve düzenleyin:
- Environment=PGDATA=/var/lib/pgsql/15/data/
+ Environment=PGDATA=/data/Yukarıdaki adımları tamamladıktan sonra, Patroni yapılandırmasına geçmeye hazırsınız. Bu işlemler, Patroni’nin PostgreSQL’i doğru bir şekilde yönetebilmesi için altyapıyı oluşturur.
Bu yazıda, PostgreSQL Patroni Cluster Kurulumu için temel PostgreSQL kurulum ve yapılandırma adımlarını anlattık. Bir sonraki bölümlerde, Patroni ve Etcd kurulumu ile HA mimarisini tamamlayacağız.
Patroni-ETCD kurulumu için diğer yazımı inceleyebilirsiniz.
PostgreSQL Single instance kurulu için yazıyı inceleyebilirsiniz.



Leave a Comment