O que é uma boa verificação do balanceador de carga para o mestre de marionetes?

4

Estamos executando um par de Puppet Master versão 3.7 (Não PE) em instâncias do AWS EC2 por trás de um Elastic Load Balancer (principalmente para alta disponibilidade).

Atualmente, a verificação do balanceador de carga é apenas TCP connect na porta 8140. Mas isso não detectou que uma das instâncias foi interrompida (ainda estava aceitando a conexão TCP inicial, mas não fazia nada com ela).

Estou procurando uma maneira de realmente enviar uma solicitação "não operacional" significativa para o mestre de marionetes e fazer com que ela retorne um resultado.

Requisitos mais específicos:

  1. Ele não deve acionar o processamento pesado (as verificações acontecem a cada alguns segundos)
  2. Deve ser bem sucedido se o mestre de marionetes for capaz de lidar com o "pedido real" e falhar de outra forma.
  3. Deve ser possível executar a partir do ELB (ou seja, basicamente ele deve retornar "200 OK" em caso de sucesso solicitações https em um caminho estático .

Existe um bom caminho estático que eu posso dar a verificação de saúde para usar? Até agora eu não encontrei nenhum.

    
por Amos Shapira 07.05.2015 / 03:21

1 resposta

4

O que você poderia usar para verificar se o mestre de marionetes está funcionando corretamente é configurar algum tipo de consulta de API, por exemplo:

curl -k -H "Accept: pson" https://puppetmaster:8140/production/status/no_key

Claro, o acesso à API não estará disponível por padrão, o que significa que você terá que usar os certificados SSL de um cliente assinado para poder acessar a API REST. Além disso, todos os certificados não terão todas as permissões necessárias.

Este é um exemplo de como fazer uma compilação completa de manifestos:

curl -k -H 'Accept: pson' \
--cert /var/lib/puppet/ssl/certs/node.example.com.pem \
--key /var/lib/puppet/ssl/private_keys/node.example.com.pem \
--cacert /var/lib/puppet/ssl/ca/ca_crt.pem \
https://puppetmaster:8140/production/status/no_key

Não sei se é possível integrar os certificados nas verificações do ELB, mas se não for possível, talvez você possa brincar com os controles de acesso da API REST e configurar algo ao longo dessas linhas no auth.conf:

# Allow ELB to access REST endpoint
path ~ ^/status/no_key$
auth off
allow_ip <ip_of_loadbalancer>

Reinicie o puppetmaster e tente uma verificação simples:

curl -k -H "Accept: pson" https://puppetmaster:8140/production/status/no_key

Isso deve funcionar. Apenas tenha cuidado com o auth.conf para não se sobrecarregar!

Para ver todas as chaves de API disponíveis, dê uma olhada na documentação da API REST no site da PuppetLabs.

    
por 07.05.2015 / 07:29