Amazon Auto Scaling + Balanceador de Carga Elástico + Aplicativo Web

2

Digamos que eu tenha um aplicativo da web que seja executado em uma única instância do EC2 (PHP + PostgreSQL). Agora eu crio o Load Balancer e defino o Auto Scaling.

A pergunta é: como replicar o banco de dados rapidamente quando o AutoScaling inicia uma nova instância do EC2? Como faço para replicar arquivos e pastas do meu aplicativo? E, finalmente, como faço para sincronizar as alterações feitas em cada instância da instância principal?

    
por Paweł Karpiński 15.12.2010 / 22:18

3 respostas

3

Você tem que separar a instância do PostgreSQL da sua instância do PHP / Apache. E configure o escalonamento automático para sua instância PHP / Apache.

As instâncias do PHP / Apache podem obter sincronização ao obter arquivos via s3, git ou svn. Ou use o sistema de arquivos compartilhado como o NFS.

Dessa forma, você pode ter 1-N da instância do PHP / Apache com apenas 1 DB.

    
por 16.12.2010 / 00:14
1

Quando você está executando apenas duas instâncias, eu esperaria com o balanceador de carga e começaria dividindo as funções do servidor. Então você executa o aplicativo PHP em um servidor e o PostgreSQL em outro.

Você terá mais eficiência, já que é mais fácil para um servidor sempre fazer a mesma tarefa do que saltar entre o banco de dados e os scripts php. Especialmente para o banco de dados.

Quando chega a hora de adicionar o terceiro servidor, você pode adicionar um servidor front-end e definir um balanceador de carga entre esses dois, mas ambos estarão se conectando ao mesmo banco de dados.

Mas há outro problema com o esquema do balanceador de carga que você não mencionou, mas com certeza vai encontrar e manter as sessões. Mas se você não tiver usuários logados, isso provavelmente não é um problema para você.

    
por 26.02.2011 / 18:14
1

Também sugiro separar os servidores da Web do banco de dados. Escalar servidores da Web (= iniciar mais instâncias) é geralmente simples usando uma das opções de sincronização ou compartilhamento do sistema de arquivos descritas nas outras respostas.

No entanto, isso não será tão fácil com o banco de dados.

Se você tiver a opção de alterar seu aplicativo, também poderá fornecer o Serviço de banco de dados relacional da Amazon como tentativa. No entanto, como este é um clone do MySQL, ele não é idêntico em relação aos recursos do PostgreSQL.

Se você quiser experimentar uma opção de armazenamento totalmente diferente, talvez queira dar uma olhada em SimpleDB - que é uma dessas opções de armazenamento NoSQL "modernas". Mas não espere poder fazer tudo o que você está acostumado a partir de um banco de dados relacional.

Ambas as opções de armazenamento (RDS e SimpleDB) são dimensionáveis por design, portanto, você não deve ter problemas ao usá-las com muitos servidores da Web com balanceamento de carga na frente.

    
por 26.02.2011 / 20:08