Patroni Cluster Nedir

Patroni-Architecture-neu-01

Bilindiği üzere PostgreSQL’in kendi cluster mimarisinde HA yapısı bulunmamaktadır. Fakat günümüzde yüksek erişilebilirlik çok önemli bir kavram haline geldi ve kesinti sürelerini en aza indirgemek için bu yönde açık kaynaklı bir çok yazılım geliştirildi. Bunlardan bazıları;

  • PAF (PostgreSQL Auto Failover)
  • repmgr(Replication Manager)
  • pglookout

Kurumsal firmalarda genelde en çok tercih edilen araç ise patroni.  Bunun sebebi diğer yazılımların; split-brain dediğimiz failover senaryosu sonrası, cluster’ın primary sunucuyu seçmekte zorlanma durumunu aşamaması. Patroni, bu durumu diğer açık kaynak yazılımlara göre daha iyi yöneten, (HA) yüksek erişilebilir ve ölçeklendirilebilir (yatayda büyüyebilir) cluster oluşturmak için geliştirilmiş açık kaynak bir yazılımdır.

Offline olan sunucularınızda kurulum yapmak için, devam yazısını ilerleyen günlerde paylaşıyor olacağım. Şimdilik Github sayfasına göz atmak için; https://github.com/zalando/patroni

Autofailover yapıyı sağlamak ve yüksek erişilebilirlik sağlamak için yalnızca patroniyi kurmak yeterli değildir.  Resim-1’de olması gereken patroni cluster mimarisini ve autofailover yapıda olması için kullanılabilecek ek örnek yazılımları görebilirsiniz. Aşağıda bu bileşenleri açıklıyor olacağım.

HAProxy : (High Availability Proxy) Uygulama tarafından gelen yükü arka planda sunucularınıza dağıtan, bir yük dengeleyici görevi gören açık kaynak kodlu ve ücretsiz bir yazılımdır.

PGBouncer : Sunucuya yük getirmeden, yüksek performansla çalışabilen bir connection pooling yazılımıdır. Connection pool dediğimiz kavram ise, veritabanı bağlantılarını bellekte tutup, gelen yeni bağlantılarda var olan bu havuz içerisindeki bağlantıları kullanması durumudur. Bu durumu postgresql sunucularına bırakırsanız max_connection olarak set ettiğiniz değer kadar connection açabileceksiniz ve açtığınız her connection için MB tüketirsiniz. Limitiniz dolduğunda ise bu parametreyi arttırıp, veritabanınızı restart etmeniz gerekir. Bu durumdan kaçınmak için, pgbouncer gibi connection pool araçları tercih edilebilir ve KB’lar seviyesinde memory tüketerek daha iyi performansla çalışabilirsiniz. PgBouncer genelde diğer yazılımlara göre daha az memory tükettiği için tercih edilir.

Resim-1’de görüldüğü gibi HaProxy, pgbouncer’a bağlanır ve connection burada açılır. Daha sonra veritabanına gidip sorgunun sonucunu alır.

ETCD : Key-value (anahtar-değer) depolama yazılımıdır, veritabanı gibi düşünebiliriz. Patroni cluster içerisindeki veritabanı node’larını izler ve bir failover durumu sırasında hangi node’un primary olarak hizmet verebileceğinin seçimini yapar. ETCD, patroninin en önemli bileşenlerinden biridir, etcd cluster’ınız fail olursa veritabanı cluster’ınızda hizmet veremez. Bu nedenle minimum 3 node’lu bir etcd cluster oluşturmanızı öneririm.

Öneri : Tüm bu bileşenlerin farklı node’lar üzerinde olması daha sağlıklı olabilir. Böylece bir düğümün erişilemez olması durumunda bağımlılıkları azaltır ve yedekliliği sağlamış olursunuz. Fakat pgbouncer, veritabanı sunucusu üzerinde kullanılabilir, böylece araya bir network daha sokmamış olursunuz.

Bileşenleri açıkladıktan sonra, bir patroni cluster oluşturmak için gereken port’ları bulabilir ve firewall erişimlerinizi bu portlara göre tanımlayabilirsiniz.

PORT TANIMI
5432 PostgreSQL’in standart portu. HAProxy bağlantı için bu portu kullanılır.
6432 HAProxy tarafından gelen bağlantıları yönlendirmek için kullanılır. Örnek mimarimiz için Pgbouncer bu portu kullanabilir.
2380 Etcd sunucuları arasındaki standart iletişim portu.
2379 Etcd’ye bağlanmak için gereken port.
8008 HAProxy tarafından, düğümlerin durumunu kontrol etmek için kullanılan standart patroni portu.
7000 HAProxy istatistiklerini arayüz üzerinden görebilmeniz için web bağlantı portu.

 

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

 

Referanslar

www.mshowto.org

Kaynakça; https://github.com/vitabaks/postgresql_cluster

https://github.com/zalando/patroni

Youtube : https://www.youtube.com/watch?v=cbuZTd8Vr1c&list=PLDnPJVp10UxXLhYbrPXn1Y2mTRxig-cQn l

 

Yazı gezinmesi

Mobil sürümden çık