Patroni Cluster Nedir
  1. Anasayfa
  2. Open Source

Patroni Cluster Nedir

1

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.

PORTTANIMI
5432PostgreSQL’in standart portu. HAProxy bağlantı için bu portu kullanılır.
6432HAProxy tarafından gelen bağlantıları yönlendirmek için kullanılır. Örnek mimarimiz için Pgbouncer bu portu kullanabilir.
2380Etcd sunucuları arasındaki standart iletişim portu.
2379Etcd’ye bağlanmak için gereken port.
8008HAProxy tarafından, düğümlerin durumunu kontrol etmek için kullanılan standart patroni portu.
7000HAProxy 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

 

Bu İçeriğe Tepkin Ne Oldu?
  • 25
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 1
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 1
    k_zd_m_
    Kızdım!

Trakya Üniversitesi Bilgisayar Mühendisliği mezunuyum. İş hayatıma Eylül 2018'de Gantek Teknoloji firmasında DBA olarak başladım ve burada çalıştığım süre boyunca Linux İşletim Sistemi ve Oracle Database konularında yetkinlik kazandım. Gantek'te olduğum süre boyunca outsource olarak birçok firmanın projelerine dahil oldum ve Oracle'la beraber opensource dünyasına atıldım. Kasım 2019'den itibaren Vodafone'da Opensource DBA olarak çalışmaktayım. Postgresql, MongoDB ve Cassandra DB üzerinde yaklaşık 15 farklı projeyi yönetmekte ve kendimi opensource dünyasında geliştirmekteyim.

Yazarın Profili
İlginizi Çekebilir

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Yorumlar (1)

  1. Gizem selamlar,
    Verdiğin bilgiler için teşekkür ederim. Bu yapı ile ilgili Configuration yazın mevcut mu? Ben Patroni’yi kullanarak HA yapısını kurmaya çalıştım ama HAProxy üzerinde otomatik olarak diğer bilgisayara geçmiyor. Acaba senin bir conf. yazın var mı nasıl yapıldığına dair.
    Teşekkür ederim.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir