Como descobrir se o Linode NodeBalancer usa nós fora de rotação

3

Às vezes, meu NodeBalancer remove um nó de rotação e eu gostaria de saber mais sobre ele para que eu possa reinicializá-lo. Como faço isso?

Este é o pano de fundo:

Eu tenho dois sites do mesmo tipo, ambos executando aplicativos intensivos da CPU. Um dos websites possui um único VPS, que tem uma carga de aproximadamente 3000 execuções por dia (cada uma delas leva de 5 a 50 segundos) e para o outro site eu instalei um NodeBalancer com 9 nós abaixo. Cada um executa aproximadamente 40-60% do que o único VPS faz.

Isso tudo funciona bem, na verdade, com quase nenhuma interrupção, mas uma vez por semana, um nó pára de responder ao NodeBalancer e é retirado da rotação. Isso geralmente acontece em combinação com o uso muito alto da CPU. Agora - isso nunca acontece no único VPS (que foi executado sem interrupção ou reinicialização por um ano).

Então, como eu disse - nos nós com carga balanceada eu tenho interrupções (embora eu execute os mesmos scripts e software para 99%) e eu gostaria de descobrir quando o nó é retirado da rotação, então eu posso reiniciar e voltar a funcionar novamente.

Atualmente, minha solução alternativa é atuar nos e-mails que recebo do Linode, o que me alerta para o alto uso da CPU. Em alguns casos, eu faço uma reinicialização manual se o nó realmente ficar inativo.

    
por user1914292 14.03.2014 / 10:49

2 respostas

3

Depois de pesquisar mais um pouco na Internet, há uma interface de linha de comando no Linode, que permite realizar todos os tipos de ações nos nós e nos balanceadores de nós.

Isso me ajudará a reiniciar automaticamente um nó que está inativo executando um comando simples como:

linode restart My-Linode-Label

E também permitirá listar todos os nós que estão manipulando tráfego em um NodeBalancer executando:

linode nodebalancer node-list mynodebalancer 80

Verificarei se isso realmente me fornece um status nos nós ou mostra apenas os nós ativos e atualizo a resposta. Parece que esta é a solução que eu estava procurando, pois contém muito mais ações que eu provavelmente desejarei no futuro, como iniciar um novo nó, etc.

O CLI pode ser encontrado no github no link

ATUALIZAÇÃO: essa CLI realmente me fornece o status de cada nó sob o balanceador de nó em uma saída fácil de nome, status e endereço. Eu serei capaz de executar facilmente um script disso.

Como parece, eu só preciso ter alguns módulos de perl adicionados e estou pronto! Não acredito que o suporte da Linode não tenha conhecimento disso ...

    
por 22.03.2014 / 14:30
3

Uma abordagem pouco ingênua seria que os nós servissem uma página example.com/node.html retornando um resultado diferente para cada nó (por exemplo, números 1-9). Então, a partir de um computador externo, você solicita essa página constantemente (digamos uma vez por segundo). Você deve receber um resultado mais ou menos aleatório (série) de todos os servidores após um determinado intervalo de tempo (digamos um minuto), então um script pode verificar depois disso se todos os números estiverem presentes, e se um nó estiver ausente, chame a API do Linode para reiniciá-lo.

Mais fácil do que isso, você não pode simplesmente verificar facilmente o nó em si se estiver recebendo solicitações da web (de 'netstat', firewall, logs etc, você pode até verificar o nome do host do balanceador de carga como origem) e se não significa que o LB o tirou da rotação?

    
por 19.03.2014 / 17:21