Patroni Cluster Ayarları

Global Settings

scope, namespace ve name parametreleri sunucunun hangi cluster’ın üyesi (node)
olduğunu belirtir.

  • scope : postgresql cluster ismi girilir.
  • namespace : DCS (etcd, consule vb.) üzerinde patroni cluster’ın
    bilgilerini tuttuğu yolu (path) belirtir.
  • name : Patroni cluster’da bu node/sunucuyu tanımlamak için verilen
    herhangi bir benzersiz (unique) isim.
  • rest api : Leader yani primary sunucunun seçimi sırasında patroninin
    kendi kullandığı rest api’dir.
    ETCD altındaki hostlar, ETCD host IP adresidir.
    data_dir’in postgresql veritabanı için datafile lokasyonu olması
    gerekmektedir.

Dynamic Configuration Setings (DCS)
DCS’te yapılan ayarlar Distributed Configuration Store’da yani etcd’de tutulur.
Ve tüm sunuculara asenkron olarak uygulanır.
loop_wait, ttl, postgresql.parameters.max_connections,
postgresql.parameters.max_worker_processes
vb. parametreler
sadece burada ayarlanabilir. Bu ayarları $PGDATA/patroni.dynamic.json
dosyasından görmek mümkündür.
postgresql.listen, postgresql.data_dir gibi ayarlarda sadece lokalde
patroni konfigurasyon dosyasında veya konfigurasyon değişkenleri ile ayarlanabilir.

  • loop_wait : Loop’un beklemede kalacağı saniye cinsinden süre (default değer 10 sn).
  • ttl : Autofail over işlemi gerçekleştirmeden önce beklenecek saniye cinsinden süre (default değer 30 sn ).
  • retry_timeout : DCS (etcd) postgresql arasındaki veri alışverişindeki zaman aşımı. Network vb. erişim arızaları burada belirtilen süreyi geçmediği sürece failover gerçekleşmez.
  • Maximum_lag_on_failover : Leader/primary adayı olabilecek standby’ların byte cinsinden gecikme tolerans sınırı.
  • Postgresql.parameters : Veritabanı ayarlarının yapıldığı bölüm.

Postgresql instance’ının çalıştığı bir makineye patroni kuruldu ise, aşağıdaki initdb
satırlarını config.yml dosyasından bootstrap bölümünün altından kaldırılmaldır.
(sadece primary sunucuda).

initdb:

- - Encoding: UTF8

- data-checksums

  • use_slots : Replikasyon için slot kullanılıp kullanılmayacağını belirtir. Postgresql
    9.4+ sürümlerinde default değer ‘true’ olarak belirlenir. Slot önerilen bir yöntemdir.
    standby’a işlenmemiş WAL dosyalarını sildirmez.

Patroni cluster ayarlarının değiştirilmesi

Patroni cluster ayarlarının değiştirilmesi için çeşitli yöntemler vardır ;
-DCS’te dinamik konfigurasyonlar yapılır. Burada yapılan değişiklik tüm nodlara
uygulanır.
-lokal *.yml (/etc/patroni/patroni.yml) konfigurasyon dosyasında
yapılan değişiklikler dinamik konfigurasyonu ezer.
-Veritabanı seviyesinde “alter system” komutlarıyla ve lokal değişkenlerle
(environment configuration) yapılabilir.

1- Restart gerektirmeyen, dinamik değiştirilebilen ayarlar

export EDITOR=vim # vim ile açması için
patronictl -c /etc/patroni/config.yml edit-config erp
vim editörünün komutları ile değişiklik yapılıp kayıt edilir.
Değişikliklerin diğer nodlara da uygulandığı görülür.
(patronictl -c /etc/patroni/config.yml show-config erp)

2- Restart gereken değişiklikler

Aynı şekilde edit-config ile değişiklik yapılıp,
patronictl -c /etc/patroni/config.yml edit-config erp

restart bekleyen sunucular listelenir.

patronictl -c /etc/patroni/config.yml list erp

Hangi parametrenin restart beklediğini görmek için;
select name, setting, short_desc, sourcefile, sourceline
from pg_settings where pending_restart ;

Tek tek de restart edilebilir. (Önce primary)

patronictl -c /etc/patroni/config.yml restart erp pgdb1
patronictl -c /etc/patroni/config.yml restart erp pgdb2

Bütün nodlar da restart edilebilir.
patronictl -c /etc/patroni/config.yml restart erp

3- “alter system” veritabanında seviyesinde yapılan değişikliler

Tüm nodlara uygulanmayacaktır. Tüm veritabanı sunucularında tek tek çalıştırılması
gerekir. Tüm cluster seviyesinde aynı olması gereken ayarlar vardır. Bu ayarları primary
sunucudan farklı olan standby’lar açılamaz log dosyasına konfig farklılığını yazar.
Tüm sunucularda aynı olması zorunlu olan ayarlar;

max_connections
max_locks_per_transaction
max_worker_processes
max_prepared_transactions
wal_level
wal_log_hints
track_commit_timestamp

Sunucularda farklı değer alabilecek ayarlar ;
max_wal_senders
max_replication_slots
wal_keep_segments
wal_keep_size

Bütün sunucular her an primary adayı olduğu için aynı ayarlara ve kaynaklara sahip
olmaları önerilir.

DCS’den (etcd) status kontrol edilir.

postgres@pgdb1:~$ sudo apt install jq -y
postgres@pgdb1:~$ curl http://pgdb1:8008/master | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 473 0 473 0 0 20565 0 --:--:-- --:--:-- --:--:-- 20565
{
“state”: “running”,
“postmaster_start_time”: “07:21:41.947592+00:00”,
“role”: “master”,
“server_version”: 130008,
“xlog”: {
“location”: 83886296
},
“timeline”: 1,
“replication”: [
{
“usename”: “replicator”,
“application_name”: “pgdb2”,
“client_addr”: “192.168.56.72”,
“state”: “streaming”,
“sync_state”: “async”,
“sync_priority”: 0
}
],
“dcs_last_seen”: 1662103583,
“database_system_identifier”: “7138428822420387146”,
“patroni”: {
“version”: “2.1.3”,
“scope”: “erp”
}
}

curl -s http://pgdb1:8008/patroni | jq .
curl -s http://pgdb2:8008/patroni | jq .
curl -s http://pgdb1:8008/erp | jq .
curl -s http://pgdb2:8008/erp | jq .

Kategori seçin...