Como verificar as pré-condições em um servidor recém-instalado para ter certeza de que um servidor realmente funcionará

Como verificar as pré-condições em um servidor recém-instalado para ter certeza de que um servidor realmente funcionará

Ao instalar novos servidores, geralmente esqueço algo que é necessário para que o servidor realmente funcione. Eu gostaria de ter algum tipo de verificação pré-voo automática para detectar recursos ausentes antes de iniciar o servidor pela primeira vez e ter usuários ativos em execução no servidor.

Digamos que eu esteja executando um conjunto de servidores de aplicativos usando uma plataforma como Tomcat ou PHP atrás de um balanceador de carga. O serviço geralmente requer algumas das seguintes coisas:

  • software instalado (programas externos como wget ou ImageMagick etc)
  • módulos instalados (por exemplo, libcurl, mod_rewrite, Oracle etc)
  • arquivos de configuração (por exemplo, tnsnames, php.ini etc)
  • sistemas de arquivos montados, links simbólicos em algum lugar, permissões específicas para alguns diretórios
  • portas de rede específicas devem ser acessíveis a partir da máquina (por exemplo, mysql ou um proxy http)
  • portas de rede específicas devem estar acessíveis na máquina (isso teria que ser testado em outra máquina, por exemplo, rsync ou porta 8080)
  • processos específicos precisam ser iniciados
  • cronjobs precisam existir

Presumo que seria possível escrever testes unitários para a maioria dessas condições e executá-los em cada máquina após a instalação, mas eu preferiria uma ferramenta mais específica para tal tarefa, talvez com uma linguagem especial semelhante a um shell para escrever os testes (dado que diferentes ferramentas são necessárias para testar tudo, isso envolveria a execução de scripts perl, programas java, verificação de arquivos, permissões, linhas em arquivos confic, etc.).

Devo acrescentar que não quero consertar os itens faltantes, apenas quero verificar se preciso solicitar alterações adicionais aos colegas de operações.

Responder1

A maneira como fazemos isso é usando o CFengine (mas o Puppet também funcionaria) para configurar nós individuais com base na configuração centralizada. O CFengine irá impor a configuração correta da máquina na ordem correta e continuará fazendo isso, por exemplo, os processos serão reiniciados se forem interrompidos.

Em todos os nós, um script está disponível para verificar uma série de coisas (os arquivos no armazenamento central são legíveis, podem abrir uma conexão com o cluster MySQL, etc). Este script é usado pelo balanceador de carga como uma verificação de integridade: somente se todas as verificações forem aprovadas, o nó retornará o valor que o balanceador de carga espera e será sinalizado como 'ativo' e terá permissão para lidar com o tráfego.

Responder2

Você precisa documentar seu processo de construção antes de criar um script para testar a "prontidão" de seus novos sistemas. O documento do processo fornecerá a lista de verificação que você deseja verificar e uma construção consistente de cada servidor. Cfengine e puppet são ótimas maneiras de automatizar compilações, mas para usá-los você precisa de uma lista de tudo que precisa ser configurado.

informação relacionada