Como melhorar a disponibilidade em um aplicativo PHP + MySQL de inicialização?

2

Ontem, o data center da Rackspace DFW ficou inativo por algumas horas e me fez pensar em adotar a ação atrasada de melhorar minha estrutura de servidores lá. Até agora, eu tenho usado uma única instância do CentOS lidando com uma configuração básica de LAMP para meu aplicativo PHP + MySQL. Então, ontem, meu pedido ficou inativo por mais de três horas seguidas e isso foi horrível.

Eu pensei em:

  • Ter pelo menos duas instâncias lidando com o aplicativo dividido em pelo menos dois datacenters (Rackspace ou não).
  • Ter pelo menos duas instâncias configuradas mestre / escravo do MySQL para hospedar os dados, divididos em pelo menos dois datacenters.
  • Colocando um balanceador de carga na frente das instâncias do aplicativo para evitar lidar com propagação de DNS e poder adicionar ou remover instâncias do aplicativo sem problemas à minha vontade.

Então, minhas perguntas são:

  • Como as três medidas acima soam? O que mais pode ser feito?
  • Qual é a melhor maneira de implementá-las sem tempo de inatividade?
  • Como lidar com implantações de código
  • Quaisquer livros / whitepapers / etc você pode recomendar para me ajudar aqui?
  • Bônus: como fazer isso? : P
por Mauro 05.12.2012 / 18:36

1 resposta

4

Linha de fundo

@ HTTP500 está certo: a escalabilidade é uma tarefa não trivial. Mesmo que tudo seja baseado em ferramentas de infraestrutura como o EC2 LoadBalancer & co, você ainda precisa de uma pequena equipe de especialistas para operá-lo.

Alta disponibilidade para hospedagem na Web do LAMP

Vamos supor que você queira garantir que você possa dimensionar o número X de impressões de websites rapidamente. No entanto, para ajudá-lo, é preciso mais informações sobre o seu aplicativo. Eu ainda recomendo verificar as soluções conforme proposto por equipes como Amazee , fortrabbit , etc.

Para dar algumas ideias para "Introdução" , aqui está um diagrama (cortesia de Amazee ):

OesquemailustrabemcomoasolicitaçãoHTTPéexibida(apartirdobalanceadordecarga).Talsoluçãoprecisariademuitoplanejamento,oqueoajudaráadecidirsevocêrealmentevaiounãofazê-lo.

Paraconseguirumping-pongprimitivoeumrespawn-vocêprecisarádeumfailoverdebatimentoscardíacos.Eurecomendariatentaro link . Para o seu LAMP, você pode ter as seguintes classes de instâncias de VM:

  • Um balanceador de carga (assim como no diagrama - eu recomendo ngnix , escrito por um russo esperto)
  • Apache (servidor web do aplicativo PHP)
  • Memcache ou outro tipo de servidores de cache (aqui seu aplicativo pode ser mais inteligente se souber do memcache)
  • Sistema de arquivos semelhante ao NFS, mas não o NFS! O GlusterFS é um bom candidato.
  • Cluster de banco de dados do escravo-mestre Mysql

Como você vê, você terá que automatizar o monitoramento, ou seja, fazer algo como um script baseado em keepalive que circula e garante que tudo esteja ativo. Esse script pode verificar uma "pontuação de disponibilidade" em milissegundos para cada instância.

PS

Continue com os slides link Espero que isso lhe dê uma visão melhor de como implementar o que você está fazendo.

    
por 13.04.2013 / 19:30