1. Anasayfa
  2. VMware vCenter

vCenter Server 8.0 U2’de SPS ve vsan-health Servislerinde Kararsızlık Sorunun Giderilmesi


VMware vSAN yazılım tabanlı depolama altyapısı için kritik bir bileşendir. Ancak VMware vCenter Server 8.0 U2 ortamında çok sayıda VSAN etkin cluster yönetildiğinde bazı servislerde kararsızlık görülebilir. Özellikle SPS (Storage Policy Service) ve vsan-health servisleri aşırı yük altında kalarak yavaşlar veya yanıt vermez hale gelir.

Bu da hem yönetimsel hem de operasyonel anlamda aksamalara neden olur.

Bu sorun yaşandığında aşağıdaki belirtiler ortaya çıkar:

  • Skyline Health görünümü yüklenmez veya yalnızca ara sıra yüklenebilir.
  • VM provisioning işlemleri başarısız olabilir.
  • SPS loglarında thread pool starvation (iş parçacığı tükenmesi) ve yüksek bekleme süreleri raporlanır:
Request took 1199610 millis to execute. | Slow run() method execution Alert
Active thread count is: 20, Core Pool size is: 20, Queue size: 163, Time spent waiting in queue: 2311468 millis | ThreadPool Starvation Alert
  • Ayrıca sps.log içerisinde vsanHealth bağlantılarında timeout hataları görülebilir:
Method 'listVStorageObjectsForSpec' completed with undeclared fault
ConnectionException: http://localhost:1080/vsanHealth invocation failed with "java.net.SocketTimeoutException: Read timed out"

Bu sorunun kaynağı servisler arası gereksiz API çağrılarının artmasıdır:

  • vsanmgmtvcd, vsanvcmgmtd ve SPS arasında sirküler bağımlılık bulunur.
  • Ortamda bulunan her VSAN cluster bu çağrıların sayısını artırır.
  • Büyük ölçekli ortamlarda bu çağrılar bir eşik değerini aşarak thread pool’ları kilitler.
  • Sonuçta servisler aşırı bekleme süreleriyle yanıt veremez hale gelir.

VMware’in gözlemlerine göre, sorun özellikle 200–300 cluster civarında daha belirginleşmektedir.

VMware bu sorunu bilinen bir problem olarak tanımlamış ve şu açıklamayı yapmıştır:

“Çok sayıda VSAN cluster içeren ortamlarda SPS ve vsan-health servislerinde instabilite görülebilir. Bu konu üzerinde çalışılmakta olup gelecekteki sürümlerde düzeltilecektir.”

Geçici Çözüm (Workaround)

Servislerin iş parçacığı kapasitesini artırmak için VsanVcMgmtConfig.xml dosyası düzenlenebilir.

Adım Adım Uygulama

Dosyayı yedekleyin:

cp /usr/lib/vmware-vsan/VsanVcMgmtConfig.xml ~/VsanVcMgmtConfig.bak

Dosyayı açın:

vi /usr/lib/vmware-vsan/VsanVcMgmtConfig.xml

Thread pool kapasitesini artırın:

<config>
   <vmacore>
      <threadPool>
         <maxThreads>500</maxThreads>   <!-- Eklendi -->
      </threadPool>
   </vmacore>
</config>

Throttle değerini ayarlayınız.

<config>
   <adapterServer>
      <throttleFixed>300</throttleFixed>  <!-- Eklendi -->
   </adapterServer>
</config>

Kaydedin ve çıkınız.

:wq!

vsan-health servisini yeniden başlatınız.

vmon-cli -r vsan-health

vCenter Kaynaklarını Artırma

  • vCenter Appliance’a ek vCPU atamak thread pool kapasitelerinin dinamik olarak artmasına yardımcı olur.
  • Ancak bu yalnızca geçici bir iyileşme sağlar ve workaround konfigürasyonu yine de gereklidir.

vCenter Server 8.0 U2 üzerinde çok sayıda VSAN cluster yönetildiğinde SPS ve vsan-health servislerinde kararsızlık görülebilir.

  • Belirtiler: Skyline Health yüklenmez, provisioning başarısız olur, loglarda thread starvation mesajları bulunur.
  • Neden: Servisler arası sirküler bağımlılığın API çağrılarını gereksiz yere artırması.
  • Çözüm: VsanVcMgmtConfig.xml dosyasında thread pool ve throttle ayarlarını artırmak, ayrıca gerekirse vCenter’a ek vCPU atamak.
  • Kalıcı çözüm: VMware’in ilerleyen sürümlerde yayınlayacağı resmi düzeltme.

Bu geçici çözüm sayesinde büyük ölçekli ortamlarda servislerin kararlılığı artırılabilir ve yönetim operasyonları kesintisiz devam ettirilebilir.