Linux

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

  1. Şifre Politikası: Varsayılan şifreler mutlaka güçlü şifrelerle değiştirilmelidir
  2. SSL Şifreleme: Ağ trafiği için SSL/TLS şifreleme eklenmesi önerilir
  3. Güvenlik Duvarı: IP tabanlı erişim kontrolü için güvenlik duvarı kuralları tanımlanmalıdır

Performans Optimizasyonu

  1. Bellek Ayarları: PostgreSQL bellek parametreleri sistem kaynaklarına göre optimize edilmelidir
  2. Disk I/O: SSD disk kullanımı ve uygun dosya sistemi seçimi performansı artırır
  3. Ağ Yapılandırması: Gigabit Ethernet veya daha hızlı ağ bağlantıları önerilir

İzleme ve Bakım

  1. Log Yönetimi: Merkezi log toplama sistemi kurulmalıdır
  2. Performans İzleme: Grafana ve Prometheus gibi araçlar ile sistem izleme
  3. 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.

Muhammed Kerim Koç

1996 yılında Giresun Şebinkarahisarda dünyaya geldim. İlk ve orta öğretimi Şebinkarahisarda tamamladım. Liseyi Şebinkarahisar Anadolu Teknik ve Endüstri Meslek Lisesinde bitirdim. Üniversite için de Şebinkarahisar Teknik Bilimler Meslek Yüksek Okulunda Bilgisayar programcılığını okudum. Üniversite stajı için gelmiş olduğum özel bir firmada işe başladım. 5,5 yıl bu firmadan çalıştıktan sonra farklı bir sektör olan inşaat sektöründe Bilgi teknolojileri Uzmanı olarak 8 ay çalıştım. Daha sonra özel bir şirkette Sistem Network Sorumlusu olarak 4 ay çalıştıktan sonra proje sonlandırılmasından dolayı işten ayrıldım. Tekrar dan 5.5 yıl çalışmış olduğum firmaya Sistem ve Network Yöneticisi olarak geri döndüm ve çalışmaya başladım. Kendimi geliştirmek için Bilge Adam Akademi den Sistem Uzmanlığı eğitimi aldım. Sanallaştırma ve Ağ tarafında kendimi sürekli olarak geliştiriyorum.

İlgili Makaleler

Başa dön tuşu