Sim, é possível. 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 do Linux em execução nesse host ESXi. O no-break está conectado a essa VM usando a opção de passagem USB do ESXi.
Configuração de software:
NUT (Network UPS Tools) mestre em execução na VM e escravo nativo ESXi NUT em execução no host ESXi.
Lógica de desligamento:
A VM está executando o driver da UPS usbhid-ups , que é responsável pela comunicação com o UPS via USB. O processo upsd conecta-se ao no-break por meio do driver usbhid-ups e monitora o estado do no-break. O processo principal do upsmon em execução na mesma máquina conecta-se ao upsd e inicia o encerramento. O host ESXi está executando a segunda instância do upsmon , que também se conecta à mesma VM upsd via rede interna.
Em falha de energia, a seguinte sequência ocorre:
- UPS através de relatórios de usbhid-ups para falar sobre falhas de energia.
- (opcional, útil se você quiser desligar em alguns minutos em vez de bateria fraca) O upsmon na VM inicia o temporizador upssched de 5 minutos. O temporizador é interrompido se a energia for restaurada.
- Quando o timer é disparado ou quando o UPS reporta bateria fraca, o upsmon dispara o sinalizador FSD (shutdown forçado) para o upsd.
- Em uma configuração NUT independente, o sinalizador do FSD desligaria a máquina. Mas aqui o comando shutdown é substituído por um registro simples como "Eu deveria desligar agora, mas estou esperando pelo host". E não faz nada.
- O sinalizador do FSD também é lido pelo upsmon do ESXi, que inicia o encerramento do host do ESXi.
O host ESXi - encerra todas as máquinas virtuais, uma por uma. O importante é que a VM que executa o upsd seja desligada por último (usando a configuração de sequência de inicialização / encerramento do ESXi).
-
Importante: essa VM deve ter as ferramentas VMware instaladas. Quando recebe o comando guest shutdown do host, o script de encerramento do vmware-tools está sendo iniciado. Este script verifica o sinalizador / etc / killpower . Se nenhum sinalizador, ele não faz nada (isso significa que o usuário ativou o desligamento do Linux, não o evento do no-break). Mas se o sinalizador existir (FSD ativo), esse script enviará ao UPS o comando de desligamento atrasado (digamos, em 3 minutos).
- Depois de executar o script vmware-tools, a VM guest é encerrada.
- O ESXi vê o último estado de desligamento da VM e desce sozinho (leva cerca de 1 minuto porque não há outras máquinas em execução agora).
- Em 2 minutos restantes, o no-break interrompe a alimentação.
- Quando a energia é restaurada, o ESXi é iniciado e liga todas as VMs. A máquina de monitoramento da UPS deve ser iniciada primeiro (a mesma configuração da ordem de parada).
Downloads:
O NUT para Linux pode ser instalado a partir do pacote.
O cliente NUT nativo para o servidor ESXi pode ser baixado usando o último link nesta página: link
Alguns dos meus scripts e arquivos conf estão aqui (apenas as linhas alteradas são exibidas): link
Notas:
É claro que há mais detalhes, e levou algum tempo para eu fazer isso funcionar como deveria. Mas agora funciona muito bem. Esse sistema considera os casos em que você simplesmente encerra a VM de monitoramento de dentro (o script vmware-tools não é executado) ou se é um encerramento de VM iniciado pelo host ESXi (nenhum sinalizador / etc / killpower, portanto, nenhum UPS é carregado) ou se é 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 (portanto, o tempo de inatividade do host é previsível - conforme mencionado acima, é de aproximadamente 1 minuto para mim e mais 2 minutos reservados). p>
Monitoramento do meu UPS O Linux VM também é um servidor de compartilhamento Samba / NFS para armazenamento de backup, o servidor NAT / DHCP para VMs e alguns outros serviços leves. Demora cerca de 22MHz de compartilhamentos de CPU ESXi e cerca de 10MB de RAM ativa quando ocioso. Devido ao uso do NUT, você pode alimentar mais dispositivos do mesmo no-break, se necessário, e todos eles podem ser desligados normalmente. Não é necessário PowerChute e / ou placa de monitor de rede cara.