Kısa cevap

vSphere HA, cluster'daki bir host arızalandığında o host üzerinde çalışan sanal makineleri başka host'larda yeniden başlatır. Kesintisiz çalışma sağlamaz: sanal makineler kapanır ve yeniden açılır. Amaç kesintiyi sıfırlamak değil, kısaltmaktır.

Neden bu ayrım önemli?#

HA sık sık "sunucu çökse bile hiçbir şey olmaz" diye anlatılır. Doğru ifade şudur: sunucu çökerse sanal makineler birkaç dakika içinde başka bir sunucuda yeniden açılır. Bu sürede:

  • Sanal makineler kapalıdır.
  • İşletim sistemi temiz kapanmadığı için dosya sistemi kurtarma yapabilir.
  • Uygulama, beklenmedik kapanmadan etkilenmiş olabilir.

Bu kabul edilebilir bir davranıştır — ama ne olduğunu bilerek planlamak gerekir.

HA nasıl karar verir?#

Cluster'daki host'lar birbirini sürekli izler. Mimari kabaca şöyle işler:

Arıza anındaki akış

  1. Cluster içinde bir host master rolünü üstlenir; diğerleri onunla haberleşir.
  2. Master, host'lardan gelen ağ kalp atışlarını (heartbeat) izler.
  3. Bir host'tan kalp atışı gelmeyi kesince, master paylaşılan datastore üzerinden ikinci bir kontrol yapar.
  4. Host gerçekten erişilemiyorsa, üzerindeki sanal makineler diğer host'larda yeniden başlatılır.

Yalıtılmış host ne yapar?#

Bir host ağdan yalıtıldığını fark ettiğinde, yapılandırmaya göre sanal makineleri kapatabilir, güç kesebilir veya çalışır bırakabilir. Bu davranış (isolation response) cluster ayarlarında belirlenir ve ortamın yapısına göre seçilmelidir.

Admission control#

HA'nın yeniden başlatma sözü, ancak kalan host'larda yeterli kapasite varsa tutulabilir. Admission control tam olarak bunu güvence altına alır: cluster'da bir host arızası için kapasite ayrılmasını zorunlu kılar ve bu kapasiteyi tüketecek yeni sanal makinelerin açılmasını engeller.

HA neyi kapsamaz?#

Sık karıştırılan süreklilik mekanizmaları
MekanizmaNeye karşı korurKesinti
HAHost donanım arızasıSanal makine yeniden başlar
Fault ToleranceHost arızası (kesintisiz)Kesinti yok, kaynak maliyeti yüksek
YedeklemeSilme, bozulma, fidye yazılımıGeri yükleme süresi kadar
ReplikasyonSite/depolama kaybıDevralma süresi kadar

Tablo yatay olarak kaydırılabilir.

HA bir yedekleme değildir. Bir sanal makine içindeki veriler silinirse, şifrelenirse veya bozulursa HA hiçbir şey yapmaz; çünkü ortada bir host arızası yoktur. Aynı şekilde, sanal makine içindeki işletim sistemi çökerse HA varsayılan olarak devreye girmez — bunun için ayrıca konuk izleme (VM monitoring) etkinleştirilmelidir.

Kontrol listesi#

  • Paylaşılan depolamaya tüm host'lar erişebiliyor mu?
  • Yönetim ağı yedekli mi? Tek bir anahtar arızası cluster'ı bölüyor mu?
  • Admission control açık ve ayrılan kapasite gerçek mi?
  • Kritik sanal makinelerin yeniden başlatma önceliği tanımlı mı?
  • Bir host kaybında kalan host'lar toplam yükü taşıyabiliyor mu?

HA ile fault tolerance arasındaki fark nedir?#

İkisi de arıza karşısında hizmeti sürdürmeyi amaçlar ama farklı bedellerle farklı sonuç verir.

HA ve fault tolerance
ÖlçütHAFault tolerance
YöntemMakineyi başka host’ta yeniden başlatırİkinci bir kopyayı sürekli eşzamanlı çalıştırır
KesintiAçılış süresi kadarYok
Kaynak maliyetiYalnızca boş kapasiteMakinenin kaynağının iki katı
KapsamCluster’daki bütün makinelerSeçilmiş, sınırlı sayıda makine

Tablo yatay olarak kaydırılabilir.

Buradaki asıl ayrım kesinti değil, uygulama durumudur. HA'da makine yeniden başladığı için işletim sistemi sıfırdan açılır; o anda bellekte olan işlenmemiş veri kaybolur. Fault tolerance'ta böyle bir kayıp yoktur.

Bu yüzden ikisi arasında seçim yapılmaz; HA cluster genelinde açılır, fault tolerance ise gerçekten gerektiren birkaç makineye ayrıca uygulanır.

HA devreye girdiğinde kesinti ne kadar sürer?#

Toplam süre iki parçadan oluşur ve ikinci parça genellikle çok daha uzundur:

  1. Arızanın anlaşılması. Host'un yanıt vermediğine karar verilmesi ve yeniden başlatma kararının verilmesi — onlarca saniye mertebesinde.
  2. Makinenin açılması ve hizmetin gelmesi. İşletim sisteminin açılışı, dosya sistemi denetimi, uygulamanın başlaması, veritabanının kurtarma yapması.

İkinci parça tamamen sanal makinenin içindeki yazılıma bağlıdır ve dakikalar sürebilir. Bir veritabanı için kurtarma süresi, HA'nın kendi karar süresinin kat kat üstünde olabilir.

Arızayla yalıtım nasıl ayırt edilir?#

Bu, HA'nın en kritik kararıdır. Yanlış ayırt edilirse aynı makine iki yerde birden çalışmaya başlar ve aynı diske iki taraftan yazılır.

Ayrımı mümkün kılan şey, ağın tek kanıt olarak kullanılmamasıdır. Host'lar birbirini ağ üzerinden göremediğinde, depolama üzerinden ikinci bir kanal kontrol edilir: host paylaşılan depolamaya hâlâ işaret bırakıyorsa çalışıyor ama ağdan kopmuş demektir; bırakmıyorsa gerçekten düşmüştür.

Ağdan kopmuş olduğunu anlayan host ise kendi üzerindeki makinelere ne yapacağına önceden tanımlanmış kurala göre karar verir — kapatmak ya da çalışır bırakmak. Bu kural, iki yerde birden çalışma riskini ortadan kaldıran son halkadır.

HA için en az kaç host gerekir?#

Teknik olarak iki host yeterlidir, ama iki host'lu bir cluster'da "yedeklilik var" demek ancak tek bir koşulla doğrudur: her host, tek başına bütün iş yükünü kaldırabiliyor olmalıdır.

İki host'un toplam kapasitesinin tamamını kullanan bir cluster'da bir host düştüğünde HA makineleri yeniden başlatmaya çalışır, ama kalan host'ta yer bulamaz. Sonuç, yedekliliğin yalnızca kâğıt üzerinde olmasıdır.

Bu nedenle host sayısı kadar önemli olan şey boş bırakılan kapasitedir. Üç host'lu bir cluster'da bir host'un kaybını karşılamak için her host'un üçte bir kadar boş durması yeterlidir; iki host'luda bu oran yarıdır. Host sayısı arttıkça aynı yedeklilik için oransal olarak daha az kapasite ayrılır — admission control bu hesabı zorunlu kılmak için vardır.

Önemli noktalar

  • HA, host arızasında sanal makineleri başka host'ta yeniden başlatır; kesintisizlik sağlamaz.
  • Datastore heartbeating, ağdan yalıtılmış host ile çökmüş host'u ayırt eder.
  • Admission control olmadan HA'nın sözü kapasiteyle desteklenmez.
  • HA yedekleme değildir; veri kaybı senaryolarında devreye girmez.