Giriş
Birçok otomasyon platformu tek düğümlü (single-node) bir mimariyle başlar. Tek bir süreç kullanıcı arayüzüne hizmet verir, işleri yürütür, zamanlamaları yönetir ve gerçek zamanlı güncellemeleri işler. Bu kurulum basit olsa da tek bir hata noktası (single point of failure) oluşturur. Bu süreç durursa, otomasyon da durur.
Büyük ölçekli altyapı otomasyonu çalıştıran kuruluşlar için — özellikle DevOps veya platform mühendisliği ortamlarında — otomasyon sisteminin kesintiye uğraması ciddi bir operasyonel risk haline gelebilir.
İşte Aktif-Aktif Yüksek Erişilebilirlik (Active-Active High Availability - HA) burada devreye girer. Semaphore UI, birden fazla örneğin aynı anda çalıştığı ve iş yükünü paylaştığı bir mimariyi destekler. Bu, münferit düğümler çökse bile otomasyonun devam etmesini sağlarken aynı zamanda yatay ölçeklendirmeyi de mümkün kılar.
Tek Düğümlü Otomasyondaki Sorun
Standart bir dağıtımda, tek bir Semaphore UI süreci tüm temel sorumlulukları yerine getirir:
- Web arayüzüne hizmet verir
- API isteklerini işler
- Zamanlanmış işleri yürütür
- Otomasyon görevlerini çalıştırır
- Tarayıcıya gerçek zamanlı güncellemeler gönderir
Bu mimari küçük ekipler veya test ortamları için iyi çalışır. Ancak kritik bir sınırlama getirir: Tek bir süreç çökerse tüm sistem kullanılamaz hale gelir. Birçok kullanıcının ve otomatik iş akışının bulunduğu üretim ortamlarında bu durum aşağıdaki gibi riskler yaratır:
- Kesintiye uğrayan dağıtımlar
- Başarısız olan zamanlanmış işler
- Operasyonel görünürlük kaybı
- Bakım sırasında kapalı kalma süresi (downtime)
Bu darboğazı ortadan kaldırmak için Semaphore UI, aktif-aktif yüksek erişilebilirlik dağıtımlarını destekler.
Semaphore UI’da Aktif-Aktif HA Nedir?
Aktif-aktif HA mimarisinde, bir yük dengeleyicinin arkasında aynı anda birden fazla özdeş Semaphore UI örneği çalışır. Geleneksel yük devretme (failover) sistemlerinin aksine birincil veya bekleme (standby) düğümü yoktur. Her örnek kullanıcı arayüzü isteklerini, API çağrılarını, zamanlanmış işleri ve görev yürütmeyi eksiksiz olarak yönetebilir.
Trafik küme genelinde dağıtılır ve bir örnek çökerse, diğerleri isteklere kesintisiz olarak hizmet vermeye devam eder. Bu mimari hem sistem güvenilirliğini hem de yürütme ölçeklenebilirliğini artırır.
Üst Düzey Mimari
Tipik bir aktif-aktif dağıtım birkaç temel bileşenden oluşur.
- Yük Dengeleyici (Load Balancer). Kullanıcılar NGINX, HAProxy veya bulut yük dengeleyicileri gibi bir yük dengeleyici aracılığıyla bağlanır. Yük dengeleyici, HTTP ve WebSocket trafiğini kullanılabilir Semaphore düğümleri arasında dağıtır.
- Semaphore Düğümleri. Her düğüm özdeş bir Semaphore UI örneği çalıştırır. Herhangi bir düğüm kullanıcı isteklerini alabilir, otomasyon işlerini başlatabilir, zamanlanmış görevleri işleyebilir ve gerçek zamanlı güncellemeler gönderebilir. Tüm düğümler eşit olduğundan, sistem uygulama katmanında tek bir hata noktasına sahip değildir.
- Paylaşılan Veritabanı. Tüm örnekler PostgreSQL veya MySQL gibi paylaşılan bir veritabanına bağlanır. Veritabanı; projeler, şablonlar, envanterler, zamanlamalar, görev geçmişi, kullanıcı hesapları ve RBAC yapılandırması dahil olmak üzere kalıcı veriler için tek güvenilir kaynak görevi görür.
- Redis Koordinasyon Katmanı. Redis, birden fazla düğümün tek bir sistem gibi davranmasını sağlayan koordinasyon katmanını sunar. Üç önemli işleve hizmet eder:
- Dağıtılmış Kilitler (Distributed Locks) aynı anda yalnızca bir örneğin bir işi veya adımı yürütmesini sağlar. Dağıtılmış kilitleme olmadan, birden fazla düğüm aynı görevi aynı anda çalıştırmayı deneyebilir.
- Paylaşılan Görev Kuyruğu Durumu. Redis, işlerin tam olarak bir çalışan (worker) tarafından alınmasını sağlamak için görev kuyruğunu korur. Tüm düğümler aynı kuyruğu görür ve görev yürütmesini koordine eder.
- Pub/Sub Mesajlaşması, düğümlerin görev güncellemeleri, küme bildirimleri, önbellek geçersiz kılma, UI durum güncellemeleri gibi olayları yayınlamasına olanak tanır. Bu, tüm düğümlerin gerçek zamanlı olarak senkronize kalmasını sağlar.
Bir HA Kümesinde İş Yürütme Nasıl Çalışır?
Çok düğümlü bir Semaphore dağıtımında, görev yürütme koordineli bir akışı izler.
- Kullanıcı Bir Görevi Tetikler. Bir kullanıcı UI veya API aracılığıyla bir iş başlatır. İstek herhangi bir Semaphore örneğine ulaşabilir.
- Görev Meta Verileri Saklanır. İstegi alan düğüm, görev meta verilerini veritabanına yazar ve Redis üzerinden iş sinyali verir.
- Bir Düğüm Görevi Alır. Kullanılabilir düğümlerden biri görevi Redis’ten alır, dağıtılmış bir kilit edinir ve görevi veritabanında çalışıyor olarak işaretler.
- Görev Yürütülür. Düğüm görevi yerel olarak veya dağıtılmış runner’lar / aracılar aracılığıyla yürütür. İlerleme ve günlükler sürekli olarak veritabanına geri yazılır.
- Sonuçlar Yayınlanır. Görev güncellemeleri Redis Pub/Sub üzerinden yayılır, böylece tüm düğümler ve kullanıcı arayüzü istemcileri senkronize kalır.
Birden Fazla Runner ile Yatay Ölçeklendirme
Yüksek erişilebilirlik, görev yürütmenin yatay olarak ölçeklendirilmesini de sağlar. İşleri yalnızca Semaphore düğümlerinin kendisinde çalıştırmak yerine, yürütme birden fazla runner’a veya aracıya devredilebilir. Büyük DevOps ekipleri için bu mimari kurumsal ölçekte otomasyon iş yüklerini destekler:
- iş yükünü altyapı genelinde dağıtma
- otomasyon kapasitesini ölçeklendirme
- etki alanını sınırlamak için yürütme ortamlarını yalıtma
- paralel olarak binlerce düğüm çalıştırma
Aktif-Aktif Semaphore Dağıtımının Avantajları
Gelişmiş Güvenilirlik. Bir örnek çökerse, diğerleri trafiğe hizmet vermeye ve işleri yürütmeye devam eder.
Sıfır Kesinti ile Bakım. Düğümler sistem durdurulmadan güncellenebilir veya yeniden başlatılabilir.
Yatay Ölçeklenebilirlik. Kapasiteyi artırmak için yük dengeleyicinin arkasına ek Semaphore düğümleri eklenebilir.
Birincil Düğüm Bağımlılığı Yoktur. Tüm düğümler eşittir, bu da karmaşık yük devretme mekanizmalarını ortadan kaldırır.
Küme Genelinde Tutarlı Durum. Paylaşılan veritabanı depolaması ve Redis koordinasyonu tüm örnekleri senkronize tutar.
Tipik Kullanım Senaryoları
Aktif-aktif Semaphore dağıtımları, sürekli otomasyon kullanılabilirliği gerektiren ortamlarda yaygındır:
- Büyük DevOps Ekipleri. Birçok mühendisin gün boyunca otomasyon görevlerini tetiklediği kuruluşlarda birden fazla Semaphore örneği, işlerin ve isteklerin paralel olarak işlenmesini sağlayarak tek bir düğümün darboğaz haline gelmesini önler.
- Kurumsal Altyapı. Büyük sunucu, sanal makine veya konteyner filolarını yöneten şirketler, yapılandırma ve bakım için yoğun şekilde otomasyona güvenir. Yüksek erişilebilirlik, kritik otomasyon iş akışlarının çalışır durumda kalmasını sağlamaya yardımcı olur.
- CI/CD Otomasyonu. Semaphore CI/CD işlem hatlarının bir parçası olarak kullanıldığında kesintiler dağıtımları ve sürümleri geciktirebilir. Aktif-aktif dağıtımlar, münferit düğümler yeniden başlasa veya çökse bile işlem hatlarının güvenilir bir şekilde çalışmasını sağlar.
- Platform Mühendisliği. Platform ekipleri, self-servis otomasyon sağlayan dahili geliştirici platformlarının bir parçası olarak sıklıkla Semaphore kullanır. Yüksek erişilebilirlik, bu dahili hizmetlerin geliştirme ekipleri için kararlı ve yanıt verebilir kalmasını sağlar.
Sonuç
Aktif-aktif yüksek erişilebilirlik, Semaphore UI’ın tek bir otomasyon sunucusundan dayanıklı bir dağıtılmış sisteme dönüşmesini sağlar. Kullanıcı arayüzünü, zamanlamayı ve görev yürütmeyi yönetmek için tek bir sürece güvenmek yerine, birden fazla Semaphore örneği bir yük dengeleyicinin arkasında birlikte çalışır ve durumu bir veritabanı ile Redis aracılığıyla paylaşır. Sonuç; münferit düğümler çökse bile kullanılabilir kalan ve iş yükü arttıkça yatay olarak ölçeklenebilen bir otomasyon platformudur.
Aktif-aktif HA desteği Semaphore Enterprise sürümünde mevcuttur. Yüksek erişilebilirliğe ek olarak Enterprise sürümü, daha büyük ekipler ve üretim ortamları için tasarlanmış yetenekler içerir — örneğin kuruluşların projeler, ekipler ve ortamlar genelinde ayrıntılı izinler tanımlamasına olanak tanıyan gelişmiş RBAC (rol tabanlı erişim kontrolü).
Altyapınız için yüksek erişilebilirlikli bir otomasyon platformunu değerlendiriyorsanız, HA mimarisini test etmek ve DevOps iş akışlarınıza nasıl uyduğunu görmek için Enterprise sürümünün denemesini talep edebilirsiniz.
Sıkça sorulan sorular
Redis, paylaşılan veritabanları, düğüm arızaları ve yatay ölçekleme ile HA'nın nasıl çalıştığı.
Aktif-aktif yüksek erişilebilirlik nedir?
Aktif-aktif yüksek erişilebilirlik, birden fazla uygulama örneğinin aynı anda çalıştığı ve hepsinin isteklere yanıt verebildiği anlamına gelir. Birincil düğüm yoktur — herhangi bir örnek trafiği yönetebilir ve işleri yürütebilir.
Semaphore HA modunda neden Redis kullanır?
Redis, örnekler arasında bir koordinasyon katmanı görevi görür. Düğümlerin aynı işi aynı anda yürütmemesini sağlamak için dağıtılmış kilitler, paylaşılan görev kuyruğu durumu ve Pub/Sub mesajlaşması sağlar.
Semaphore HA dağıtımları için hangi veritabanını destekler?
Semaphore, kalıcı sistem verilerini depolamak için paylaşılan veritabanı olarak PostgreSQL ve MySQL'i destekler.
Bir Semaphore düğümü çökerse ne olur?
Yük dengeleyici, trafiği doğrudan kalan düğümlere yönlendirir. Çalışan işler devam eder ve yeni işler diğer örnekler tarafından devralınır.
Semaphore yatay olarak ölçeklenebilir mi?
Evet. Yürütme kapasitesini artırmak ve daha büyük otomasyon iş yüklerini yönetmek için ek Semaphore düğümleri ve runner'lar eklenebilir.

