Dedicated Sunucu

Bölünme Sorunu: Yedekli Yapıda İki Sunucunun Birden Ana Olması

Sorunun oluşumu, veri bozulma riski, çoğunluk ilkesi, tanık düğüm, zorla devre dışı bırakma, ağ tasarımı ve tatbikat. Bölünme Sorunu: Yedekli Yapıda İki…

Bölünme Sorunu: Yedekli Yapıda İki Sunucunun Birden Ana Olması
İçindekiler
  1. Sorun Nasıl Oluşur?
  2. Neden Bu Kadar Tehlikeli?
  3. Çoğunluk İlkesi
  4. Tanık Düğüm
  5. Zorla Devre Dışı Bırakma
  6. Ağ Tasarımının Rolü
  7. Zaman Ayarları
  8. Tatbikat Yapmak
  9. Sonuç
  10. Sıkça Sorulan Sorular (SSS)
  11. Bölünme sorunu tam olarak nedir?
  12. İki sunucuyla bu sorunu çözebilir miyim?
  13. Yanlış devralmalar oluyor, neden?
  14. Yapımı nasıl test etmeliyim?

Bölünme Sorunu: Yedekli Yapıda İki Sunucunun Birden Ana Olması

İki sunucu kurdunuz, biri ana biri yedek. Ana çökerse yedek devralacak. Ama ana sunucu çökmedi — yalnızca aralarındaki ağ bağlantısı koptu. Şimdi ikisi de kendini ana sanıyor.

Bu yazı, yüksek erişilebilirlik yapılarının en tehlikeli arıza biçimini ele alıyor.

Sorun Nasıl Oluşur?

Yedekli bir yapıda devralma kararı bir gözleme dayanır:

  1. Yedek sunucu, anayı düzenli olarak kontrol eder
  2. Yanıt gelmezse ana çökmüş sayılır
  3. Yedek kendini ana ilan eder
  4. Hizmeti devralır

İkinci adımdaki varsayım hatalı olabilir: yanıt gelmemesi, ana sunucunun çöktüğü anlamına gelmez — yalnızca ulaşılamadığı anlamına gelir.

Aradaki ağ bağlantısı koptuysa ana sunucu sapasağlam çalışıyor olabilir. Bu durumda iki sunucu da aynı anda hizmet verir ve her biri kendini tek ana sanır.

Neden Bu Kadar Tehlikeli?

İki ananın aynı anda çalışması, kesintiden daha kötü sonuçlar üretir:

  • İki ayrı veri kümesi oluşur. Farklı yazmalar farklı yerlere gider.
  • Birleştirme imkânsız hâle gelebilir.
  • Aynı IP iki yerden duyurulur. Ağ karışır.
  • Paylaşımlı depolama bozulabilir.
  • Hangi verinin doğru olduğu belirsizleşir.

İkinci madde asıl felakettir: bölünme sırasında iki sunucuya da yeni kayıtlar yazıldıysa, bağlantı geri geldiğinde hangisinin geçerli olduğuna karar vermek gerekir — ve bu karar kaçınılmaz olarak veri kaybı içerir.

Bir kesinti geri alınabilir; bölünmüş ve çelişen veri geri alınamaz. Bu yüzden yüksek erişilebilirlik tasarımında kesinti, veri bozulmasına tercih edilir.

Çoğunluk İlkesi

Bu sorunun standart çözümü, karar için çoğunluk aramaktır:

Düğüm sayısı Çoğunluk için gereken
2 düğüm 2 — çoğunluk kurulamaz
3 düğüm 2 — bir düğüm kaybı tolere edilir
4 düğüm 3 — hâlâ bir düğüm toleransı
5 düğüm 3 — iki düğüm kaybı tolere edilir

Birinci satır temel bir gerçeği ortaya koyar: iki düğümlü bir yapıda bölünme sorunu matematiksel olarak çözülemez — her iki taraf da bir oy alır ve hiçbiri çoğunluk sağlayamaz.

Dördüncü satır ise ilginç bir sonuç gösterir: dört düğüm, üç düğümden daha fazla tolerans sağlamaz. Bu yüzden kümeler genellikle tek sayıda düğümle kurulur.

Tanık Düğüm

İki sunuculu yapılarda pratik çözüm, üçüncü bir oy eklemektir:

  • Küçük bir tanık düğüm kurulur. Veri tutmaz, yalnızca oy verir.
  • Üçüncü bir lokasyonda bulunmalıdır.
  • Hangi taraf tanığa ulaşabiliyorsa o çoğunluğu sağlar.
  • Diğer taraf kendini devre dışı bırakır.

İkinci madde kritiktir: tanık düğüm iki sunucudan biriyle aynı yerdeyse, o lokasyon kesildiğinde iki oy birden kaybolur ve mekanizma işlevini yitirir.

Tanık düğüm çok küçük bir kaynak gerektirir — bulut üzerinde en düşük seviyeli bir makine genellikle yeterlidir. Maliyeti düşük, faydası büyüktür.

Zorla Devre Dışı Bırakma

Çoğunluk kaybeden düğümün gerçekten susması gerekir. Bunu garantilemenin yolları:

  1. Kendi kendini durdurma. Düğüm hizmeti kapatır.
  2. Güç kesme. Uzaktan yönetim üzerinden.
  3. Depolama erişimini engelleme.
  4. Ağ portunu kapatma. Anahtar üzerinden.

Birinci madde en yaygın ama en az güvenilir olanıdır: sorunlu bir düğümün kendi kendini düzgün kapatacağına güvenmek riskli bir varsayımdır — sistem askıda kalmış olabilir.

İkinci madde bu yüzden tercih edilir. Uzaktan yönetim arayüzü üzerinden gücü kesmek, düğümün durumundan bağımsız olarak çalışır ve kesin sonuç verir.

Kendi donanımınızı yönettiğiniz dedicated server yapılarında bant dışı yönetim erişimi bu mekanizma için kullanılabilir.

Ağ Tasarımının Rolü

Bölünme riskini azaltmanın bir yolu da ağ yedekliliğidir:

Önlem Etkisi
İki ayrı ağ yolu Tek kablo kopması bölünme yaratmaz
Ayrı küme ağı Trafik yükünden etkilenmez
Farklı anahtarlara bağlantı Anahtar arızası izole edilir
Doğrudan kablo bağlantısı Ek bir iletişim yolu

İkinci satır sık atlanan bir önlemdir: küme haberleşmesi normal veri trafiğiyle aynı hattan geçiyorsa, yoğun bir yedekleme işi kalp atışı sinyallerini geciktirip yanlış devralma tetikleyebilir.

Bu senaryoda hiçbir şey bozulmamıştır — yalnızca ağ doludur. Ayrı bir küme ağı bu riski ortadan kaldırır.

Zaman Ayarları

Devralma kararının ne kadar hızlı verileceği bir dengedir:

  • Çok kısa süre: Geçici ağ sorunlarında yanlış devralma.
  • Çok uzun süre: Gerçek arızada uzun kesinti.

Doğru değer, ağınızın gerçek davranışına göre belirlenir: geçici ağ dalgalanmalarının tipik süresini ölçüp, devralma eşiğini onun üstüne ayarlamak yanlış tetiklemeleri önler.

Ayrıca birden fazla başarısız kontrol şartı koymak, tek bir kaçırılan sinyalin devralma tetiklemesini engeller — bu, en basit ve en etkili ayardır.

Tatbikat Yapmak

Yüksek erişilebilirlik yapısı test edilmeden güvenilir sayılmaz:

  1. Ana sunucuyu planlı kapatın. Devralma çalışıyor mu?
  2. Ağ bağlantısını kesin. Bölünme yönetiliyor mu?
  3. Geri dönüşü test edin. Ana geri geldiğinde ne oluyor?
  4. Veri tutarlılığını doğrulayın.
  5. Süreleri kaydedin.

İkinci madde asıl testtir ve genellikle atlanır: sunucuyu kapatmak devralmayı test eder ama bölünme senaryosunu test etmez — ikisi tamamen farklı arıza biçimleridir.

Üçüncü madde de dikkat gerektirir. Eski ana sunucu geri geldiğinde otomatik olarak devralmaya çalışmamalıdır; aksi hâlde ikinci bir bölünme yaşanır.

Sonuç

Bölünme sorunu, yedekli yapılarda kesintiden daha tehlikeli bir arıza biçimidir çünkü bölünme sırasında iki sunucuya da yazılan veriler birleştirilemez ve karar kaçınılmaz olarak kayıp içerir. Temel gerçek şudur: iki düğümlü bir yapıda bu sorun matematiksel olarak çözülemez — üçüncü bir oy gerekir ve o oy üçüncü bir lokasyonda olmalıdır. Küme haberleşmesini ayrı bir ağa taşıyın: yoğun bir yedekleme işi, kalp atışı sinyallerini geciktirip yanlış devralma tetikleyebilir.

Sıkça Sorulan Sorular (SSS)

Bölünme sorunu tam olarak nedir?

Yedek sunucunun, anaya ulaşamadığı için onu çökmüş sayıp devralmasıdır — oysa ana sunucu çalışıyor, yalnızca aradaki ağ kopmuştur. Sonuçta iki sunucu da kendini ana sanır ve aynı anda hizmet verir.

İki sunucuyla bu sorunu çözebilir miyim?

Matematiksel olarak hayır — her iki taraf da bir oy alır ve hiçbiri çoğunluk sağlayamaz. Çözüm, üçüncü bir tanık düğüm eklemektir. Veri tutmayan, yalnızca oy veren küçük bir makine yeterlidir ama üçüncü bir lokasyonda bulunmalıdır.

Yanlış devralmalar oluyor, neden?

Küme haberleşmeniz normal veri trafiğiyle aynı hattan geçiyor olabilir — yoğun bir yedekleme işi kalp atışı sinyallerini geciktirip devralma tetikler. Ayrı bir küme ağı kurun ve devralma eşiğini geçici ağ dalgalanmalarının süresinin üstüne ayarlayın.

Yapımı nasıl test etmeliyim?

Yalnızca sunucuyu kapatarak değil. Sunucu kapatma devralmayı test eder ama bölünme senaryosunu test etmez — ağ bağlantısını kesip her iki tarafın ne yaptığını gözlemleyin. Geri dönüşü de test edin: eski ana geri geldiğinde otomatik devralmaya çalışmamalıdır.