Dimensionando um site LAMP hospedado no EC2

Dimensionando um site LAMP hospedado no EC2

Sou muito novo em tudo isso - recentemente consegui lançar meu site no EC2. Na próxima etapa, quero aprender como dimensionar o site. Tenho uma ideia geral, mas queria a opinião de especialistas sobre como fazer isso.

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

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

Instância-1: Nesta instância irei executar o banco de dados MySql

Instância-2: Nesta instância irei executar o servidor red5

Instância-3 e Instância-4 Essas 2 instâncias serão usadas para implantar o site e terão o Apache em execução nelas. Eles se comunicarão com o servidor mysql na Instância-1 e com o servidor red5 na Instância-2 usando o endereço IP interno. Quando necessário, iniciarei outra instância do mesmo

EBS - terei EBS de, digamos, 50 GIG onde todos os dados do mysql serão armazenados. Além disso, o red5 usará este EBS para armazenar as mensagens de vídeo

Load-Balancer - Use o balanceador de carga fornecido pela Amazon para balancear a carga da Instância-3 e da Instância-4

Isto é o que tenho em mente. Eu poderia estar muito longe, então, por favor, tenha paciência comigo. Além disso, não levei em consideração o caso de dimensionamento do servidor MySql, pois atualmente não tenho ideia de como isso será feito e se é ou não necessário inicialmente.

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

Seu feedback é apreciado Obrigado

Responder1

Há toda uma série de artigos sobre esse assunto @http://highscalability.com

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

A maneira como você aumenta ou diminui é muito determinada pelo que você está tentando fazer. Alguns aplicativos farão uso intensivo de E/S, outros farão uso intensivo da CPU. Seu gargalo pode ser E/S de entrada, poder de processamento ou E/S de back-end, ou uma combinação dos três em quantidades variadas, dependendo de onde você está no ciclo de vida do seu aplicativo. Tudo exigirá uma estratégia ligeiramente diferente.

Usando algo como AWS, em geral você deseja expandir e precisa começar com o fim em mente e manter seus aplicativos fracamente acoplados. Isso permitirá que você crie outra instância para dimensionar de acordo com a demanda. Não há problema em manter sua instância de banco de dados na mesma instância do aplicativo principal quando você está começando, mas geralmente é a primeira coisa a ser desmembrada em seu próprio servidor.

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

Responder2

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

Documentei um pouco da minha experiência no meu blog, como http://linuxadminzone.com/how-to-install-setup-and-config-haproxy-loadbalancer-for-content-switching/há mais postagens, mas não consigo colar o link aqui. Espero que possa ajudá-lo.

informação relacionada