Wysyłam kilka serwerów ESXi 5.1 do zdalnych biur, gdzie będą zasilane przez UPS APC.
Chciałbym, aby UPS wyzwalał zamknięcie podłączonego serwera - wtedy polegałbym na konfiguracji ESXi, aby zająć się zamykaniem / zawieszaniem hostowanych na nim maszyn wirtualnych.
Widzę, że APC ma udokumentowane rozwiązanie przy użyciu wyłączania sieci PowerChute , ale wymaga to skonfigurowania dodatkowego serwera dla każdego biura i wymaga kart sieciowych na każdym UPS. Ogólnie używamy UPS bez karty sieciowej (np. Back-UPS Pro) - są one wyposażone w złącze USB i są łatwo dostępne w miejscach, w których znajdują się nasze biura.
Jak podłączyć zasilacz UPS do hosta ESXi przez USB, a następnie pozwolić ESXi wykryć awarię zasilania, a następnie podjąć odpowiednie działania? Czy ktoś zdołał to zrobić?
Odpowiedzi:
Według APC nie jest to możliwe i konieczne jest zamknięcie sieci Powerchute. Próbowaliśmy tego kilka razy z USB i nie znaleźliśmy rozwiązania.
VMWare ma tutaj informacje na temat korzystania z rozwiązania zatwierdzonego przez APC.
Pomyślałby również, że SmartUPS byłby lepszym wyborem i można go dopasować do karty sieciowej. Oczywiście więcej pieniędzy, ale jeśli twoje serwery są w ogóle ważne, ten koszt powinien być tego wart. Zapewnia także więcej monitorowania i alertów, które mogą być przydatne w zdalnej witrynie. Musisz również zapewnić wystarczający czas działania dla wszystkich maszyn wirtualnych, aby czysto zamknąć, a następnie zamknąć hosta
źródło
Tak, to możliwe. Oto szczegóły mojej podobnej konfiguracji.
Konfiguracja sprzętowa: APC Smart-UPS 1500 podłączony do hosta ESXi 5.1 przez USB. Maszyna wirtualna z systemem Linux działająca na tym hoście ESXi. UPS jest podłączony do tej maszyny wirtualnej za pomocą opcji ESXi USB pass through.
Konfiguracja oprogramowania: wzorzec NUT (Network UPS Tools) działający na maszynie wirtualnej i natywny podrzędny NUT ESXi działający na hoście ESXi.
Logika wyłączania: VM uruchamia usbhid-upy sterownika UPS , który jest odpowiedzialny za komunikację z UPS przez USB. Proces upsd łączy się z UPS poprzez sterownik usbhid-ups i monitoruje stan UPS. Proces główny programu upsmon działający na tej samej maszynie łączy się z programem upsd i inicjuje zamknięcie systemu. Host ESXi uruchamia drugą instancję programu upsmon, który również łączy się z tą samą maszyną wirtualną upsd za pośrednictwem sieci wewnętrznej.
W przypadku awarii zasilania następuje następująca sekwencja:
Pliki do pobrania:
NUT dla Linuxa można zainstalować z pakietu.
Natywnego klienta NUT dla serwera ESXi można pobrać, korzystając z ostatniego linku na tej stronie: http://www.networkupstools.org/download.html
Niektóre moje skrypty i pliki conf są tutaj (pokazane są tylko zmienione linie): http://pastebin.com/KkEeanK1
Uwagi:
Oczywiście jest więcej szczegółów i zajęło mi trochę czasu, aby działało tak, jak powinno. Ale teraz działa bardzo dobrze. Ten system uwzględnia przypadki, w których po prostu wyłączasz monitorującą maszynę wirtualną od wewnątrz (skrypt vmware-tools nie jest uruchamiany) lub jeśli jest to inicjowane przez hosta ESXi zamykanie maszyny wirtualnej (brak flagi / etc / killpower, więc brak obciążenia UPS), lub jeśli jest to zamknięcie ESXi (to samo). Jedyne ważne jest, aby ta maszyna wirtualna działała JAK NAJSZYBCIEJ po rozruchu hosta i zamknęła ją na końcu (więc czas przestoju hosta jest przewidywalny - jak wspomniano powyżej, dla mnie jest to około 1 minuta i 2 minuty na wszelki wypadek).
Mój UPS monitorujący maszynę wirtualną z systemem Linux to także serwer udostępniania Samba / NFS do przechowywania kopii zapasowych, serwer NAT / DHCP dla maszyn wirtualnych i niektóre inne lekkie usługi. W stanie bezczynności zajmuje około 22 MHz udziałów procesora ESXi i około 10 MB aktywnej pamięci RAM. Dzięki zastosowaniu NUT możesz w razie potrzeby zasilać więcej urządzeń z tego samego UPS, a wszystkie można z wdziękiem wyłączyć. Nie jest wymagana PowerChute i / lub droga karta sieciowa.
źródło
Super pytanie. W rzeczywistości można to zrobić całkiem nieźle - przynajmniej w niektórych konfiguracjach. Wypróbowałem następujący przepis na kilku hostach ESXi 5.5. Zasadniczo rozwiązanie wygląda następująco:
ctrl urb status -62
wdmesg
, są szanse, kontroler fizyczny nie zgadza się jeden w VM. Jeśli się zgadzają - to problem. Mam jedną konfigurację z tego rodzaju problemem i nie ma prawdziwego rozwiązania tego problemu.apcupsd
na maszynie wirtualnej z systemem Linux - w Ubuntu możeszsudo apt-get install apcupsd
zainstalować najnowszą wersję. Projekt NUT jest również miły, ale jestem tradycjonalistą.sudo apt-get install putty-tools
plink root@<your ESXi host IP>
. Możesz natychmiast zamknąć połączenie. Celem jest zapisanie klucza hosta, aby program plink nie pytał go ponownie, gdy uruchomimy go za pomocą skryptu/etc/apcupsd/apcupsd.conf
i zmień poniższe elementy, aby pasowały:UPSNAME < the name you'd like your UPS to have > UPSCABLE usb UPSTYPE usb # DEVICE DIRECTIVE should be blank for USB DEVICE
Upewnij się również, że/etc/default/apcupsd
takISCONFIGURED=yes
/etc/apcupsd/apccontrol
i przewiń dodoshutdown
skrzynki. Niech to wygląda tak:doshutdown) echo "UPS ${2} initiated Shutdown Sequence" | ${WALL} # Shut down indirectly by triggering the ESXi host to do the # shutdown via VMWare tools /usr/bin/plink root@< your ESXi host IP > -pw < your root pw > "/sbin/shutdown.sh && /sbin/poweroff" ;;
sudo service apcupsd restart
i sprawdź, czy wszystko działa, wywołującapcaccess
. Jeśli nie, sprawdź dzienniki i dmesgvCenter -> <your host> -> Manage -> Settings -> VM Startup/Shutdown
. Upewnij się, że zamknięcie ma na celu zamknięcie systemu-gościa.Po uruchomieniu tych rzeczy
doshutdown
skryptlet z kroku 8 zostanie wywołany w przypadku awarii zasilania. To z kolei wywołuje skrypt shutdown.sh na hoście ESXi, który sygnalizuje pakiet VMWare Tools w każdej maszynie wirtualnej na hoście, aby wykonać czyste zamknięcie za pośrednictwem systemu-gościa. Z mojego doświadczenia wynika, że działa lepiej niż oprogramowanie PowerChute firmy APC.Jeśli chcesz monitorować rzeczy na swoich maszynach wirtualnych, możesz skonfigurować na nich podrzędne instancje apcupsd, które łączą się z głównym UPS-em sterującym maszyną wirtualną z systemem Linux. Twoje podrzędne pliki apcupsd.conf powinny mieć następujący wpis:
UPSTYPE net < your UPS control VM IP >:3551
Wpisy podobne
UPSCABLE
i takie nie mają znaczenia w tym przypadku. Działa to również z wersją systemu Windowsapcupsd
(dostępną tutaj ). Możesz użyć dołączonegoapctray.exe
do sprawdzenia aktualnego stanu rzeczy.Myślę, że to prawie wszystko obejmuje.
źródło
doshutdown
sekwencję. Dodaliśmy${APCUPSD} --killpower
tuż przed/usr/bin/plink
częścią, dzięki czemu UPS wyłącza się po chwili i uruchamia się automatycznie po przywróceniu zasilania. Warto również zauważyć, że krok 6 należy wykonać tak, jak zostałroot
nabyty za pośrednictwemsu
lubsudo su
, ale niesudo -s
.Możesz rozważyć użycie funkcji przekazywania urządzenia USB do gościa z programem PowerChute lub innym oprogramowaniem zdolnym do monitorowania stanu UPS i mogącym spowodować zamknięcie hosta ESXi (np. Apcupsd ). ESXi oficjalnie obsługuje tylko bardzo ograniczoną liczbę urządzeń USB do przekazywania , ale ludzie już od jakiegoś czasu podłączają i przechodzą przez różne klasy urządzeń, ale APC UPS USB wydaje się działać zgodnie z tym przewodnikiem dla maszyny wirtualnej z systemem Windows lub ten dla maszyny Wirtualnej CentOS Linux .
źródło
Spójrz na vSphere Management Assistant (vMA) stąd Używamy go w moim biurze do robienia tego, co próbujesz, jednak z Smart-UPS podłączonym przez USB, a nie przez Back-UPS.
źródło
Chociaż jest to możliwe (prawdopodobnie / ogólnie), nie sądzę, aby automatyczne wyłączanie komputera na zasilaniu bateryjnym było dobrym pomysłem. Jeśli zamierzasz to zrobić, to ze względów praktycznych powinieneś po prostu zaoszczędzić pieniądze na zasilaczu bateryjnym i pozwolić, aby utrata zasilania zamknęła za ciebie maszynę. (Oczywiście, czyste wyłączanie jest zawsze lepsze niż utrata zasilania, ale wydaje się, że brakuje ci czasu, który ma czas pracy baterii dłuższy niż kilka minut, jeśli automatycznie wyłączasz wszystkie rzeczy po utracie zasilania. )
Sposób, w jaki zawsze sobie z tym poradziłem, polega na tym, że monitorowanie ostrzega skojarzenia zabezpieczeń, gdy nastąpi przerwa w zasilaniu, dzięki czemu skojarzenia zabezpieczeń mogą wykorzystywać szarą materię do decydowania, kiedy (a nawet jeśli), aby zamknąć serwery. Jeśli jest to krótka przerwa w działaniu, zamknięcie serwerów może nie być dobrym pomysłem lub możesz chcieć pozostawić niektóre serwery działające tak długo, jak to możliwe, i wyłączać je tylko przed wyczerpaniem się baterii. Wydaje mi się, że jest to raczej zadanie decyzyjne bardziej odpowiednie dla człowieka niż prosta zasada.
źródło
W dawnych czasach instalacji typu baremetal APC PowerChute Plus był istotną częścią mojego procesu instalacji. Za pomocą prostego kabla do komunikacji szeregowej i ich pliku binarnego tylko w Red Hat łatwo było skonfigurować reguły zarządzania lokalnie podłączonym serwerem. Dostępne były podstawowe powiadomienia e-mail o zdarzeniach bateryjnych UPC, zdarzeniach związanych z zasilaniem linii i wyłączaniem:
i
lub
Plus rozsądny interfejs, aby zobaczyć, co się dzieje ...
To oprogramowanie ostatecznie stało się komercyjne (lub zostało pochowane na stronie internetowej APC). Istnieje kilka podejść typu open source, aby zapewnić coś podobnego. Wszystko to jednak komplikuje się w przypadku pojedynczych hostów VMWare ESXi.
Wydaje się, że jest to coś, co VMWare powinno było włączyć do podstawowego hypervisora. Jest to podstawowy i może zapewnić przyzwoity poziom ochrony dla użytkowników. Najczęstsze środki zaradcze, które widzę teraz, to przejście przez USB na dedykowaną maszynę wirtualną, podejście demona sieciowego lub robienie tego, co robię; brak konfiguracji automatycznego wyłączania lub wyłączania baterii ...
To prawda, że zwykle używam zasilacza UPS, który może obsługiwać obciążenie systemu przez godzinę lub dłużej, ale zdarzają się dłuższe przerwy w dostawie prądu. Być może alternatywą jest zebranie kilku tanich lub odnowionych kart sieciowych i planowanie zakupu urządzeń SmartUPS jako minimum ...
źródło
Sprawdź poniższy link . Nie jest to najbardziej eleganckie rozwiązanie, ale bardzo praktyczne, bardzo proste rozwiązanie. Możliwe są wady w zakresie bezpieczeństwa (w zależności od konkretnego projektu sieci, gości załadowanych na Hosty i dostępu użytkowników do tych gości, ale można wykonać to połączenie.
źródło
Użyłem rozwiązania MrMajestyk i zmieniłem dostęp ssh tylko przez łącze plink z dostępem ssh bez hasła przy użyciu klucza publicznego rsa. Klucz rsa wygenerowany w maszynie wirtualnej apcupsd musi być zawarty w pliku / etc / ssh / keys-root / uprawnione_ klucze hosta vmware.
źródło