Como manter os arquivos conf do Apache em sincronia no cluster web

2

Qual é a melhor prática para manter os arquivos httpd.conf e php.ini consistentes em vários servidores da web por trás de um balanceador de carga?

Eu poderia rsync periodicamente os arquivos ou programar um script de implantação personalizado. Que outras opções estou faltando?

    
por Andrew 03.08.2009 / 23:48

5 respostas

14

O ideal seria configurar o servidor de gerenciamento de configurações usando o Puppet ou outras ferramentas semelhantes (por exemplo, cfengine).

A melhor prática que eu poderia sugerir em relação à configuração do servidor em geral é:

" Nunca faça login em uma máquina para alterar nada. Sempre faça a mudança no [configuration management server] e deixe a mudança se propagar " (tirada de link )

Atenciosamente, Alex

    
por 04.08.2009 / 00:05
2

Nossos nós da web têm um cluster NFS por trás deles. Nós associamos simbolicamente os locais dos arquivos de configuração padrão para o Apache e o PHP às cópias compartilhadas no compartilhamento NFS. Um script de shell muito simples faz uma limpeza básica (reconstruindo as regras do Apparmor etc.) e, em seguida, repete os nós da web acionando primeiro um apache2ctl configtest e, em seguida, apache2ctl graceful .

Outras ideias:

  1. Script de shell simples agrupado em rsync ou scp .
  2. Para instalações maiores, uma receita de Puppet poderia entregar o arquivo de configuração atualizado de forma confiável e rejeitar o Apache posteriormente.
por 03.08.2009 / 23:56
2

O svn pode ser usado para fornecer controle de versão e distribuição de arquivos de configuração. git ou bzr etc também podem ser usados.

edite os arquivos no servidor 'master', svn confirme-os, e um cron job ou ssh pode executar o 'svn update' nos servidores 'slave'.

Eu costumo usar o ssh, e configurar acesso sem senha para permitir que o servidor 'master' execute um Makefile em particular nos escravos - o Makefile executa 'svn update' e suas regras de dependência baseadas em filestamp então decide quais outras coisas precisam ser feitas (por exemplo, gerar arquivos de usuário ou de grupo em db hashed do texto, adicionar ou excluir endereços IP do nic, reiniciar o apache e assim por diante) sempre que for possível determinar que uma sequência de ações depende de um arquivo e / ou outra seqüência de ações é um bom candidato para usar o make para automatizar o processo).

mesmo no servidor 'master', tudo é controlado pelo make. edite um ou mais arquivos de configuração e execute make. o Makefile descobre o que precisa ser feito (svn commit, gera fragmentos de configuração a partir dos arquivos de entrada de origem, 'ssh make' para outros servidores, etc). Usar make assim garante que cada etapa seja feita na ordem correta e que nenhuma etapa seja esquecida. e tornar o svn uma parte essencial do processo garante que cada mudança seja confirmada com um registro de data e hora e uma explicação no log de confirmação.

é claro, muitos usam bonecos ou algo parecido para fazer isso. se eu fosse começar do zero, eu provavelmente também ... mas eu faço isso há anos, muito antes do boneco estar por perto. havia ferramentas semelhantes antes do fantoche, mas a marionete é a primeira que vi que parece valer a pena mudar ... mas é difícil justificar a mudança de algo que funciona bem para algo que só parece que provavelmente funcionará melhor.

    
por 04.08.2009 / 02:10
1

Existem várias soluções.

  • Sistema de arquivos compartilhado, como NFS ou OCFS2.
  • Puppetmaster ou gerenciador de configuração equivalente
  • Script do shell de uma solução (equivalente ao puppetmaster, mas leve - integre o servidor, atualize os arquivos, devolva o apache)
  • Com o subversion, use um gancho post-commit para fazer o acima.
  • Fazendo manualmente as etapas no script de shell acima ... (aqui está seu grampeador vermelho)

A grande questão: Como o seu CONTEÚDO (ou os scripts dinâmicos que acessam seu banco de dados para conteúdo) está atualmente sincronizado? Se você pensar sobre isso, os arquivos de configuração são apenas outro tipo de conteúdo.

    
por 04.08.2009 / 04:43
0

No momento, tenho um script em cada servidor web que copia a configuração de um compartilhamento e atualizo as informações de configuração para o servidor local (ip, etc). Enquanto isso funcionou bem para 3 servidores, em 10 servidores é chato (login para o servidor, executar script, logout, enxaguar, lavar, repetir). Eu sugeriria uma solução (como um fantoche e amigos) que empurre as alterações para o servidor quando você tiver concluído as alterações no arquivo local.

    
por 04.08.2009 / 04:08