Escalando um website LAMP hospedado no EC2

1

Sou muito novo em tudo isso. Recentemente, lancei meu site no EC2. Como próxima etapa, quero aprender como escalar o site. Eu tenho uma ideia geral, mas queria algumas sugestões dos especialistas sobre como fazer isso.

Meu site é baseado no LAMP, mas também possui um servidor Red5 que permite aos usuários gravar mensagens e também usá-las para reproduzi-las.

Atualmente, esta é a arquitetura que estou planejando configurar para o dimensionamento inicial. Implemente quatro instâncias pequenas do EC2 para as seguintes finalidades:

Instância-1: Nesta instância eu vou rodar o banco de dados MySql

Instância 2: Nesta instância eu vou rodar o red5 server

Instance-3 & Instância 4 Essas duas instâncias serão usadas para implantar o site e o Apache será executado nelas. Eles se comunicarão com o servidor mysql no servidor Instance-1 e red5 na Instance-2 usando o endereço IP interno. Como quando necessário, vou lançar outra instância do mesmo

EBS - Eu vou ter EBS de dizer 50 GIG, onde todos os dados do mysql serão armazenados. Também red5 usará este EBS para armazenar as mensagens de vídeo

Balanceador de carga - Use o balanceador de carga fornecido pela Amazon para balancear a instância Instance-3 e Instance-4

É isso que tenho em mente. Eu poderia estar longe então por favor, tenha paciência comigo. Também não levei em conta o caso de escalar o servidor MySql como atualmente não tenho idéia sobre como isso será feito e se é ou não necessário inicialmente.

Estou ciente de que a Amazon fornece dimensionamento automático e dimensionamento de mysql, mas não quero entrar nisso agora.

Seu feedback é apreciado Obrigado

    
por Gublooo 23.12.2010 / 15:21

2 respostas

2

Há toda uma série de artigos sobre esse tópico no link

Eu não usei a AWS, mas tenho experiência com a execução de instâncias virtuais em um datacenter, usando instâncias virtuais rackspace e appengine.

Como você escala (up x out) é grandemente determinado pelo que você está tentando fazer. Alguns aplicativos serão intensivos em E / S, alguns serão intensivos em CPU. Seu gargalo pode ser i / o de entrada, poder de processamento ou i / o de back-end ou uma combinação dos três em quantidades variáveis dependendo de onde você está no ciclo de vida do seu aplicativo. Tudo exigirá uma estratégia ligeiramente diferente.

Usando algo como a AWS, em geral, você deseja expandir e é preciso começar com o objetivo em mente e manter seus aplicativos fracamente acoplados. Isso permitirá que você ative outra instância para escalar a demanda. É bom manter sua instância db na mesma instância de seu aplicativo principal quando você está começando, mas isso geralmente é a primeira coisa a ser desmembrada em seu próprio servidor.

Então, você pode começar com tudo funcionando em uma instância. Em seguida, você começa a obter algum tráfego e observe que o banco de dados está consumindo sua CPU. Então você move o banco de dados para outra instância e tudo está ótimo. Até você começar a obter mais tráfego ... e perceber que seu front-end não consegue acompanhar o tráfego. Então você ativa mais algumas instâncias, equilibra a carga delas e fica feliz por um tempo, e pode escalar até talvez uma dúzia de servidores web ... Mas então você consegue mais tráfego, e enquanto o front end está se mantendo agora sua máquina de banco de dados está começando a se espelhar. Então, você replica seu banco de dados para um mestre e alguns escravos, e tudo está bem ... e assim por diante.

    
por 30.12.2010 / 14:41
1

Trabalhei no Amazone EC2 / EBS, etc., quando foi lançado e movi com sucesso um dos grandes sites de hosts físicos para seus ambientes.

Eu documentei minha experiência no meu blog como link há mais posts, mas não consigo Cole o link aqui. Espero que isso possa ajudá-lo.

    
por 23.12.2010 / 18:07