Patroni ile PostgreSQL HA Cluster Kurulumu

Patroni ile PostgreSQL HA Cluster Kurulumu

Patroni, primary veri tabanı sunucusunda bakım, yazılım veya donanım arızası durumların da Primary Node’unun otomatik olarak bir Standby Node’una yük devretmesini ve yüksek kullanılabilirliği sağlayan PostgreSQL cluster yönetimi modülüdür.

Patroninin tek başına kurulumu PostgreSQL kümesine yük devretme ve yüksek kullanılabilirlik niteliği kazandırmaya yeterli değildir. Patroni ile birlikte Distributed Configuration Store araçlarından birine ihtiyaç vardır. Bu kapsamda Patroni ile birlikte ETCD kullanılacaktır.

ETCD: PostgreSQL kümesinin durumunu saklar. Herhangi bir PostgreSQL düğümünün durumunda herhangi bir değişiklik bulunduğunda, Patroni ETCD anahtar/değer deposundaki durum değişikliğini günceller. ETCD, bu bilgiyi ana düğümü seçmek için kullanır ve kümeyi ayakta tutmayı sağlar. ETCD servisi fail olursa veri tabanı clusterıda servis hizmet veremez hale gelir. Bu sebepten dolayı ETCD servisi için de bir küme oluşturulması tavsiye edilmektedir.

vi install_etcd.sh


ETCD_VER=v3.5.18

# choose either URL
GOOGLE_URL=https://storage.googleapis.com/etcd
GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
DOWNLOAD_URL=${GOOGLE_URL}

rm -f /opt/tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
rm -rf /opt/tmp/etcd-download-test && mkdir -p /opt/tmp/etcd-download-test

curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /opt/tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
tar xzvf /opt/tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /opt/tmp/etcd-download-test --strip-components=1
rm -f /opt/tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz

mv /opt/tmp/etcd-download-test/etcd* /usr/local/bin/

Etcd servisini kurmak için bir tane bash script oluşturdum bu sayede belirttiğim versiyonda ki etcd’yi kurmuş olacağım.

chmod +x install_etcd.sh ve ./install_etcd.sh

Linux sistemlerinde bir betik dosyasını çalıştırmadan önce, ona çalıştırma izni (execute permission) vermek gerekebilir.

etcd -version

Kurulumu sağladıktan sonra etcd versiyonlarını kontrol ediyoruz.

mkdir /etc/etcd mkdir /var/lib/etcd

/etc/etcd dizinini oluşturma sebebimiz ETCD’nin yapılandırma (configuration) dosyalarının saklandığı yerdir.Burada etcd.conf.yml gibi yapılandırma dosyaları bulunur.Servis başlatıldığında hangi ayarlarla çalışacağını buradaki dosyalardan okur.

/var/lib/etcd dizinini oluşturma sebebim ETCD’nin verilerini (data) sakladığı dizin olduğundan.Veritabanı dosyaları burada tutulur ve ETCD’nin çalışırken yönettiği anahtar-değer (key-value) çiftleri burada depolanır.

groupadd etcd
useradd -g etcd etcd
usermod --uid 999 etcd
groupmod --gid 999 etcd
chown -R etcd:etcd /var/lib/etcd

ETCD’yi güvenli bir şekilde çalıştırmak için özel bir kullanıcı ve grup oluşturulur. Böylece ETCD, root yetkileri olmadan çalışabilir.ETCD’yi güvenli bir şekilde çalıştırmak için önce groupadd etcd komutu ile etcd adında bir grup oluşturulur. Ardından, useradd -g etcd etcd komutu kullanılarak etcd grubuna ait etcd adlı kullanıcı eklenir.Sistem üzerinde tutarlılık sağlamak için usermod — uid 999 etcd komutu ile etcd kullanıcısının UID’si 999 olarak ayarlanır ve groupmod — gid 999 etcd komutu ile etcd grubunun GID’si 999 olarak belirlenir.Son olarak, chown -R etcd:etcd /var/lib/etcd komutu çalıştırılarak /var/lib/etcd dizininin sahipliği etcd kullanıcısına ve grubuna atanır. Bu işlem, ETCD’nin güvenli bir şekilde çalışmasını ve yalnızca yetkilendirilmiş kullanıcı tarafından erişilmesini sağlar.

vi /lib/systemd/system/etcd.service

[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
WorkingDirectory=/var/lib/etcd/
# set GOMAXPROCS to number of processors
ExecStart=/bin/bash -c "GOMAXPROCS=$(nproc) /usr/local/bin/etcd --config-file /etc/etcd/etcd.conf.yaml"
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

ETCD’yi bir systemd servisi olarak çalıştırmak için /lib/systemd/system/etcd.service dosyası oluşturulur. Bu servis dosyası, ETCD’nin başlangıçta otomatik olarak çalışmasınıağ bağlantısı sağlandıktan sonra başlatılmasını ve hata durumunda yeniden başlatılmasını sağlar.[Service] bölümünde, ETCD’nin çalışma dizini (/var/lib/etcd/)yapılandırma dosyası (/etc/etcd/etcd.conf.yaml) ve maksimum açık dosya sınırı (LimitNOFILE=65536) gibi ayarlar tanımlanır. ExecStart satırında, sistemdeki işlemci sayısına göre GOMAXPROCS ayarlanarak ETCD’nin optimize çalışması sağlanır.Son olarak, [Install] bölümünde multi-user.target hedefi ile sistem açılışında servisin otomatik başlaması sağlanır.

vi /etc/etcd/etcd.conf.yaml

name: 'etcd01-test'
initial-cluster-token: PGSQL_ETCD
initial-cluster-state: new
initial-cluster: etcd01-test=http://10.0.1.100:2380,etcd02-test=http://10.0.1.101:2380,etcd03-test=http://10.0.1.102:2380
data-dir: /var/lib/etcd
initial-advertise-peer-urls: http://10.0.1.100:2380
advertise-client-urls: http://10.0.1.100:2379
listen-client-urls: http://10.0.1.100:2379,http://127.0.0.1:2379
listen-peer-urls: http://10.0.1.100:2380,http://127.0.0.1:2380
log-level: warn

ETCD kümesini (cluster) yapılandırmak için /etc/etcd/etcd.conf.yaml dosyası oluşturulur. Bu dosya, ETCD’nin ağ yapılandırmasını, küme üyelerini ve çalışma ayarlarını belirler.ETCD kümesini başarılı bir şekilde yapılandırmak için her düğümün name parametresi benzersiz olmalıdır. Örneğin, bir kümede etcd01-test, etcd02-test, ve etcd03-test gibi isimler kullanılmalıdır. Kümenin bir bütün olarak tanımlanmasını sağlamak için tüm düğümlerde initial-cluster-token aynı olmalı ve initial-cluster-state yeni bir küme kuruluyorsa new, var olan bir kümeye düğüm ekleniyorsa existing olarak ayarlanmalıdır.Kümedeki düğümlerin birbiriyle iletişim kurabilmesi için initial-cluster parametresi, her düğümün adresini içerecek şekilde tanımlanır. Örneğin, etcd01-test=http://10.0.1.100:2380, etcd02-test=http://10.0.1.101:2380, etcd03-test=http://10.0.1.102:2380 gibi bir yapı oluşturulmalıdır. Tüm düğümlerin veri saklama alanı olarak data-dir parametresi ile aynı dizin kullanılması gereklidir, genellikle /var/lib/etcd seçilir.Düğümlerin birbirleriyle haberleşebilmesi için initial-advertise-peer-urls her düğümün kendi IP adresine göre belirlenmeli, örneğin http://10.0.1.100:2380, http://10.0.1.101:2380, http://10.0.1.102:2380 şeklinde ayarlanmalıdır. Aynı şekilde, istemcilerin bağlanacağı advertise-client-urls parametresi de her düğümün kendi IP adresine göre ayarlanmalı ve dışarıya açık olmalıdır. ETCD’nin istemci bağlantılarını dinlediği listen-client-urls genellikle localhost ve düğümün IP adresini içerirken, listen-peer-urls parametresi düğümler arası iletişimi sağlamak için her düğümün kendi IP adresine göre belirlenmelidir.Gereksiz sistem yükünü önlemek için log seviyesi log-level parametresi warn olarak ayarlanabilir. Bu yapılandırmaların doğru şekilde yapılması, ETCD düğümlerinin güvenilir ve ölçeklenebilir bir küme olarak çalışmasını sağlar.

systemctl start etcd

Etcd servisini node’larımızda başlatıyoruz.

etcdctl member list

etcdctl member list komutu, ETCD kümesindeki tüm düğümleri (node’ları) listeler.Her düğümün benzersiz kimliği (örneğin, 3c2d95f2…) bulunmaktadır.Başlangıç durumu (started) gösterilmektedir.Peer URL’leri (örneğin, http://10.0.1.102:2380) düğümlerin birbirleriyle nasıl iletişim kurduğunu gösterir.Client URL’leri (http://10.0.1.102:2379) istemcilerin bağlanacağı adreslerdir.false ifadesi, düğümün şu an leader olmadığını, yani lider seçilmediğini gösterir.Eğer tüm düğümler listeleniyor ve doğru adreslerle görünüyorlarsa, küme başarılı bir şekilde çalışıyor demektir. Ancak bir düğüm eksikse veya false yerine true yazan bir düğüm yoksa, lider seçimi veya bağlantılarla ilgili bir sorun olabilir.Etcd kurulumu burada tamamlanıyor artık PgSQL’i kurabiliriz.

PatroniCluster öncesi 2 tane node kurdum. Bu node’ları ayarlama yaparken data dizinini farklı oluşturmak istedim. göründüğü gibi /patroni diye bir dizin belirttim.

Kurulum öncesi “https://www.postgresql.org/download/linux/ubuntu/” adresinden hangi işletim sistemine uygun olan versiyonu seçip indireceğiz. Burada benim sunucumda tek farklı olan kısım hardened bir imaj olduğunda dolayı ekstra olarak bir kaç dosyaya izin vereceğiz. Standart bir ubuntu22.04 olanlar ise kurulumu direkt yapabilir.

install -d /usr/share/postgresql-common/pgdg

install -d /usr/share/postgresql-common/pgdg komutu, /usr/share/postgresql-common/pgdg dizinini oluşturur.install -d → mkdir komutu gibi çalışır, ancak gerekli izinleri ve sahiplik ayarlarını otomatik yapar./usr/share/postgresql-common/pgdg → PostgreSQL için dağıtım (PGDG — PostgreSQL Global Development Group) ile ilgili dosyaların saklanabileceği bir dizindir.

curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc — fail https://www.postgresql.org/media/keys/ACCC4CF8.asc

Bu komut, PostgreSQL’in GPG anahtarını, PostgreSQL APT repo paketlerinin doğruluğunu kontrol edebilmek için kullanmak üzere belirttiğiniz dosya yoluna indirir.

ll /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc

Bu komut, belirtilen dosyanın bulunduğu dizindeki dosya izinleri, sahibi, boyutu, son değiştirilme tarihi ve benzeri bilgileri gösterecektir. Eğer dosya mevcut değilse, komut çıktısında “No such file or directory” gibi bir hata mesajı alırsınız.

chmod 644 /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc

644: Dosya sahibine (owner) okuma (r) ve yazma (w) izni verir, grup (group) ve diğer kullanıcılara (others) sadece okuma (r) izni verir.Bu komut, dosyanın güvenli bir şekilde erişilebilir olmasını sağlar, çünkü yalnızca dosya sahibi yazma iznine sahip olacak ve başkaları sadece okuma yapabilecektir.

sudo sh -c ‘echo “deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main” > /etc/apt/sources.list.d/pgdg.list’

Bu komut, PostgreSQL’in resmi APT reposunu Ubuntu veya Debian tabanlı bir sisteme eklemek için kullanılır. İlk olarak, sudo komutu ile yönetici hakları elde edilir ve ardından sh -c komutuyla bir kabuk (shell) komutu çalıştırılır. echo komutu, PostgreSQL’in APT reposunun adresini oluşturur ve bu adresin güvenlik doğrulaması için kullanılan imza anahtarının yerini belirtir. Bu adres, sistemin sürümüne göre (örneğin, Ubuntu’nun bir sürümü gibi) dinamik olarak değiştirilir. Son olarak, oluşturulan bu metin, /etc/apt/sources.list.d/pgdg.list dosyasına yazılır. Bu dosya, PostgreSQL’in resmi paketlerinin APT aracılığıyla indirilebilmesi için gereklidir. Bu işlem, sistemin PostgreSQL paketleriyle güncellenmesini sağlar ve güvenlik anahtarının doğruluğunu kontrol ederek, paketlerin güvenli bir şekilde yüklenmesini sağlar.

apt update

apt install postgresql-16 patroni/jammy-pgdg postgresql-16-timescaledb/jammy-pgdg

PostgreSQL 16 veritabanı sistemini, Patroni’yi yüksek erişilebilirlik (HA) için ve TimescaleDB’yi zaman serisi verisi yönetimi için Ubuntu sistemine kurar. İlk olarak, postgresql-16 paketi, PostgreSQL’in 16. sürümünü kurarak veritabanı sistemini hazırlar. Ardından, patroni/jammy-pgdg paketi yüksek erişilebilirlik sağlayan Patroni’yi yükler. Patroni, PostgreSQL kümeleri oluşturup, bu kümelerde otomatik failover ve replikasyon yönetimi sağlar. Son olarak, postgresql-16-timescaledb/jammy-pgdg paketi, PostgreSQL’e zaman serisi verileri için optimize edilmiş TimescaleDB eklentisini entegre eder. Bu komut, sisteminize yüksek erişilebilirlik, zaman serisi veri yönetimi ve veritabanı yönetim özelliklerini entegre ederek güçlü bir PostgreSQL çözümü sunar.

systemctl disable postgresql ve systemctl stop postgresql

Patronicluster kurulumu sırasında PostgreSQL servisini başlangıçta durdurmak ve manuel olarak başlatmamak, genellikle yüksek erişilebilirlik (HA) yapılandırması için yapılan ön hazırlıkların bir parçasıdır. Bunun birkaç nedeni vardır:

1. Yüksek Erişilebilirlik (HA) Yapılandırması: Patroni, PostgreSQL için yüksek erişilebilirlik sağlayan bir araçtır ve birden fazla PostgreSQL sunucusunun küme (cluster) olarak çalışmasını yönetir. Eğer PostgreSQL servisi otomatik olarak başlatılırsa, Patroni’nin düzgün şekilde yapılandırılması zorlaşır çünkü Patroni, kendi kontrolü altında başlatılacak PostgreSQL örneklerini ve küme yapılandırmasını yönetir. Bu nedenle, önceden kurulumda PostgreSQL servisini manuel başlatmak yerine durdurmak, Patroni’nin yapılandırmayı doğru bir şekilde yönetmesini sağlar.

2. Patroni’nin Servis Yönetimi: Patroni, PostgreSQL servisinin kontrolünü devralır. Bu nedenle, PostgreSQL servisini kurulum sırasında durdurmak, Patroni’nin devreye girmesi ve servisi uygun şekilde başlatması için gereklidir. Eğer PostgreSQL servisi önceden başlatılmışsa, Patroni doğru şekilde küme yapılandırmasını yapamaz ve sorunlar çıkabilir.

3. Konfigürasyon Değişiklikleri: Kurulum sırasında PostgreSQL’in yapılandırma dosyaları üzerinde bazı değişiklikler yapılması gerekebilir. PostgreSQL servisi çalışırken bu dosyaların değiştirilmesi riskli olabilir. Servisi durdurmak, konfigürasyon dosyalarını güvenli bir şekilde düzenlemeyi ve değişikliklerin etkili olmasını sağlamayı kolaylaştırır.

4. PostgreSQL İstemcisi ile Uyum: Patroni, PostgreSQL’in istemci yapılandırmalarını ve bağlantı yönetimini yönetir. PostgreSQL servisi otomatik olarak başlatılırsa, bu yapılandırmalar doğru şekilde uygulanamayabilir. Patroni’nin devreye girmesi için PostgreSQL’in durdurulması, bu yapılandırmaların düzgün bir şekilde yapılmasını sağlar.

Bu sebeplerle, Patronicluster kurulumu sırasında PostgreSQL servisini önce durdurmak ve manuel olarak başlatmamak, Patroni’nin düzgün çalışabilmesi ve yüksek erişilebilirlik sağlanabilmesi için kritik bir adımdır.

mkdir /patroni/data

chown -R postgres:postgres /patroni/data

Patroni’nin veritabanı verilerini sakladığı /patroni/data dizininin PostgreSQL’in çalıştıracağı postgres kullanıcısı ve grubuna ait olmasını sağlar. Bu, dosya izinlerinin doğru şekilde yapılandırılması için gereklidir çünkü PostgreSQL, veritabanı dosyalarına yalnızca doğru izinlere sahip bir kullanıcı olarak erişebilir.

vi /etc/patroni/config.yml

scope: patronidb
namespace: patronidc
name: pgsql01-test

restapi:
  listen: 10.0.1.104:8008
  connect_address: 10.0.1.104:8008

etcd3:
  hosts: 10.0.1.100:2379,10.0.1.101:2379,10.0.1.102:2379

bootstrap:
  dcs:
    ttl: 30
    loop_wait: 10
    retry_timeout: 10
    maximum_lag_on_failover: 1048576
    synchronous_mode: true
    synchronous_mode_strict: false
    synchronous_standby_names: 'pgsql02-test'
    postgresql:
      use_pg_rewind: true
      parameters:
        synchronous_commit: 'on'
        max_connections: 500
        shared_buffers: 2GB
        effective_cache_size: 6GB
        maintenance_work_mem: 512MB
        work_mem: 16MB
        wal_buffers: 16MB
        min_wal_size: 1GB
        max_wal_size: 4GB
        checkpoint_completion_target: 0.9
        max_worker_processes: 4
        max_parallel_workers_per_gather: 2
        max_parallel_workers: 4
        max_parallel_maintenance_workers: 2
        autovacuum_vacuum_cost_limit: 2000
        autovacuum_max_workers: 3
        wal_compression: 'on'
        archive_mode: 'on'
        archive_timeout: 300s
        hot_standby: 'on'
        wal_level: replica
        random_page_cost: 1.1
        effective_io_concurrency: 200

  initdb:
  - encoding: UTF8
  - data-checksums
  - locale: tr_TR.UTF-8
  - lc-collate: tr_TR.UTF-8
  - lc-ctype: tr_TR.UTF-8

  pg_hba:
      - host replication replicator 127.0.0.1/32 trust
      - host replication replicator 0.0.0.0/0 md5
      - host all all 0.0.0.0/0 md5
postgresql:
  cluster_name: patronidb
  listen: 0.0.0.0:5432
  connect_address: 10.0.1.104:5432
  data_dir: /patroni/data
  bin_dir: /usr/lib/postgresql/16/bin
  pgpass: /tmp/pgpass

  authentication:
    replication:
      username: replicator
      password: your_password
    superuser:
      username: postgres
      password: your_password
    rewind:
      username: rewind_user
      password: your_password

  create_replica_methods:
    - basebackup
  basebackup:
    checkpoint: fast

  parameters:
    unix_socket_directories: '/var/run/postgresql'
    archive_mode: 'on'
    archive_timeout: 60s
    hot_standby: 'on'
    logging_collector: 'on'
    log_directory: '/var/log/postgresql'
    log_filename: 'postgresql-%Y-%m-%d_%H%M%S.log'
    log_rotation_age: '1d'
    log_rotation_size: '100MB'
    log_statement: 'ddl'
    log_min_duration_statement: 1000
    log_checkpoints: 'on'
    log_connections: 'on'
    log_disconnections: 'on'
    log_lock_waits: 'on'
    log_temp_files: 128MB
    log_error_verbosity: 'default'
    log_timezone: 'Europe/Istanbul'
    shared_preload_libraries: timescaledb,pg_stat_statements

  use_pg_rewind: true

tags:
  nofailover: false
  noloadbalance: false
  clonefrom: false
  nosync: false

Bu patroni/config.yml dosyası, Patroni’nin PostgreSQL kümeleri için yapılandırma ayarlarını içerir. En önemli bölümler arasında, veritabanı kümesinin temel parametrelerini, yüksek erişilebilirlik (HA) yapılandırmasını, PostgreSQL’in başlatma parametrelerini ve replikasyon ayarlarını içerir. Özellikle, etcd3 ayarları, küme üyelerinin koordinasyonunu sağlar ve postgresql bölümü, PostgreSQL’in çalışacağı adres, bağlantı noktası ve veri dizini gibi temel ayarları belirtir. Ayrıca, bootstrap bölümü, yeni bir Patroni kümesinin nasıl başlatılacağına dair ayarları içerir.

İki node’da aynı yapılandırmanın olması, yüksek erişilebilirlik (HA) sağlamak için kritik öneme sahiptir. Patroni, küme üyeleri arasında senkronizasyonu ve otomatik failover’ı yönettiğinden, her iki node’un da aynı parametrelerle yapılandırılması gereklidir. Bu sayede, bir node arızalandığında, diğer node sorunsuz bir şekilde devreye girerek kesintisiz hizmet sunabilir. Ayrıca, replikasyonun tutarlı olabilmesi için her iki node’un aynı konfigürasyonla başlatılması gerekir.

chown postgres:postgres /etc/patroni/config.yml ve chmod 640 /etc/patroni/config.yml

chown postgres:postgres /etc/patroni/config.yml ve chmod 640 /etc/patroni/config.yml komutları, Patroni konfigürasyon dosyasının güvenliğini sağlamak ve doğru erişim izinlerini vermek için kullanılır.chown postgres:postgres /etc/patroni/config.yml komutu, konfigürasyon dosyasının sahipliğini postgres kullanıcısı ve grubuna atar. Bu, dosyanın yalnızca PostgreSQL işlemleri için yetkilendirilmiş kullanıcılar tarafından erişilebilir olmasını sağlar. Patroni, PostgreSQL servisi tarafından çalıştırıldığı için, konfigürasyon dosyasının da bu kullanıcıya ait olması gerekir.chmod 640 /etc/patroni/config.yml komutu, dosyanın erişim izinlerini ayarlar. 640 izni, dosyanın sahibinin (postgres) okuma ve yazma (rw-) izinlerine sahip olmasını, aynı gruptaki kullanıcıların ise yalnızca okuma (r–) iznine sahip olmasını sağlar. Diğer kullanıcıların ise hiç erişim izni yoktur. Bu, konfigürasyon dosyasının güvenliğini artırarak sadece yetkili kişilerin değiştirebilmesini sağlar.

servisi başlatmadan önce “sudo locale-gen tr_TR.UTF-8” komutu çalıştırmamız gerekiyor.
sudo locale-gen tr_TR.UTF-8 komutu, sistemde Türkçe dil desteği ve karakter seti (UTF-8) için gerekli yerel ayarları (locale) oluşturur. Bu, özellikle sistemin Türkçe dilinde düzgün çalışması, tarih, saat, para birimi ve dil formatlarının doğru şekilde görüntülenmesi için gereklidir. Ayrıca, bazı uygulamalar ve veritabanları doğru bir şekilde çalışabilmek için belirli bir locale’ye ihtiyaç duyar. Bu komut çalıştırıldığında, tr_TR.UTF-8 yerel ayarı sistemde etkinleştirilir ve bu, dil, bölgesel ayarlar ve karakter kodlaması gibi öğelerin Türkçe uyumlu hale gelmesini sağlar.

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

patronictl -c /etc/patroni/config.yml list komutu, Patroni kümesindeki tüm node’ların durumunu listelemek için kullanılır. Bu komut, belirtilen yapılandırma dosyasındaki Patroni kümesinin tüm üyelerini (master ve replica node’lar) gösterir ve her birinin durumunu, lider olup olmadığını, sağlık durumunu ve diğer önemli bilgileri sağlar.

patronictl -c /etc/patroni/config.yml switchover

patronictl -c /etc/patroni/config.yml switchover komutu, Patroni kümesindeki lider PostgreSQL node’unun rolünü değiştirmek için kullanılır. Bu komut, mevcut lider node’u (master) replikalardan birine geçirecek ve yeni lideri belirleyecektir. Bu işlem, özellikle bakım veya güncelleme gereksinimlerinde, kesintisiz hizmet sağlamak amacıyla kullanılır.

Bu sayede PatroniCluster kurup PgSQL servisimizi yönetmiş olduk. Bunlara da yük dengelemesi yapmak için HAProxy arkasına alınabilir.

1 Comment

  1. Hi, this is a comment.
    To get started with moderating, editing, and deleting comments, please visit the Comments screen in the dashboard.
    Commenter avatars come from Gravatar.

Leave a Reply

Your email address will not be published. Required fields are marked *