Implementação de configuração em vários servidores

5

Eu tenho vários servidores no cluster WEB (configuração idêntica para todos eles, apesar do IP)

Como você implementa mudanças em configurações em servidores múltiplos?

Eu faço a nova configuração, depois faço a configuração por cada servidor (colocando o IP correto), e depois:

  • faça o upload deles em todos os servidores, substituindo os antigos (rsync por ssh)
  • define em cada servidor uma tarefa que recarrega o servidor da Web ao mesmo tempo (os servidores usam ntp). - Isso é feito emitindo comandos por script (para economizar tempo de login)
  • antes de adicionar um trabalho para o recarregamento do servidor - há um teste de soma de verificação da configuração no servidor) - uma notificação em caso de falha

Como você vê esse método? Qual deve ser a "maneira profissional :)? (Eu não digo que meu jeito não funciona ... funciona e economiza o meu tempo não usado para fazer logon em todos os servidores web.)

Atenciosamente,

    
por Arek B. 16.01.2011 / 11:29

4 respostas

10

Você pode usar qualquer uma das ferramentas modernas de automação de alterações (Puppet, Chef, cfengine, bcfg2 e assim por diante) para isso. Qualquer um deles pode implantar arquivos e reiniciar serviços quando os arquivos que eles gerenciarem são modificados.

Eu tive grande sucesso com o Puppet nos últimos anos em vários ambientes.

Depois que você começar a usar a ferramenta para tudo, ela terá o benefício adicional de documentar seu processo e sua infraestrutura.

Retroceda por uma ferramenta de controle de versão, como git ou svn, e agora você tem uma infra-estrutura com versão.

    
por 16.01.2011 / 11:48
2

Eu geralmente concordo com a resposta do bdha - use uma ferramenta de gerenciamento de configuração para gerenciar suas mudanças. Outro ponto que quero enfatizar é que você deve se esforçar para usar a ferramenta de gerenciamento de pacotes do seu sistema o máximo possível para tudo que não seja um arquivo de configuração. É muito mais fácil gerenciar um sistema que possui uma coleção de pacotes instalados do que um sistema com várias edições manuais de arquivos (ou um sistema com um monte de edições automáticas de arquivos via fantoche).

Se você tiver arquivos de configuração que nunca mudam, eles também são candidatos para inclusão em pacotes do sistema. Aprenda como criar pacotes na ferramenta de pacotes do seu sistema e como organizá-los em um repositório centralizado para que você possa usar ferramentas como yum para gerenciar e instalá-los.

Considere também cuidadosamente o seu sistema de envio de software. Muitas pessoas usam o fantoche ou o cfengine para fazer isso, mas novamente há algumas ferramentas mais especializadas que podem ser dimensionadas melhor à medida que o ambiente se torna maior. Exemplos dessas ferramentas de tipos incluem Capistrano e Pogo .

    
por 16.01.2011 / 21:51
1

Se você tem um grande número de servidores, você deve definitivamente olhar para o fantoche ou chef, eles são a melhor solução que vai cuidar de todos os seus requisitos e até mesmo recarregar a configuração do servidor assim que o novo for reconhecido.

Se você achar que um pouco exagerado você poderia fazer um script com algumas chaves cruzadas de um local central para empurrar a configuração, se eu fosse você eu usaria mercurial ou bazar naquele repositório central para rastrear mudanças e poder para reverter facilmente caso as coisas corram mal.

    
por 16.01.2011 / 16:01
1

Na verdade, se você tem um grande número de servidores, o Cfengine é definitivamente o caminho a percorrer. Ele é executado a cada 5 minutos (ao contrário de cada hora!) Eu ouvi uma e outra vez dos outros que Puppet não escala muito bem. Você enfrenta um trade-off entre gerenciar um grande número de máquinas e entender seu estado com precisão. Isto é, infelizmente, devido à sua arquitetura, por isso é difícil de se locomover. Eu realmente não brinquei com o Chef, então não estou familiarizado com seu potencial total.

    
por 31.01.2011 / 10:31