Mekansal Veriler için Yüksek Erişilebilir Altyapılar: PostgreSQL, Patroni ve Docker

Coğrafi Bilgi Sistemleri (CBS), lojistik, şehir planlama ve sayısız konum tabanlı hizmetin temelini oluşturan mekânsal veriler, günümüz dijital dünyasında kritik bir rol oynamaktadır. Bu verilerin depolanması ve yönetimi, standart tablo verilerinden farklı zorluklar içerse de, temel prensip aynıdır: kesintisiz erişilebilirlik. Bir sistemin donanım arızaları, ağ sorunları veya planlı bakımlar gibi kesintiler karşısında dahi hizmet vermeye devam etme yeteneği olarak tanımlanan Yüksek Erişilebilirlik (High Availability — HA), mekânsal veri altyapıları için hayati önem taşır. Bu makale, PostgreSQL ve PostGIS’in mekânsal veri yeteneklerini, Patroni mimarisinin sağladığı yüksek erişilebilirlik güvencesiyle birleştirerek, bu ihtiyaca yönelik modern ve pratik bir çözümü ele almaktadır.

Temel Teknolojiler: PostgreSQL ve PostGIS

PostgreSQL: Güvenilir ve Genişletilebilir Veri Tabanı

PostgreSQL, dünyanın en gelişmiş açık kaynaklı ilişkisel veri tabanı yönetim sistemlerinden biridir. Güvenilirliği, esnekliği ve SQL standartlarına olan sıkı uyumu ile bilinir. Tek başına temel replikasyon gibi özellikler sunsa da, birincil sunucu çöktüğünde otomatik olarak bir yedeği devreye alan tam teşekküllü bir HA çözümü sunmaz. Bu noktada harici araçlara ihtiyaç duyar.

PostGIS: PostgreSQL’i Mekânsal Bir Güç Merkezine Dönüştürmek

PostGIS, PostgreSQL’i güçlü bir CBS veritabanına dönüştüren bir eklentidir. PostgreSQL’in yeteneklerini mekânsal veri türleri ve fonksiyonları ile zenginleştirerek, coğrafi verilerin veritabanı içinde verimli bir şekilde depolanmasını, sorgulanmasını ve analiz edilmesini sağlar.

PostGIS’in Sunduğu Temel Özellikler:

  • Mekânsal Veri Türleri: Nokta, çizgi, alan gibi temel geometrik şekilleri ve bunların çoklu nokta gibi versiyonlarını da destekler.
  • Mekânsal Fonksiyonlar ve Operatörler: İki coğrafi şekil arasındaki mesafeyi hesaplama (ST_Distance), bir noktanın bir poligon içinde olup olmadığını kontrol etme (ST_Contains), alan ve çevre hesaplama (ST_Area, ST_Perimeter) gibi pek çok analiz fonksiyonu sunar.
  • Mekânsal İndeksleme: Belirli bir alandaki restoranların bulunması gibi coğrafi sorguların son derece hızlı çalışmasını sağlayan R-Tree gibi özel indeksleme mekanizmaları kullanır.

Bu yetenekler sayesinde PostGIS, PostgreSQL’i mekânsal veriler için endüstri standardı bir çözüm haline getirir.

Yüksek Erişilebilirlik Mimarisi: Patroni, ETCD ve HAProxy

PostgreSQL’in tek başına sunmadığı otomatik yük devretme (failover) ve küme yönetimi gibi kritik HA işlevleri, Patroni liderliğindeki bir araç ekosistemi tarafından sağlanır.

Patroni: Küme Orkestratörü

Patroni, PostgreSQL için yüksek erişilebilirlik sağlayan, Python ile yazılmış bir şablondur. Her bir veritabanı sunucusunda çalışan Patroni ajanı, PostgreSQL sürecini yönetir, sağlığını izler ve birincil sunucuda bir sorun tespit ettiğinde otomatik olarak en uygun yedek sunucuyu yeni birincil olarak atar (promote eder). Bu otomatik failover süreci, insan müdahalesi olmadan kesintiyi en aza indirir.

ETCD: Dağılmış Konsensüs ve Küme Beyni

Patroni, kümenin anlık durumunu (hangi sunucunun lider olduğu, yapılandırma ayarları vb.) depolamak ve tüm düğümler arasında tutarlılığı sağlamak için bir Dağıtılmış Konfigürasyon Deposu’na (Distributed Configuration Store — DCS) güvenir. etcd, bu amaçla kullanılan, dağıtık sistemler için özel olarak tasarlanmış, tutarlı bir anahtar-değer (key-value) deposudur. Raft konsensüs algoritmasını kullanarak, küme içinde her zaman tek bir liderin olmasını garanti eder ve “split-brain” (kümenin ağ sorunları nedeniyle iki ayrı lider seçmesi) gibi tehlikeli senaryoları önler.

HAProxy HAProxy: Akıllı Yük Dengeleyici ve Tekil Erişim Noktası

Uygulamaların, o anki lider PostgreSQL sunucusunun hangisi olduğunu bilmesine gerek yoktur. HAProxy, uygulamalar için sabit ve tek bir erişim noktası (single endpoint) görevi görür. Perodik olarak her Patroni düğümünün REST API’sine sağlık kontrolü sorguları gönderir. Sadece lider olan düğüm bu sorguya olumlu yanıt verir ve HAProxy veritabanı bağlantılarını o sunucuya yönlendirir. Bir failover durumunda, yeni lider olumlu yanıt vermeye başlar ve HAProxy trafiği saniyeler içinde yeni lidere kesintisiz bir şekilde kaydırır.

Pratik Uygulama: dockerpatronietcd ile Kubernetes’siz Cluster

Bu güçlü mimari genellikle Kubernetes gibi karmaşık orkestrasyon platformları üzerinde kurulur. Ancak, Kubernetes’in getirdiği yönetim yükü olmadan da bu yapıyı kurmak mümkündür.

dockerpatronietcd adlı github projesi, bu mimariyi yalnızca Docker ve Docker Compose kullanarak hayata geçirmek için pratik bir çözüm sunar. Bu proje sayesinde, tek bir docker-compose up komutuyla, içerisinde birden fazla PostgreSQL/Patroni düğümü, bir etcd sunucusu ve bir HAProxy bulunan tam işlevsel bir yüksek erişilebilir küme saniyeler içinde başlatılabilir.

Bu yaklaşım, geliştirme ve test süreçlerini inanılmaz derecede hızlandırır ve karmaşık HA senaryolarının kolayca simüle edilmesini sağlar:

  • Durum Kontrolü: patronictl list komutu ile kümedeki düğümlerin (hangisinin Lider, hangisinin Replika olduğu) anlık durumu kolayca izlenebilir.
  • Failover Testi: Mevcut lider olan Docker konteynerini docker stop komutuyla durdurarak, Patroni’nin otomatik failover mekanizmasının nasıl devreye girdiğini ve replikalardan birini saniyeler içinde yeni lider olarak atadığını canlı olarak gözlemleyebilirsiniz.

Bu küme üzerine PostGIS eklentisi kurulduğunda mekânsal verilerinizi yüksek erişilebilirlik güvencesiyle depolamaya ve işlemeye başlayabilirsiniz.

Patroni Mimarisinde Failover Senaryosu

 

Sonuç

Mekânsal verilerin yüksek erişilebilirlikle depolanması, modern CBS ve konum tabanlı uygulamalar için bir zorunluluktur. PostgreSQL’in güçlü veri yönetim yetenekleri ve PostGIS’in zengin mekânsal analiz fonksiyonları, bu ihtiyacın temelini oluşturur. Patroni, etcd ve HAProxy’den oluşan mimari ise bu temelin üzerine, otomatik hata algılama, kesintisiz yük devretme ve veri tutarlılığı güvenceleri sunan sağlam bir yapı inşa eder. dockerpatronietcd gibi projeler, bu kurumsal düzeydeki altyapıyı herkes için erişilebilir kılarak, karmaşıklığı basitleştirir ve güçlü çözümlerin daha hızlı bir şekilde hayata geçirilmesine olanak tanır. Bu teknolojilerin bir arada kullanılması, veri kaybı riskini en aza indirirken sistem performansını ve güvenilirliğini en üst düzeye çıkarır.

Kaynaklar

 

Yazar

İbrahim POLAT

Geomatik Mühendisi

Önceki Akademiİstanbul Nüfus Verileriyle Mekansal Dashboard Hazırlama Rehberi