O desligamento do VMware ESXi é acionado pelo UPS da APC conectado via USB

17

Estou enviando um monte de servidores ESXi 5.1 para escritórios remotos, onde eles serão alimentados via UPS da APC.

Eu gostaria que o UPS ativasse o desligamento do servidor conectado - eu então confiaria na configuração do ESXi para cuidar do desligamento / suspensão das VMs hospedadas nele.

Eu posso ver que a APC tem uma solução documentada usando seus PowerChute Network Shutdown , mas isso envolve a configuração de um servidor extra por escritório e exige placas de rede em cada no-break. Geralmente, estamos usando o no-break sem uma placa de rede (por exemplo, o Back-UPS Pro) - eles vêm com um conector USB e estão prontamente disponíveis nos locais onde nossos escritórios estão.

Como eu posso conectar um no-break a um host ESXi via USB, então o ESXi detecta uma queda de energia e então age de acordo? Alguém já conseguiu fazer isso.

    
por dunxd 04.01.2013 / 15:33

9 respostas

5

De acordo com a APC, isso não é possível e você precisa do desligamento do Powerchute Network. Tentamos isso várias vezes com o USB e não encontramos solução.

VMWare tem informações aqui sobre como usar o Solução aprovada pela APC.

Também achamos que o SmartUPS seria uma opção melhor e você pode se adaptar à placa de rede. Naturalmente, mais dinheiro, mas se seus servidores são importantes, esse custo deve valer a pena. Também oferece mais monitoramento e alertas que podem ser úteis em um site remoto. Você também precisa assegurar tempo de execução suficiente para todas as VMs para encerrar e desligar o host de forma limpa

    
por 04.01.2013 / 15:41
19

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:

  1. UPS através de relatórios de usbhid-ups para falar sobre falhas de energia.
  2. (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.
  3. Quando o timer é disparado ou quando o UPS reporta bateria fraca, o upsmon dispara o sinalizador FSD (shutdown forçado) para o upsd.
  4. 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.
  5. O sinalizador do FSD também é lido pelo upsmon do ESXi, que inicia o encerramento do host do ESXi.
  6. O host ESXi
  7. 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).
  8. 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).
  9. Depois de executar o script vmware-tools, a VM guest é encerrada.
  10. 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).
  11. Em 2 minutos restantes, o no-break interrompe a alimentação.
  12. 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.

    
por 30.01.2013 / 02:43
14

Super pergunta. Na verdade, é possível fazer isso muito bem - pelo menos em algumas configurações. Eu tentei a seguinte receita em vários hosts do ESXi 5.5. Basicamente, a solução é assim:

  1. Ativar o acesso SSH no seu host ESXi
  2. Crie uma VM Linux - eu uso o Ubuntu. Você só precisa de uma configuração mínima - sem interface gráfica ou qualquer coisa.
  3. Conecte seu dispositivo da APC via USB ao host do ESXi e passe-o para a VM do Linux.
    • Certifique-se de que o controlador USB que você adiciona à VM corresponda ao controlador USB físico real ao qual o dispositivo da APC está conectado, isto é, adicione somente um controlador XHCI se o dispositivo físico for um dispositivo USB3. Incompatibilidades parecem causar problemas estranhos no driver de dispositivo USB do Linux.
    • Se as coisas não estiverem funcionando e você vir erros como ctrl urb status -62 in dmesg , provavelmente o controlador físico não corresponde ao da sua VM. Se eles combinam - bem, então é um problema. Eu tenho uma configuração com esse tipo de problema e nenhuma solução real para isso.
  4. Instale apcupsd na VM do Linux - no Ubuntu, você pode fazer sudo apt-get install apcupsd para instalar a versão mais recente. O projeto NUT também é bom, mas eu sou tradicionalista.
  5. Instale o utilitário plink fazendo sudo apt-get install putty-tools
  6. Conecte-se ao seu host ESXI fazendo plink root@<your ESXi host IP> . Você pode fechar a conexão imediatamente. O objetivo é salvar a chave do host para que o plink não a solicite novamente quando for executada por meio de um script
  7. Edite /etc/apcupsd/apcupsd.conf e altere os itens abaixo para que correspondam: %código% Certifique-se também de que UPSNAME < the name you'd like your UPS to have > UPSCABLE usb UPSTYPE usb # DEVICE DIRECTIVE should be blank for USB DEVICE tenha /etc/default/apcupsd
  8. Edite ISCONFIGURED=yes e role até o caso /etc/apcupsd/apccontrol . Faça parecer com isso: %código%
  9. Reinicie o apcupsd usando doshutdown e veja se as coisas estão funcionando invocando 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" ;; . Caso contrário, verifique os logs e o dmesg
  10. Certifique-se de que todas as máquinas virtuais que precisam desligar bem em caso de falha de energia tenham as ferramentas VMWare instaladas. Além disso, certifique-se de que eles façam parte da lista de inicialização / desligamento de VMs (no vSphere Web Client, vá para: sudo service apcupsd restart ). Certifique-se de que a ação de desligamento seja para desligar o sistema operacional convidado.

Quando essas coisas estiverem em execução, o script apcaccess da etapa 8 será chamado em uma falha de energia. Este é o turno invoca o script shutdown.sh no host ESXi, que sinaliza o pacote VMWare Tools em cada VM no seu host para fazer um desligamento limpo através do sistema operacional convidado. Na minha experiência, funciona melhor que o software PowerChute da APC.

Se você gosta de monitorar coisas de suas VMs, você pode configurar instâncias de apcupsd de escravo nelas que se conectam à VM Linux de controle principal da UPS. Seus arquivos slave do apcupsd.conf devem ter uma entrada como esta:
vCenter -> <your host> -> Manage -> Settings -> VM Startup/Shutdown
Entradas como doshutdown e tal não importam neste caso. Isso funciona com a versão do Windows de UPSTYPE net < your UPS control VM IP >:3551 (disponível aqui ) também. Você pode usar o UPSCABLE incluído para verificar o status atual das coisas.

Isso praticamente cobre isso, eu acho.

    
por 09.09.2014 / 10:42
4

Você pode considerar o uso da funcionalidade de passagem de dispositivo USB para um convidado executando o PowerChute ou outro software capaz de monitorar a integridade do no-break e capaz de desencadear um desligamento no host do ESXi (por exemplo, apcupsd ). O ESXi oficialmente suporta apenas um número muito limitado de dispositivos USB para passagem , mas as pessoas foram anexando e passando por diferentes classes de dispositivos por um tempo já com sucesso variável, mas o APC UPS USB parece funcionar de acordo com este passo a passo para uma VM do Windows ou este para uma VM CentOS Linux .

    
por 04.01.2013 / 15:42
2

Dê uma olhada no vSphere Management Assistant (vMA) em aqui Usamos no meu escritório para fazer o que você está tentando, mas com o Smart-UPS conectado via USB ao invés do Back-UPS.

    
por 04.01.2013 / 17:21
1

Embora seja possível (provavelmente / geralmente), não acho que um desligamento automático de um computador com bateria seja uma boa ideia. Se você for fazer isso, então, para a maioria das intenções e propósitos, provavelmente você deve economizar o dinheiro de um UPS alimentado por bateria e deixar que a perda de energia desligue sua máquina para você. (Concedido, um desligamento limpo é sempre preferível a uma perda de energia, mas você parece estar perdendo o ponto de ter um tempo de duração da bateria maior que alguns minutos se você desligar automaticamente tudo quando perder a alimentação elétrica. )

A maneira como eu sempre liduei com isso é ter o alerta de monitoramento das SAs quando a energia cai, então as SAs podem usar sua substância cinzenta para decidir quando (ou até mesmo se) desligar os servidores. Se for uma breve interrupção, pode não ser uma boa ideia desligar os servidores, ou você pode deixar alguns servidores funcionando o máximo de tempo possível e desligá-los apenas antes que a bateria esteja prestes a morrer. Realmente parece-me uma tarefa de tomada de decisão mais adequada para um humano do que uma simples regra.

    
por 04.01.2013 / 16:33
1

Nos velhos tempos das instalações baremetais , o APC PowerChute Plus era uma parte essencial do meu processo de instalação. Usando o cabo de sinalização serial simples e seus Red Hat-only binário , foi fácil configurar regras para governar um servidor conectado localmente. Notificações básicas de e-mail para eventos de bateria do UPC, eventos de energia de linha e ações de desligamento estavam disponíveis:

POWERCHUTE MAIL MESSAGE
Message from PowerChute@Bonanza:

UPS on battery: Blackout 000.0 V. 

e

POWERCHUTE MAIL MESSAGE
Message from PowerChute@Bonanza:

Normal power restored: UPS on line.  

ou

POWERCHUTE MAIL MESSAGE
Message from PowerChute@Bonanza:

Shutdown started.  

Mais uma interface razoável para ver o que estava acontecendo ...

Esse software acabou sendo comercializado (ou foi enterrado no site da APC). Havia algumas abordagens de código aberto para fornecer algo semelhante. Mas tudo isso fica complicado com hosts VMWare ESXi únicos.

Parece que isso é algo que o VMWare deveria ter incorporado ao hipervisor de base. É básico e pode oferecer um nível decente de proteção para os usuários. Os remédios mais comuns que vejo agora são passagem USB para uma VM dedicada, uma abordagem de daemon de rede ou fazer o que eu faço; não configurando nenhum desligamento automático ou de bateria ...

Concedido, normalmente eu uso um no-break que pode suportar a carga do sistema por uma hora ou mais, mas interrupções prolongadas acontecem. Talvez uma alternativa seja coletar algumas placas de interface de rede de baixo custo ou recondicionadas e planejar comprar dispositivos SmartUPS no mínimo ...

    
por 04.01.2013 / 17:06
0

Confira o seguinte link . Não é a solução mais elegante, mas uma solução muito prática e direta. Há possíveis desvantagens em termos de segurança (dependendo do design de rede específico, dos convidados carregados nos hosts e dos usuários de acesso para esses convidados, mas você pode fazer essa chamada.

    
por 31.01.2014 / 20:57
0

Eu usei a solução MrMajestyk e apenas alterei o acesso ssh via plink com acesso ssh sem senha usando a chave pública rsa. A chave rsa gerada na VM do apcupsd deve ser incluída em / etc / ssh / keys-root / authorized_keys do host vmware.

    
por 08.05.2016 / 17:49