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.
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.
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.
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.
Estou usando este método:
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.
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).
Tags amazon-ec2 load-balancing