Puppet: gerenciando (muitos) Apache VirtualHosts

9

Estou aprendendo o meu caminho através do gerenciamento de configuração em geral e usando o fantoche para implementá-lo em particular. Eu já fiz uma pesquisa genérica ( também no SF ) e agora estou considerando o Apache VirtualHosts.

Hospedamos muitos sites LAMP (atualmente está na faixa das centenas) em dois sistemas: um Apache2 / mod_php e um MySQL - basicamente o oposto de outra pergunta já no SF, onde ele gerencia muitos servidores com poucos fantasmas cada um (se na verdade não um, eu não sei). Ainda não montei uma configuração de trabalho no fantoche, mas não deve ser um problema, existem muitos exemplos e receitas por aí.

Além do (s) arquivo (s) de configuração apache (s) óbvio (não há problema aqui, eu acho), todo vhost precisaria ter alguns diretórios criados e permissões verificadas (por exemplo, um diretório raiz para cada vhost contendo uma raiz de documento, um diretório tmp dedicado, um diretório dedicado diretório de arquivos de sessão php, possivelmente certificados SSL, etc.) no servidor da web e um usuário + um ou mais bancos de dados no servidor MySQL.

Adicionar um novo vhost exigiria que o fantoche os criasse, remover um exigiria que o fantoche execute algum script que faça backup dos dados do usuário e remova os dados ativos dos dois servidores, mas também cada agente do fantoche executado verificará a existência de os diretórios, o banco de dados, as permissões etc.

Estou pedindo problemas ao acessar centenas de hosts virtuais com todas as verificações executadas a cada execução fantoche, especialmente as do sistema de arquivos (no servidor da web) e, principalmente, quando no futuro os sistemas serão carregados mais? (digamos que segmentemos o intervalo de 1000 a 2000 sites como um máximo razoável por servidor).

Existe alguma experiência em fazer isso na internet? Pesquisei no Google, mas não encontrei nada, também porque há uma baixa relação sinal / ruído ao procurar "fantoche" e "apache" ...

Luke404
fonte

Respostas:

4

Suspeito que gerenciar muitos hosts virtuais apache não seja um problema, mas não posso ter certeza. O desempenho aceitável é definido pelas suas necessidades de negócios. Somente você pode decidir se é rápido o suficiente. Aqui está um tópico decente sobre como reduzir a carga da CPU: https://groups.google.com/forum/?fromgroups#!topic/puppet-users/sxtMvCnKnys[1-25]

Para resumir o encadeamento:

  • Aumentar o atraso entre execuções de agentes fantoches
  • não agende marionetes e use apenas marionetes ou mcollective para disparar corridas
  • agendar as alterações do Apache para que ocorram apenas em determinados momentos.
  • use dois ambientes diferentes (manutenção e produção) para gerenciar as coisas. Mantenha a produção leve e use a manutenção para fazer alterações.

Aqui está um exemplo de gerenciamento de um host virtual apache no site PuppetLabs: http://docs.puppetlabs.com/learning/definedtypes.html#an-example-apache-vhosts

A instalação e remoção da configuração não deve ser um problema. O maior problema seria remover os arquivos de dados dos aplicativos / sites da web. Para isso, eu recomendaria armazenamento compartilhado, como NFS / AFS. Se você não estiver usando armazenamento compartilhado, verifique se os dados gerados pelo usuário foram deixados intactos, com backup ou migrados para o novo servidor.

Eu suspeito que você esteja em uma situação de hospedagem em massa, como uma empresa de hospedagem na web, por isso recomendo que os nomes de sites individuais não sejam codificados no manifesto de marionetes. Para isso, recomendo usar o Hiera < http://puppetlabs.com/blog/first-look-installing-and-using-hiera/ . O Hiera permite que você use uma maneira separada de armazenar a lista de hosts virtuais em mapeamentos de servidores reais. Você pode usar arquivos simples ou um banco de dados com o Hiera. Infelizmente, não conheço Hiera o suficiente para orientá-lo sobre como configurar a estrutura de dados em vários níveis do Hiera que você pode precisar, mas eu posso pelo menos apontar você na direção geral do Hiera.

edgester
fonte