Sim é possivel. Aqui estão os detalhes da minha configuração semelhante.
Configuração de hardware:
APC Smart-UPS 1500 conectado ao host ESXi 5.1 via USB. Uma máquina virtual Linux em execução neste host ESXi. O no-break está conectado a esta VM usando a opção de passagem ESXi USB.
Configuração do software:
mestre NUT (Network UPS Tools) em execução na VM e escravo nativo do ESXi NUT em execução no host ESXi.
Lógica de desligamento: a
VM está executando o driver usbhid-ups do UPS, responsável pela comunicação com o UPS via USB. O processo upsd se conecta ao no-break através do driver usbhid-ups e monitora o estado do no-break. O processo mestre upsmon em execução na mesma máquina se conecta ao upsd e inicia o desligamento. O host ESXi está executando a segunda instância do upsmon, que também se conecta à mesma upsd da VM via rede interna.
Na falta de energia, ocorre a seguinte sequência:
- O UPS via usbhid-ups informa ao upsd sobre falha de energia.
- (opcional, útil se você quiser desligar em alguns minutos em vez de bateria fraca), o upsmon na VM inicia o timer de 5 minutos com upschedched . O temporizador é interrompido se a energia for restaurada.
- Quando o timer dispara ou quando o no-break relata bateria fraca, o upsmon eleva o sinalizador FSD (desligamento forçado) para upsd.
- Em uma configuração NUT independente, o sinalizador FSD desligaria a máquina. Mas aqui o comando shutdown é substituído por um log simples como "Eu deveria encerrar agora, mas estou aguardando o host". E não faz nada.
- O sinalizador FSD também é lido pelo ESXi upsmon, que inicia o desligamento do host ESXi.
- O host ESXi encerra todas as máquinas virtuais uma a uma. O importante é que a VM que executa o upsd deve ser desligada por último (usando a configuração de sequência de inicialização / desligamento do ESXi).
- Importante: esta VM deve ter as ferramentas vmware instaladas. Quando recebe o comando guest shutdown do host, o script vmware-tools shutdown está sendo iniciado. Este script verifica o sinalizador / etc / killpower . Se nenhum sinalizador, ele não faz nada (isso significa que o usuário desligou o Linux, não o evento UPS). Mas se o sinalizador existir (FSD ativo), esse script envia ao no-break o comando de desligamento atrasado (digamos, em 3 minutos).
- Após executar o script vmware-tools, a VM convidada é encerrada.
- O ESXi vê o último estado de desligamento da VM e fica inativo (leva cerca de 1 minuto, porque não há outras máquinas em execução no momento).
- Nos 2 minutos restantes, o no-break corta a energia.
- Quando a energia é restaurada, o ESXi inicia e liga todas as VMs. A máquina de monitoramento do no-break deve ser iniciada primeiro (a mesma configuração que para a ordem de desligamento).
Transferências:
O NUT para Linux pode ser instalado a partir do pacote.
O cliente NUT nativo para servidor ESXi pode ser baixado usando o último link nesta página: http://www.networkupstools.org/download.html
Alguns dos meus scripts e arquivos conf estão aqui (apenas as linhas alteradas são mostradas): http://pastebin.com/KkEeanK1
Notas:
É claro que há mais detalhes, e levou algum tempo para eu fazer isso funcionar como deveria. Mas agora ele funciona muito bem. Esse sistema contabiliza os casos em que você apenas encerra a VM de monitoramento de dentro (o script vmware-tools não é executado) ou se é um host ESXi iniciado pelo encerramento da VM (sem sinalizador / etc / killpower, portanto, nenhum UPS descarrega) ou se for um desligamento do ESXi (o mesmo). O único importante é ter essa VM executando o mais rápido possível após a inicialização do host e desligá-la por último (para que o tempo de inatividade do host seja previsível - como dito acima, são cerca de 1 minuto para mim e mais 2 minutos que reservo apenas por precaução).
O meu UPS monitorando a VM do Linux também é um servidor de compartilhamento Samba / NFS para armazenamento de backup, o servidor NAT / DHCP para VMs e alguns outros serviços leves. São necessários cerca de 22 MHz de compartilhamentos de CPU ESXi e cerca de 10 MB de RAM ativa quando ociosos. Devido ao uso da NUT, é possível alimentar mais dispositivos do mesmo no-break, se necessário, e todos eles podem ser desligados normalmente. Não é necessário PowerChute e / ou caro Placa de Monitor de Rede.