VMware vCenter Server – “no healthy upstream”

Už sa mi stalo niekoľko krát, že po otvoreni https://<vcenter_fqdn>/, vCenter len sucho skonštatoval čiernymi písmenkami na bielom pozadí “no healthy upstream”. Jeden z dôvodov tejto chyby môže byť expirovaný certifikát.

Samotná chyba vyzerá veľmi nezvyčajne. Žiadna pekná grafika, žiaden červený výkričnik. Doteraz si pamatám, akú bezmocnosť som pocítil, keď som ju uvidel prvý krát.

O niečo “prívetivejšie” už vyzerá táto chyba, ktorá sa zobrazí keď sa snažíte otvoriť vSphere client.

Prvý krok, ktorý pri akejkoľvek chybe vCenter servera robím je ten, že skontrolujem či bežia všetky služby ktoré by bežať mali po zapnutí vCenter servera. Keď mám štastie, tak je dostupný VAMI (vCenter server Appliance Management Interface) a môžem si to overiť cez webové UI. Do očí udrie, že služba VMware vCenter Server ktorá ma Startup Type nastavený na “Automatic” je v stave “Stopped”. Skúsim ju teda naštartovať, čo je vačšinou neúspešné. VAMI mi to oznámi a zároveň zobrazí linku na support-bundle (https://<vcenter_fqdn>:443/appliance/support-bundle), ktorý mi pomôže v ďalšom hľadaní príčiny. Po otvorení linky zadám User name (root) a Password do appliance a počkám, kým sa mi stiahne samotný support-bundle v podobe súboru .tar.

Či sa teda jedná o problém s certifikátom, zistím napríklad z logu /var/log/vmware/vsphere-ui/logs/vsphere-ui-runtime.log.stderr. Riadky ako:

Caused by: com.vmware.vim.vmomi.client.exception.VlsiCertificateException: Server certificate chain is not trusted and thumbprint verification is not configured

Caused by: java.security.cert.CertificateException: Unable to construct a valid chain

Caused by: java.security.cert.CertPathBuilderException: Certification path could not be validated.

Caused by: java.security.cert.CertPathValidatorException: Could not validate certificate: certificate expired on 20221027124321GMT+00:00

Caused by: java.security.cert.CertificateExpiredException: certificate expired on 20221027124321GMT+00:00

sú veľmi presvedčivé.

 

Prihlásim sa teda pomocou SSH na vCenter Server appliance, príkazom shell si spustím shell a prepíšem (alebo skôr vložím):

for store in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list | grep -v TRUSTED_ROOT_CRLS); do echo “[*] Store :” $store; /usr/lib/vmware-vmafd/bin/vecs-cli entry list –store $store –text | grep -ie “Alias” -ie “Not After”;done;

Výpis z tohoto zápisu mi zobrazí dátumy expirácie jednotlivých certifikátov a tak budem mať sivé na čiernom, ktorý z certifikátov expiroval. V mojom prípade to bol __MACHINE_CERT.

 

Nahradenie expirovaného Machine SSL certifikátu

V prípade tohoto certifikátu, je jeho nahradenie jednoduché. Stačí spustit vSphere Certificate Manager príkazom /usr/lib/vmware-vmca/bin/certificate-manager a vybrať voľbu

3 – “Replace Machine SSL certificate with VMCA Certificate”

Po zadaní uživateľa s privilégiami umožnujúcimi vykonávať operácie nad certifikátmi (default voľba administrator@vsphere.local je istota) a doplnení niektorých informácií, začne proces generovania nového certifikátu. Tento proces môže trvať niekoľko desiatok sekúnd. Po ukončení procesu je všetko opäť v poriadku a nový certifikát má opäť platnosť 2 roky.

Author: Martin

Infrastructure engineer | virtualization & cloud enthusiast | vSphere specialist | blogger | Veeam Vanguard 2021,2022,2023 | VMware vExpert 2017 - 2023 | VMCE | Slovak VMUG Leader |  user group ambassador for kmug.sk | husband&father