Como manter vários servidores no arquivo de sincronização?

3

Atualmente, estou gerenciando um cluster de servidores PHP-FPM, que tendem a ficar fora de sincronia uns com os outros. O aplicativo que estou usando em cima dos servidores de aplicativos (Magento) permite que os administradores modifiquem vários arquivos no sistema, mas agora que o site está em uma configuração em cluster, modificar um arquivo só o modifica em uma única instância (em um dos servidores de aplicativos) das várias máquinas no cluster.

Existe um aplicativo de código aberto para Linux que me permita manter todos esses servidores em sincronia? Não tenho nenhum problema com a criação de uma pequena instância de VM que possa ouvir as alterações das máquinas para sincronização. Em teoria, o aplicativo perfeito teria pequenos clientes que são executados em cada máquina para serem sincronizados, o que falaria com o servidor mestre que decidiria como / o que sincronizar de cada máquina.

Já examinei as possibilidades de executar um servidor de arquivos centralizado, mas infelizmente meus servidores de aplicativos estão espalhados entre o EC2 e as máquinas físicas, o que inviabiliza isso. Como há vários servidores de aplicativos (alguns dos quais são criados dinamicamente dependendo da carga do site), simplesmente configurar uma tarefa cron do rsync não é eficiente, pois a tarefa cron teria que ser modificada em cada máquina para enviar arquivos para todos os outros. máquina no cluster, e isso seria apenas um monte de conexões de dados / ssh desnecessárias.

    
por GForceSys 11.12.2012 / 19:18

3 respostas

5

Você pode querer considerar o uso de Puppet ou CFEngine para fazer alterações nos servidores. Ferramentas como essas permitem fazer alterações controladas em todos os servidores. Eles ajudam muito a manter a configuração de vários servidores em sincronia.

    
por 12.12.2012 / 01:45
3

Dê uma olhada no GlusterFS. AFAIK está disponível no EC2.

A replicação / espelhamento é baseada em arquivos e é muito fácil de configurar. Os arquivos residem em diretórios locais em sistemas de arquivos locais dos nós.

Especificamente no seu caso, você pode configurar o espelho entre todos os servidores de aplicativos e acessar com segurança este diretório local para lendo para contornar a sobrecarga do FUSE (mas você tem que escrever via glusterfs mount, então os arquivos são replicados em todos os nós).

    
por 11.12.2012 / 19:31
0

Sendo extremamente familiar, não tenho conhecimento de nenhuma instalação do Magneto que faça alterações em arquivos ou diretórios por meio de uso normal diferente de

./var/cache   <-- should be on a distributed cache like Redis or Memcache
./var/report  <-- doesn't need to be network replicated
./var/log     <-- doesn't need to be network replicated
./var/locks   <-- the admin node should operate on a single server
./var/session <-- should be on a distributed cache like Redis or Memcache
./media/catalog/product/cache <-- doesn't need to be network replicated

Em qualquer caso, um sistema de arquivos de rede como o NFS não seria uma escolha sólida - a menos que você tenha uma vasta experiência de segurança e ajuste na WAN.

Replicação de bloco de rede, por exemplo. Gluster / DRBD também não seria uma boa escolha. O desempenho é fraco para o Gluster (e complexo para configurar) e o DRBD teria que usar um sistema de arquivos multi-mestre como o OCFS2 - não ideal.

Versões mais recentes do Magento também suportam armazenamento de banco de dados para mídia, por este motivo exato - embora isso seja além do ideal e não seja uma boa idéia.

O software de controle de versão (Git / SVN) cuida dos seus requisitos de nível de código. Você poderia facilmente adicionar um gancho à sua máquina de teste para executar uma operação múltipla sem toque nos sistemas de produção. Mas não serve para uploads de admin (imagens, etc.).

Isso faria com que o FAR, mais prático, apenas redirecionasse todo o seu tráfego de administração e lançamentos de produção para um único nó - e depois replicasse dessa fonte para os nós restantes.

O Lipsync é um aplicativo que atende às demandas do estilo "Dropbox" e realiza alterações e quando necessário. Nós o usamos com clusters do Magento em várias ocasiões.

    
por 02.02.2013 / 02:06