Sistem durumu denetimleri
CycleCloud, VM'lerin durumunu denetlemek için iki mekanizma sunar: Düğüm Durumu Denetimleri, sağlama aşamasında denetimleri gerçekleştiren ve iyi durumda olmayan VM'lerin katılmasını engelleyen daha yeni bir özelliktir; HealthCheck ise VM kümeye düğüm olarak katıldıktan sonra bunları düzenli aralıklarla çalıştırır.
Düğüm Sistem Durumu Denetimleri
Düğüm Durumu Denetimleri, vm'nin CycleCloud kümesine katılmasına izin verilmeden önce iyi durumda olmayan donanımları algılayabilir. Bu özelliğin geçerli sürümü, /opt/azurehpc/test/azurehpc-health-checks/ altında bulunabilen resmi AzureHPC görüntülerindeki sistem durumu denetimi betiklerini çalıştırır. Bu betiklerin kaynağı AzureHPC Düğüm Durumu Denetimleri deposunda bulunur, ancak kümenizin AzureHPC görüntüsünün sürümünde yerleşik olan sürümün depoda bulunan en son sürüm olmayabileceğini lütfen unutmayın.
Gereksinimler
Düğüm Durumu Denetimleri'nin geçerli sürümü yalnızca 7 Kasım 2023'ten sonra yayımlanan AzureHPC görüntülerini (azurehpc-health-checks sürüm v2.0.6 veya üzerini içeren) ve bunlardan türetilen özel görüntüleri destekler. Düğüm Sistem Durumu Denetimleri şu anda Windows'ta desteklenmiyor.
Slurm Kümeleri için Düğüm Durumu Denetimlerini Etkinleştirme
Slurm kümesi oluşturma formu , Gelişmiş Ayarlar sekmesinde bulunan Düğüm Durumu Denetimlerini etkinleştirmek için bir onay kutusu sunar. kutusunun işaretlenmesi, kümenin HPC düğüm dizisinde Düğüm Durumu Denetimlerini etkinleştirir. Diğer düğüm dizilerinde (veya diğer küme türleri için) Düğüm Durumu Denetimleri'ni etkinleştirmek istiyorsanız, özel bir küme şablonu kullanmanız gerekir.
Düğüm Durumu Denetimleri, yalnızca kutunun işaretini kaldırarak çalışan bir kümede devre dışı bırakılabilir. Değişikliklerin etkili olması için düğüm dizisini ölçeklendirmeye gerek yoktur.
Düğüm Durumu Denetimleri sonuçlarını anlama
Vm sistem durumu denetimlerini geçtikten sonra yazılım yapılandırma aşamasına geçer.
Bir VM sistem durumu denetimi betiklerinden herhangi birinde başarısız olursa CycleCloud'a bir hata iletisi gönderilir ve VM'nin kümeye katılması otomatik olarak engellenir.
Vm, fazla sağlama etkin bir NodeArray'de başlatılırsa (örneğin, Slurm hpc Node Dizisi), aşırı sağlamanın bir parçası olarak vm otomatik olarak değiştirilmelidir. Bu durumda, herhangi bir eylem gerekmez ve kümeye katılmak için iyi durumdaki VM'ler seçilir (ancak küme sayfanızda bir veya daha fazla VM'nin başarısız olduğunu belirten bir hata iletisi görürsünüz).
VM tek bir Düğüm için başlatılırsa, aşırı sağlama devre dışı bırakılmış bir Düğüm Dizisi (örneğin, Slurm htc Node Dizisi) veya fazla sağlama tarafından desteklenenden daha fazla VM sistem durumu denetiminde başarısız olursa, Düğüm Başarısız durumuna geçer ve ayırma başarısız olur. CycleCloud sorunu düzeltmek için VM'nin görüntüsünü yeniden oluşturmayı deneyebilir, ancak yeniden görüntü başarısız olursa düğümün sonlandırılıp değiştirilmesi gerekir (yönetici tarafından el ile veya otomatik ölçeklendirici tarafından otomatik olarak).
Not
Düğüm Durumu Denetimlerini etkinleştirdiyseniz ancak VM görüntüsü yukarıdaki gereksinimleri karşılamıyorsa, tüm VM'lerin kümeye katılmasına izin verilir, ancak durum denetimlerin desteklenmediğini belirten bir uyarı içerir.
Öznitelik Başvurusu
Öznitelik | Tür | Tanım |
---|---|---|
EnableNodeHealthChecks | Boole | (İsteğe bağlı) Bu Düğüm veya Düğüm Dizisi için önyükleme düğüm durumu denetimlerini etkinleştir |
HealthCheck
Azure CycleCloud, HealthCheck adlı iyi durumda olmayan sanal makineleri (VM) sonlandırmak için bir mekanizma sağlar. Hem sistem hem de kullanıcı tanımlı betikler (Python ve Bash), vm'nin genel durumunu belirlemek için düzenli aralıklar (Windows'ta 5 dakika, Linux'ta 10 dakika) çalıştırılır. HealthCheck, yöneticilerin el ile izlemek ve düzeltmek zorunda kalmadan VM'lerin hangi koşullar altında sonlandırılacağını tanımlamasına olanak tanır.
Yerleşik HealthCheck betikleri
CycleCloud özellikli VM'ler iki varsayılan HealthCheck betikleriyle birlikte gelir:
-
converge_timeout betiği, yazılım yapılandırmasını tamamlamamış bir örneği başlatmadan sonraki dört saat içinde sonlandıracaktır. Bu zaman aşımı süresi ayarıyla
cyclecloud.keepalive.timeout
(saniye cinsinden tanımlanır) denetlenebilir. - scheduled_shutdown betiği $JETPACK_HOME/run/scheduled_shutdown içinde unix zaman damgası saniyelerinde kapatma süresi ve açıklama içeren isteğe bağlı ikinci satır içeren oluşturucu dosyalarını arar. Geçerli saat dosyalardaki en erken zaman damgasından sonra olduğunda, VM iyi durumda değil olarak kabul edilir.
Nasıl çalışır?
HealthCheck betikleri $JETPACK_HOME/config/healthcheck.d dizininde bulunur. Linux hem Python hem de Bash betiklerini desteklerken Windows yalnızca Python betiklerini destekler. Betik, VM'nin sistem durumunu belirlemelidir. VM'nin iyi durumda olmadığı tespit edilirse betik, CycleCloud'a vm'nin iyi durumda olmadığını ve sonlandırılması gerektiğini belirten bir durumuyla 254
çıkmalıdır.
HealthCheck çalıştıran bir VM'de oturum açtığınızda , jetpack keepalive komutunu çalıştırarak VM'nin kapatılmasını engelleyebilirsiniz. Linux örneklerinde bir zaman dilimini saat cinsinden veya forever
Windows'da forever
tek seçenek olarak belirtebilirsiniz.
Not
Bir VM iyi durumda değil olarak belirlendiğinde, HealthCheck aracısı CycleCloud'un VM'yi sonlandırması için bir istekte bulunur, VM hiçbir zaman komut aracılığıyla shutdown
yerel olarak kapatılmaz. VM'nin CycleCloud ile iletişim kuramaması durumunda, CycleCloud'a ulaşılana kadar iyi durumda olmasa bile VM çalışır.
Örnek
Basit bir örnek olarak, Linux VM'lerinin 24 saatten uzun süre etkin olmamasını sağlayacak bir HealthCheck betiği yazacağız. Bu betik, bir iş akışının çıkarılan VM'ye nasıl tepki verebileceğini test etmek için düşük öncelikli çıkarmaların benzetimini yapmak için kullanılabilir. Bu betik /opt/cycle/jetpack/config/healthcheck.d/healthcheck_example.sh içine yerleştirilir
#!/bin/bash
# Get the uptime of the system (in seconds) and check to see if it is
# greater than 86,400 (24 hours in seconds). If it is, exit 254 to
# signal that the VM is unhealthy.
if (( $(cat /proc/uptime | awk '{print ($1 > 86400)}'))); then
exit 254
fi
Not
Bu betik , CycleCloud Projesi aracılığıyla veya Özel Görüntü Oluştururken doğrudan eklenerek bir VM'ye yerleştirilebilir.