Como posso desligar (desligar) nós do cluster durante carga baixa?

Como posso desligar (desligar) nós do cluster durante carga baixa?

Estou desenvolvendo software para o negócio de consultoria de energia e ao monitorar o uso de energia em datacenters, percebi que o "padrão" típico de carga elétrica de um datacenter é apenas uma linha plana, porque todo o equipamento funciona 24 horas por dia, 7 dias por semana. Se você comparar isso com o padrão de uso real (carga de rede, uso de CPU, etc.), como fizemos, você regularmente terá longos períodos com pouco uso, mas com capacidade total disponível.

Esses padrões são muito previsíveis em muitos casos e para economizar energia seria ótimo desligar parte dos equipamentos (servidores, switches, armazenamento) regularmente ou em condições de baixa carga. No entanto, consigo pensar em vários aspectos que teriam de ser analisados, incluindo

  • lidar com cargas de pico ou picos repentinos
  • consistência de dados entre nós
  • longos tempos de inicialização (e, possivelmente, de sincronização) em comparação com o tempo médio de atividade de um nó

Provavelmente há mais. Existe software que lide com esse cenário e o que mais deve ser observado? Esta é uma sugestão viável a ser feita?

Para meus propósitos, um cluster não significaria necessariamente agrupar máquinas no nível do sistema operacional; hosts idênticos que recebem solicitações por meio de um balanceador de carga (ou seja, clustering no nível do aplicativo) também contariam. Não tenho certeza de como o cluster MySQL ou similar funciona, mas provavelmente também os contaria.

Estou procurando conselhos para qualquer sistema operacional.

Veja também meupostagem sobre eficiência energéticano Stack Overflow que levantou esta questão.

Responder1

Poder

UsarPDUs comutadaspara que você possa ligar e desligar servidores e switches fora da banda. Isso é independente do sistema operacional e do dispositivo, o que simplificará bastante a configuração e a lógica que liga e desliga as coisas. Se todos os seus servidores tiverem interfaces IPMI habilitadas para rede, você poderá usá-las. Eu não recomendaria tentar ligar e desligar coisas usando coisas de nível superior, como wake-on-LAN.

Lógica de ligar/desligar

Isto pode assumir muitas formas. Alguns softwares de clustering (comoMoabe) tem uma solução integrada para isso. Caso contrário, você pode escrever algum script com o seguinte pseudocódigo:

  1. Verifique a carga geral do cluster
  2. Se a carga do cluster for > limite1, ative alguns nós
  3. Se a carga do cluster <limite2, desligue alguns nós

Coloque isso no cron e execute-o a cada meia hora.

Pilha de software de cluster

Obviamente, você precisará garantir que sua pilha de software de cluster possa lidar com esses dispositivos subindo e descendo o tempo todo. Faça muitos testes aqui, considere problemas de tempo obscuros (a inicialização leva tempo) e quaisquer condições de corrida que possam surgir na lógica de ligar/desligar que você usa.

Responder2

VMware

A versão mais recente de seu produto empresarial, o VSphere 4, pode desligar hosts desnecessários para atingir a capacidade e ativá-los quando necessário, distribuindo as máquinas virtuais em tempo real. Combine isso com a economia de energia que você obtém ao consolidar seu hardware em uma plataforma virtualizada e você poderá obter uma economia de energia significativa.

Responder3

Isso foi mencionado no Planet Ubuntu hoje mesmo. A postagem pode ser encontradaaqui. Ele fala sobre o desenvolvimento de uma solução prática para ligar/desligar máquinas sob demanda em uma nuvem usandoPowerNap.

Responder4

Bem, para servidores, o comando SHUTDOWN.EXE pode ser usado para desligar remotamente uma caixa do Windows. A mesma coisa poderia ser feita facilmente no Unix com um script telnet/ssh.

O maior problema seria como reiniciá-los. Você precisariaWake-on-LANou algo semelhante para isso.

A parte difícil de fazer isso é verificar se as máquinas que você está desligando não estão realmente fazendo algo importante. Como aquele cron job em que ninguém tinha certeza de onde deveria ir, então eles simplesmente o colocaram em um dos servidores web em cluster. Agora você desliga a máquina e o trabalho não funciona mais como deveria.

Se o ambiente for rigidamente controlado e você souber exatamente o que cada máquina está fazendo, faria muito sentido.

informação relacionada