Blog

SCADA'da Tanıksız İki Sunuculu Yedeklilik: Üçüncü Cihaz Olmadan Kesintisiz İzleme

· 8 dk

Giriş

SCADA sunucusu durduğunda tesis kör kalır: alarmlar görünmez, trendler kesilir, operatör sahayı ancak panodan izleyebilir. Bu yüzden kritik tesislerin ihale şartnamelerinde neredeyse her zaman aynı madde yer alır: iki sunucu, aktif/yedek çalışma, operatör müdahalesi olmadan otomatik geçiş ve geçişte veri kaybı olmaması.

Kâğıt üzerinde basit görünen bu istek, pratikte iki zor soruyu beraberinde getirir: iki sunucu birbirini göremediğinde hangisi aktif kalacak ve saha cihazları aynı anda iki sunucudan gelen bağlantıya ne diyecek? Bu yazıda Eselfware SCADA'nın bu iki soruyu nasıl yanıtladığını anlatıyoruz.

Klasik Yaklaşımların Sorunu

Yaygın küme (cluster) çözümleri kararı çoğunluk oyuyla verir. İki sunucu birbirini kaybettiğinde kimin haklı olduğuna üçüncü bir oy karar verir: bir tanık bilgisayar, bir hakem (arbiter) ya da ek bir sunucu. Üçüncü oy yoksa iki sunucu da kendini aktif sanabilir; buna bölünmüş beyin (split-brain) denir.

Sahada bu yaklaşımın iki bedeli vardır:

  • Ek donanım ve bakım: Tanık cihaz da arızalanabilir, güncellenmesi ve izlenmesi gerekir.
  • Tek bağlantılı cihazlar: Birçok Modbus TCP cihazı ve seri ağ geçidi aynı anda yalnız bir istemci kabul eder. İki sunucu da sahaya bağlanmaya çalışırsa biri reddedilir ya da cihazın oturumu düşer. Yedek sunucunun "sadece okuması" bile sorun yaratır.

Tanıksız Karar: İki Sunucu Kendi Aralarında Nasıl Anlaşır?

Eselfware'de üçüncü bir akıllı cihaz yoktur. Karar, her sunucuda çalışan yedeklilik ajanı tarafından üç bağımsız işaret birleştirilerek verilir:

  • İki ayrı kalp atışı yolu: Sunucular birbirine saniyede beş kez imzalı (HMAC) durum mesajı gönderir; biri tesis ağından, diğeri ikinci bir yoldan (doğrudan kablo, ayrı ağ kartı, VLAN ya da fiber). Tek yolun kopması yalnızca uyarıdır, geçiş başlatmaz.
  • Ağ geçidi kontrolü: "Ağda kim kaldı?" sorusunun cevabı. Karşı tarafı kaybeden sunucu, tesisin ağ geçidine hâlâ ulaşıyorsa ağda kalan odur; ulaşamıyorsa ağdan kopan kendisidir.
  • Süre sıralaması: Ağdan kopan aktif sunucu yalnız kaldığını yaklaşık 3 saniyede anlar ve sahayı bırakır; yedek ise ancak 6 saniye sessizlikten sonra devralır. Bu sıralama, iki sunucunun aynı anda aktif olmasını önler.

Her rol değişiminde bir dönem numarası artar; eski döneme ait "ben aktifim" mesajları yok sayılır. Karşı sunucunun işletim sistemi ping'e cevap verdiği hâlde ajanı susmuşsa, sunucu sahaya hâlâ bağlı olabileceği için yedek devralmaz, şüpheli durumuna geçip alarm üretir. Kararı operatör verir.

Sahaya Yalnız Aktif Sunucu Bağlanır

Her iki sunucuda da tam ve bağımsız bir sistem çalışır: veritabanı, gerçek zamanlı motor, arayüz, alarm ve rapor servisleri. Fark şudur: gerçek zamanlı motor sahaya yalnızca rolü "aktif" iken bağlanır. Yedek sunucu cihazlara bağlantı açmaz, yoklama bile yapmaz; bildirim, zamanlanmış rapor ve betik de çalıştırmaz. Böylece tek istemci kabul eden cihazlar ve seri ağ geçitleri güvenle kullanılabilir.

Motor aktife geçmek için yedeklilik ajanından taze bir "aktif" onayı ister. Elektrik kesintisinden dönen bir sunucu, diskteki eski "aktif" bilgisine bakarak sahaya bağlanmaz.

Yedek Her An Güncel

Aktif sunucunun topladığı her şey birkaç saniyede bir yedeğe aktarılır:

  • Tanımlar (cihazlar, etiketler, alarmlar, panolar, kullanıcılar) yerinde eşitlenir; yalnız değişen kayıtlar yazılır.
  • Arşiv, alarm ve olay kayıtları artımlı aktarılır. Yedek bir süre kapalı kaldıysa (örneğin güncelleme sırasında) aradaki eksik kayıtlar kendiliğinden bulunup tamamlanır.

Aktarım imzalı isteklerle yapılır ve yalnız aktif sunucu veri verir; sunucuya özel ayarlar aktarılmaz.

Tek Tuşla, Veri Kaybı Olmadan Geçiş

Bakım veya güncelleme için aktif sunucu, Ayarlar > Yedeklilik sayfasındaki tek bir tuşla değiştirilir. Tuş ancak yedek hazırsa kullanılabilir: iki haberleşme yolu da canlı, sağlığı iyi ve verisi güncel olmalıdır. Hazır değilse ekran nedenini yazar ("yedek sunucu verileri henüz eşitlemedi" gibi).

Geçişte gerekçe zorunludur; işlem denetim kaydına ve SIEM'e düşer. Yedek, geçiş başladıktan sonra başlayan son bir veri aktarımını tamamlamadan devralmaz. Böylece son saniyelerin verisi de kaybolmaz.

Operatör İçin Tek Adres

Operatörlerin hangi sunucunun aktif olduğunu bilmesine gerek yoktur. Bir ortak adres (sanal IP) her zaman aktif sunucunun üzerindedir ve rol değiştiğinde yeni aktife taşınır. Tarayıcıdaki ekranlar geçişten birkaç saniye sonra kaldığı yerden devam eder. Her sunucuya kendi adresinden erişim de korunur; yedek sunucunun durumunu doğrudan izlemek mümkündür.

Kurulum Arayüzden

Yedeklilik komut satırı gerektirmeden Ayarlar > Yedeklilik sayfasından kurulur: karşı sunucunun adresi, ikinci haberleşme yolu, ortak adres ve paylaşılan anahtar girilir, ilerleme ekranda izlenir. Güvenlik duvarı kuralları yalnız karşı sunucuya izin verecek şekilde otomatik yazılır. Windows'ta rol ajanı oturum açılmadan başlayan bir hizmet olarak çalışır.

Laboratuvar Sonuçları

İki bilgisayar ve yalnız tek bir bağlantıya izin veren bir Modbus cihazıyla yapılan testlerde:

ÖlçümSonuç
14 arıza senaryosunda (kablo, ağ geçidi, işletim sistemi, ajan donması, planlı devir…) çift aktif0
Arızada otomatik devralma~6 sn
Planlı geçişte saha boşluğu1,2–1,5 sn
Planlı geçişte operatör ekranı kesintisi (ortak adres)2,4–3,5 sn

Tek bağlantılı cihaz testler boyunca hiçbir zaman iki sunucudan aynı anda bağlantı almadı.

Ağ Önerisi

Kalp atışı ve ağ geçidi kontrolü ağın kararlılığına dayanır. Sahada iki sunucunun kablolu ağa bağlanmasını öneriyoruz. Laboratuvarda Wi-Fi üzerinde de çalıştık: tek tük kayıp paketler (%0,3–0,5) sistem tarafından tolere ediliyor, ancak kablolu ağ güvenlik payını belirgin biçimde artırır.

Sonuç

Yedeklilik, "iki sunucu koyduk" demekle bitmez; asıl mesele iki sunucunun aynı anda aktif olmamasını ve sahaya tek bağlantı gitmesini garanti etmektir. Eselfware bunu üçüncü bir cihaz olmadan, iki bağımsız haberleşme yolu, ağ geçidi kontrolü ve dikkatli bir süre sıralamasıyla sağlar. Tek tuşla geçiş ve ortak adres sayesinde bakım da operatörü rahatsız etmeden yapılır.

İki sunuculu yedeklilik, on-premise kurulumlarda lisans seçeneği olarak sunulur. Projeniz için ayrıntılı bilgi almak isterseniz bizimle iletişime geçin.

Tüm yazılar