PostgreSQL Yüksek Erişilebilirlik Kümeleme Sistemi: Üç Düğümlü HA Cluster Kurulumu

PostgreSQL Yüksek Erişilebilirlik Kümeleme Sistemi: Üç Düğümlü HA Cluster Kurulumu
Giriş
Modern veri tabanı sistemlerinde kesintisiz hizmet sunumu ve veri güvenliği kritik önem taşımaktadır. PostgreSQL, açık kaynak kodlu bir veri tabanı yönetim sistemi olarak, yüksek erişilebilirlik (High Availability – HA) çözümleri sunarak bu ihtiyaçları karşılamaktadır. Bu makalede, üç düğümlü PostgreSQL HA kümeleme sisteminin kurulumu ve yapılandırması ele alınacaktır.
Sistem Mimarisi
Genel Bakış
Bu kurulum, üç ayrı sunucuda çalışan bir PostgreSQL kümeleme sistemi oluşturmaktadır:
Server1 (192.168.99.50): Ana düğüm (Master) ve etcd koordinatörü
Server2 (192.168.99.51): İkincil düğüm (Slave)
Server3 (192.168.99.52): İkincil düğüm (Slave) ve HAProxy yük dengeleyicisi
Kullanılan Teknolojiler
PostgreSQL
Açık kaynak kodlu, güçlü ve gelişmiş özellikler sunan ilişkisel veri tabanı yönetim sistemidir. ACID uyumluluğu, karmaşık sorgular ve geniş veri türü desteği ile öne çıkmaktadır.
Patroni
PostgreSQL kümeleme sistemlerini yönetmek için geliştirilmiş Python tabanlı bir araçtır. Otomatik failover, konfigürasyon yönetimi ve küme koordinasyonu sağlamaktadır.
etcd
Dağıtık sistemlerde konfigürasyon bilgilerini güvenli bir şekilde saklamak için kullanılan anahtar-değer deposudur. Küme üyeleri arasında koordinasyonu sağlamaktadır.
HAProxy
Yük dengeleme ve bağlantı havuzu yönetimi için kullanılan açık kaynak kodlu bir yazılımdır. Yüksek performans ve güvenilirlik sağlamaktadır.
Kurulum Aşamaları
Ön Hazırlık
Kurulum scripti, her sunucunun IP adresini otomatik olarak tespit ederek uygun konfigürasyonu gerçekleştirir. Sistem, Ubuntu/Debian tabanlı dağıtımlar için optimize edilmiştir.
Ortak Kurulum Adımları
Sistem Güncellemesi: Tüm sunucularda sistem paketleri güncellenmektedir.
PostgreSQL Kurulumu: PostgreSQL ana paketi kurulur, ancak Patroni tarafından yönetileceği için varsayılan servis devre dışı bırakılır.
Python Bağımlılıkları: Patroni ve gerekli Python paketleri (psycopg2-binary, python-etcd) kurulmaktadır.
Veri Dizini Oluşturma: /data/patroni
dizini oluşturulur ve PostgreSQL kullanıcısına uygun izinler verilir.
Server1 Özel Konfigürasyonu
Ana sunucuda ek olarak etcd kurulumu gerçekleştirilmektedir. etcd, küme koordinasyonu için kritik öneme sahiptir ve aşağıdaki parametrelerle yapılandırılır:
- ETCD_LISTEN_CLIENT_URLS: İstemci bağlantıları için dinlenen adresler
- ETCD_INITIAL_CLUSTER: Küme üyelerinin başlangıç konfigürasyonu
- ETCD_ADVERTISE_CLIENT_URLS: Diğer düğümlere duyurulan istemci adresleri
Patroni Konfigürasyonu
Her sunucu için özel Patroni yapılandırma dosyaları oluşturulmaktadır. Bu dosyalar şunları içermektedir:
Küme Tanımları: Scope, namespace ve düğüm adları REST API Ayarları: Patroni yönetim arayüzü için ağ konfigürasyonu etcd Bağlantı Bilgileri: Koordinasyon servisi bağlantı ayarları PostgreSQL Parametreleri: Veri tabanı motor ayarları ve kimlik doğrulama kuralları
HAProxy Konfigürasyonu
Üçüncü sunucuda HAProxy kurularak aşağıdaki özellikler sağlanmaktadır:
Yük Dengeleme: PostgreSQL bağlantılarının düğümler arasında dağıtımı Sağlık Kontrolü: Düğümlerin durumunu sürekli izleme İstatistik Paneli: Port 7000 üzerinden erişilebilen yönetim arayüzü Bağlantı Havuzu: Eşzamanlı bağlantı sayısının optimizasyonu
Güvenlik Özellikleri
Kimlik Doğrulama
Sistem, çoklu kullanıcı kimlik doğrulama mekanizması kullanmaktadır:
- postgres: Süper kullanıcı (şifre: postgres123)
- admin: Yönetici kullanıcı (şifre: admin123)
- replicator: Çoğaltma kullanıcı (şifre: replicator123)
Ağ Güvenliği
pg_hba.conf
ayarları ile ağ erişim kuralları tanımlanmıştır. Sadece küme IP aralığından ve localhost’tan bağlantılara izin verilmektedir.
SSL/TLS Desteği
Sistem, gelecekte SSL/TLS şifreleme eklenmesi için hazır yapıda tasarlanmıştır.
Avantajlar
Yüksek Erişilebilirlik
Ana düğümde arıza durumunda otomatik failover ile hizmet kesintisi minimize edilmektedir. Patroni, düğüm durumlarını sürekli izleyerek gerektiğinde liderlik transferi gerçekleştirir.
Ölçeklenebilirlik
Okuma yükünün ikincil düğümlere dağıtılması ile sistem performansı artırılabilmektedir. HAProxy, okuma sorgularını otomatik olarak uygun düğümlere yönlendirir.
Veri Tutarlılığı
Senkron çoğaltma ile veri kaybı riski minimize edilmektedir. PostgreSQL’in streaming replication özelliği kullanılarak gerçek zamanlı veri senkronizasyonu sağlanır.
Kolay Yönetim
Patroni’nin sunduğu yönetim araçları ile küme operasyonları basitleştirilmiştir. Komut satırı araçları ile manuel failover, düğüm ekleme/çıkarma işlemleri kolayca gerçekleştirilebilir.
Kullanışlı Komutlar
Küme Durumu Görüntüleme:
bashpatronictl -c /etc/patroni.yml list
Manuel Failover:
bashpatronictl -c /etc/patroni.yml failover
HAProxy İstatistikleri:
http://192.168.99.52:7000
PostgreSQL Bağlantısı:
bashpsql -h 192.168.99.52 -p 5000 -U postgres
Öneriler ve İyileştirmeler
Güvenlik İyileştirmeleri
- Şifre Politikası: Varsayılan şifreler mutlaka güçlü şifrelerle değiştirilmelidir
- SSL Şifreleme: Ağ trafiği için SSL/TLS şifreleme eklenmesi önerilir
- Güvenlik Duvarı: IP tabanlı erişim kontrolü için güvenlik duvarı kuralları tanımlanmalıdır
Performans Optimizasyonu
- Bellek Ayarları: PostgreSQL bellek parametreleri sistem kaynaklarına göre optimize edilmelidir
- Disk I/O: SSD disk kullanımı ve uygun dosya sistemi seçimi performansı artırır
- Ağ Yapılandırması: Gigabit Ethernet veya daha hızlı ağ bağlantıları önerilir
İzleme ve Bakım
- Log Yönetimi: Merkezi log toplama sistemi kurulmalıdır
- Performans İzleme: Grafana ve Prometheus gibi araçlar ile sistem izleme
- Yedekleme Stratejisi: Düzenli otomatik yedekleme planı oluşturulmalıdır
Sonuç
Bu üç düğümlü PostgreSQL HA kümeleme sistemi, kritik uygulamalar için güvenilir ve yüksek performanslı bir veri tabanı altyapısı sağlamaktadır. Patroni, etcd ve HAProxy teknolojilerinin entegrasyonu ile otomatik failover, yük dengeleme ve kolay yönetim özellikleri sunulmaktadır.
Kurulum scripti, karmaşık konfigürasyon sürecini otomatikleştirerek hızlı ve tutarlı dağıtım imkanı sağlamaktadır. Güvenlik ve performans önerilerinin uygulanması ile üretim ortamında güvenle kullanılabilecek bir sistem elde edilmektedir.
Bu çözüm, özellikle 7/24 hizmet vermesi gereken web uygulamaları, e-ticaret siteleri ve kurumsal sistemler için ideal bir altyapı seçeneği oluşturmaktadır.
Kurulum için iletişim bölümünden ulaşabilirisiniz.