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

6

Estou desenvolvendo software para o negócio de consultoria em energia e monitorando o uso de energia em datacenters, notei que o padrão típico de carga elétrica de um datacenter é apenas uma linha plana, porque toda a engrenagem funciona 24/7 . Se você comparar isso com o padrão de uso real (carga da rede, uso da CPU, etc), o que fizemos, você tem regularmente longos trechos com pouco uso, mas a capacidade total disponível.

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

  • lidando com picos de carga ou picos repentinos
  • consistência de dados entre nós
  • tempo de inicialização longo (e, possivelmente, sincronização) comparado ao tempo de atividade médio de um nó

Há provavelmente mais. Existe software que lida com tal cenário e o que mais deve ser procurado? Esta é uma sugestão viável para fazer?

Para os meus propósitos, um cluster não significaria necessariamente cluster máquinas no nível do sistema operacional, hosts idênticos que recebem solicitações através de um balanceador de carga (ou seja, cluster de nível de aplicativo) também contam. Eu não tenho certeza de como o cluster do MySQL ou o trabalho similar, mas eu provavelmente contaria com isso também.

Estou à procura de conselhos para qualquer sistema operativo.

Veja também o meu post href="https://stackoverflow.com/questions/38461/38496#38496"> cima da Stack Overflow que fez subir a esta questão.

    
por Hanno Fietz 13.07.2009 / 15:28

7 respostas

1

Potência

Use PDUs comutadas para que você possa ativar e desativar os servidores -of-band Isso é independente do sistema operacional e do dispositivo, o que simplificará bastante a configuração e a lógica que ativam e desativam as coisas. Se todos os seus servidores tiverem interfaces IPMI habilitadas para rede, você poderá usá-los. Eu recomendaria contra tentar ativar e desativar coisas usando coisas de nível mais alto, como wake-on-LAN.

Lógica de ativação / desativação

Isso pode ter várias formas. Alguns softwares de clustering (como o Moab ) têm uma solução para esse recurso. Caso contrário, você pode escreva algum script com o seguinte pseudocódigo:

  1. Verificar o carregamento geral do cluster
  2. Se o carregamento do cluster > threshold1, ligue alguns nós
  3. se o cluster carregar < threshold2, 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 a pilha de software de armazenamento em cluster possa lidar com esses dispositivos indo para cima e para baixo o tempo todo. Faça muitos testes aqui, considere questões obscuras de temporização (a inicialização leva tempo) e quaisquer condições de corrida que aparecerão na lógica de ativação / desativação que você usa.

    
por 13.07.2009 / 18:36
4

VMware

A versão mais recente de seu produto corporativo, o VSphere 4, pode desligar os hosts que não são necessários para atender à capacidade e ativá-los quando necessário, distribuindo as máquinas virtuais em tempo real. Combine isso com a economia de energia / energia obtida com a consolidação de seu hardware em uma plataforma virtualizada e você pode obter uma economia de energia significativa.

    
por 13.07.2009 / 18:38
3

Isso foi mencionado no Planeta Ubuntu apenas hoje. A postagem pode ser encontrada aqui . Ele fala sobre o desenvolvimento de uma solução prática para ativar / desativar máquinas sob demanda em uma nuvem usando o PowerNap .

    
por 13.07.2009 / 18:44
2

Esta pergunta tem um milhão de respostas e a maioria delas não será adequada para você.

É específico do sistema operacional, específico do hardware e específico da carga.

Se esta solução é para ser responsiva, ou seja. rápido para reduzir o uso de energia e rápido para voltar, você deve olhar para o hardware com a funcionalidade de suspensão ACPI, ao invés de desligar. Como mencionado acima, o wakeonlan só funcionará corretamente quando o hardware estiver em estado de suspensão.

A segunda parte deste problema é o controle. Quando colocar um sistema para dormir e quando acordá-lo novamente. Sem saber como seu cluster gerencia a carga de trabalho, você realmente não terá uma resposta para isso.

Pessoalmente eu corro um webfarm que tem um balanceador de carga na frente. O tráfego é direcionado para um par de hosts até um certo nível e, em seguida, ele arredonda o resto. Quando esses outros servidores não mostram nenhuma atividade por uma hora ou depois das 18:00 hrs, eles são colocados em um estado de suspensão. Quando os scripts snmp mostram que o volume do usuário está aumentando no balanceador de carga, os hosts que estão dormindo recebem um pacote mágico wakeonlan e o cluster volta à força total. Poderia ser mais fino, mas eu posso realmente experimentar apenas ao vivo, então tem sido pequenos movimentos, que eu estou confiante.

Felicidades M.

    
por 13.07.2009 / 16:56
0

Bem, para servidores, o comando SHUTDOWN.EXE pode ser usado para encerrar 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 novamente. Você precisaria de Wake-on-LAN ou algo similar 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 trabalho do cron que ninguém tinha certeza de onde deveria ir, eles simplesmente o colocaram em um dos servidores da web em cluster. Agora você fecha 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.

    
por 13.07.2009 / 16:31
0

Ligar e desligar máquinas remotamente realmente não deve ser um problema hoje, já que praticamente todo o hardware do servidor implementa IPMI , e começar a usar as ferramentas é muito fácil .

WoL é bom em outros casos de uso, como quando o seu computador tiver entrado em repouso e você quiser que ele acorde antes que as tarefas de backup sejam executadas.

Não há interface padrão para "sleep-on-LAN". IPMI foi projetado para resolver esses tipos de problemas, portanto, dá-lhe mais consistência e melhor controle.

( update : note que você pode provavelmente usar o WoL para acordar caso tenha usado dm-suspend

(Nota para o mecanismo de busca: Eu teria descoberto sobre este segmento antes, se ele tivesse um título mais como " Automatizado, ciclo de energia adaptável à carga de nós de cluster ")

    
por 11.01.2010 / 17:26
0

O Sun SGE Engine (Sun Grid Engine) é um sistema de enfileiramento / agrupamento em lotes que, na versão mais recente, oferece suporte à economia de energia desligando nós que não são necessários de acordo com determinada especificação de carga de trabalho / fila. Tenha em mente que este é um sistema de propósito especial HPC-ish. Desligar certas partes de um datacenter pode ser um problema de dependência enorme .

    
por 22.01.2010 / 18:03

Tags