Melhor método para balanceamento de carga do amazon ec2

2

Se usarmos o balanceamento de carga do Amazon com várias instâncias, quando a segunda instância for disparada, como ela acessará os dados / sistema de arquivos da Web mais recentes. Você deveria armazenar seus arquivos de site dentro de buckets e de alguma forma configurar o apache para acessar os buckets?

Obrigado por qualquer entrada.

    
por user70432 11.02.2011 / 16:17

4 respostas

1

Eu acho que provavelmente faria isso com o GlusterFS. Configure um cluster de servidores de armazenamento e, em seguida, monte os ativos no servidor de armazenamento nos frontends de dimensionamento e atenda a partir dele.

    
por 12.02.2011 / 12:41
0

Eu usei scripts CloudInit no passado para sincronizar o conteúdo de uma fonte central para cada instância à medida que eles são inicializados. o servidor da Web é iniciado.

Outra opção pode ser usar uma instância baseada em EBS que tenha o conteúdo pré-carregado no instantâneo do EBS.

    
por 11.02.2011 / 18:41
0

Estou usando este método:

  • A cada x minutos, outra instância cria um instantâneo dos arquivos a serem veiculados
  • Quando a nova instância é acionada, o script de carga útil faz o download da captura instantânea e copia os arquivos para o diretório da web.
  • Em seguida, a nova instância rsync com outra instância para atualizar os arquivos novos ou modificados.
  • Finalmente, o servidor da web é iniciado.

Além disso, você pode usar o EBS para os instantâneos. Eu estou usando instantâneos compactados porque há muitos arquivos no meu diretório web, o rsync levaria muito tempo para copiar todos os arquivos.

    
por 11.02.2011 / 19:04
0

A doutrina de arquitetura de nuvem normal diria que você deve extrair dados para uma camada separada - S3 para blobs, SimpleDB para dados não relacionais, RDS para dados relacionais etc. - e que os front ends de dimensionamento não devem ter dados neles.

EBSes e snapshots também são uma opção, isso depende da freqüência com que você vai alterar os arquivos. Se os usuários estão contribuindo com os dados / arquivos, você quase certamente precisa ir a um repositório compartilhado conforme acima. Mas se é só você, então outras coisas funcionam bem.

Se você fizer isso, você terá que lidar com a complexidade da replicação. Via cloudinit, ou um mecanismo de provisionamento dedicado, como chef ou fantoche, você pode fazer um pull sync. O problema aqui é que, quando você deseja alterar o conteúdo, é necessário enviá-lo para todos os servidores (ou confiar nos pulls agendados). Qual para o conteúdo da Web estático é provavelmente bem; Uma vez que você deseja gerenciar aplicativos em vários servidores, fica mais fácil, e também depende se você está alterando os arquivos todos os meses ou a cada cinco minutos.

Nós usamos um mecanismo de orquestração combinado com push sync. Quando um novo servidor aparece, ele registra e recebe um impulso imediato do conteúdo atual; então, quando lançamos novos conteúdos, os enviamos para todos os servidores ativos. Isso tem o benefício de usar o mesmo canal para a propagação inicial no momento do provisionamento e alterações posteriores. Algumas pessoas hackear o chef / fantoche para fazer algo semelhante (ou aumentá-las com um mecanismo de impulso dedicado, como o capistrano).

    
por 11.02.2011 / 20:27