Záměr
Záměrem je mít fyzický server se systémem VMWare ESXi a který je připojen na záložní zdroj UPS. V případě výpadku napájení dojde k vypnutí jednotlivých VM a nakonec je vypnut ESXi.
Řešení
Server je fyzicky připojen na UPS zařízení, které je monitorováno jedním z virtuálních hostů (Ubuntu server) pomocí programu NUT. UPS je připojena přes USB kabel. Na VMWare ESXi je nainstalován klient serveru NUT, který se dotazuje serveru NUT a je jim řízen. Verze VMWare ESXi je 7.0 Update 3.
Instalace
Instalace NUT (Network UPS Tools) je provedena na Ubuntu server 22.04 ve verzi 2.7.4 zadáním
$ sudo apt install nut
Po instalaci spustíme monitorování připojených UPS zařízení zadáním příkazu
$ nut-scanner
Konfigurace NUT serveru
Nejprve změníme konfiguraci v souboru /etc/nut/nut.conf, kde nastavíme mód netserver
#MODES: none/standalone/netserver/netclient
MODE=netserver
Nastavíme konfiguraci v souboru /etc/nut/ups.conf zadáním následujících příkazů
# Přidání popisu sekce do konfigurace
$ echo -e "\n# Detected UPS from USB" | sudo tee -a /etc/nut/ups.conf
# Přidání detailů detekované UPS na portu USB
$ nut-scanner -UNq 2>/dev/null | sudo tee -a /etc/nut/ups.conf
# Prohlédneme si výsledek
$ sudo cat /etc/nut/ups.conf
Měli bychom dostat podobný výsledek
# Detected UPS from USB
[nutdev1]
driver = "usbhid-ups"
port = "auto"
vendorid = "051D"
productid = "0002"
bus = "001"
Nyní můžeme změnit [nutdev1] na něco reprezentativnějšího pro naši UPS a také přidat pole desc pro popis zařízení UPS. K úpravě konfiguračních souborů budeme potřebovat příkaz sudo a editor nano nebo vi. Zadáme příkaz
# Edit the config file
$ sudo nano /etc/nut/ups.conf
a nastavíme něco podobného. Název v hranatých závorkách [APCBU1400] budeme používat dále v konfiguračních souborech.
# Detected UPS from USB
[APCBU1400]
driver = "usbhid-ups"
port = "auto"
desc = "APC Back-UPS 1400VA / 700w"
vendorid = "051D"
productid = "0002"
bus = "001"
Dále ověříme práva a existenci složek v cestě /var/run/nut
$ mkdir /var/run/nut
$ chown root:nut /var/run/nut
$ chmod 770 /var/run/nut
Ověříme, zda nám probíhá komunikace s UPS správně
$ upsdrvctl start
Dále upravíme konfiguraci v souboru /etc/nut/upsd.conf kde nastavíme adresy a porty, na kterých bude server NUT naslouchat
=======================================================================
# LISTEN <address> [<port>]
# IP v4 adresa a port localhost
LISTEN 127.0.0.1 3493
# IP v4 adresa a port LAN rozhraní
LISTEN 10.11.57.17 3493
# Případně IP v6 adresy a porty
# LISTEN ::1 3493
V souboru /etc/nut/upsd.users nastavíme uživatele, jeho heslo a práva
# To add a user for your upsmon, use this example:
#
# [upsmon]
# password = pass
# upsmon master
# or
# upsmon slave
#
# The matching MONITOR line in your upsmon.conf would look like this:
#
# MONITOR myups@localhost 1 upsmon pass master (or slave)
[monuser]
password = nastavené-heslo
upsmon master
V souboru /etc/nut/upsmon.conf nastavíme v sekci MONITOR připojovací řetězec, kde použijeme nastavení definována v souboru /etc/nut/upsd.users
# Examples:
#
# MONITOR myups@bigserver 1 monmaster blah master
# MONITOR su700@server.example.com 1 upsmon secretpass slave
# MONITOR myups@localhost 1 upsmon pass master (or slave)
MONITOR APCBU1400@localhost 1 monuser nastavené-heslo master
Nakonec načteme data z připojené UPS zadáním
$ upsc APCBU1400@localhost
battery.charge: 100
battery.voltage: 54.70
battery.voltage.high: 52.00
battery.voltage.low: 41.60
battery.voltage.nominal: 48.0
device.mfr:
device.model: LIHVX1K4
.........
NUT klient na ESXi
Nejprve na ESXi hostu povolíme a spustíme službu SSH.
Dále si stáhneme nejnovějšího klienta NUT pro ESXi z adresy https://rene.margar.fr/2012/05/client-nut-pour-esxi-5-0/
Stažený soubor zkopírujeme do ESXi, do adresáře /tmp/nut.
Dále zkontrolujeme, zda máme ESXi hosta přepnutého na úroveň Community acceptance. Je to z důvodu instalace staženého balíčku. použijeme příkaz pro zjištění úrovně
[root@localhost:~] esxcli software acceptance get
Nastavení úrovně provedeme ve webovém rozhraní nebo použijeme příkaz
[root@localhost:~] esxcli software acceptance set -level=CommunitySupported
Já jsem použil pro kopírování souboru Bitwise SSH Clienta. Nejprve se přepneme do adresáře /tmp/nut a rozbalíme zkopírovaný soubor a spustíme instalaci
[root@localhost:~] cd /tmp/nut
[root@localhost:/tmp/nut] tar -xzf NutClient-ESXi-2.8.0-2.4.1.x86_64.tar.gz
[root@localhost:/tmp/nut] sh upsmon-install.sh
Installation Result
Message: Operation finished successfully.
Reboot Required: false
VIBs Installed: Margar_bootbank_upsmon_2.8.0-2.4.1
VIBs Removed:
Skipped VIBs:
Pro zahájení používání klienta NUT v systému ESXi není nutné restartovatserver. Před prvním spuštěním však musíte klienta NUT nakonfigurovat.
Přihlásíme se do webového rozhraní ESXi, v sekci Host vybereme Manage, System, Advanced settings a dáme vyhledat klíč UserVars.Nut. Nastavíme hodnoty klíčů následovně:
- klíč UserVars.NutPassword nastavíme heslo, které jsme nastavili na NUT serveru v souboru /etc/nut/upsd.users
- klíč UserVars.NutUser nastavíme uživatele, kterého jsme nastavili na NUT serveru v souboru /etc/nut/upsd.users
- klíč UserVars.NutUpsName nastavíme název UPS, které jsme nastavili na NUT serveru v souboru /etc/nut/ups.conf
Dále přejdeme do sekce Services, vyhledáme službu NutClient a nastavíme ji na automatické spouštění se startem hosta ESXi.
Ověření nastavení brány firewall
Při instalaci by měl být přidán soubor upsmon.xml do složky /etc/vmware/firewall. Kontrolu provedeme zadáním příkazu
[root@localhost:~] ls /etc/vmware/firewall
service.xml upsmon.xml vltd-firewall.xml vsanhealth.xml
Dalším příkazem zjistíme, zda je NUT služba ve firewallu povolena
[root@localhost:~] esxcli network firewall ruleset list
Zkontrolujeme, zda nám klient komunikuje se serverem NUT zadáním
[root@localhost:~] /opt/nut/bin/upsc název-ups@ip-adresa-nut-serveru
battery.charge: 100
battery.charge.low: 10
battery.charge.warning: 50
battery.date: 2001/09/25
battery.mfr.date: 2017/08/17
battery.runtime: 932
battery.runtime.low: 120
battery.type: PbAc
battery.voltage: 13.5
battery.voltage.nominal: 12.0
device.mfr: American Power Conversion
..................
S jakou verzí VMWare ESXi jste to dělal?
Jede mi to na ESXi 7.0 Update 3