Amazon CloudFront e EC2: Balanceamento de carga global

6

Temos um aplicativo que armazena e distribui uma quantidade razoável de dados no S3 para um público global em que a latência deve ser minimizada. Por isso, estamos fazendo testes com o Amazon CloudFront e obtivemos resultados favoráveis.

No entanto, precisamos de uma camada fina de middleware (para segurança etc) e gostaríamos de colocar isso no EC2. Devido a restrições de segurança, essa camada de middleware fará o streaming de arquivos do S3 / CloudFront:

S3 / CloudFront - > EC2 - > Clientes

Podemos distribuir geograficamente os nós EC2 (Leste / Oeste dos EUA e Irlanda), mas o problema é que um cliente na UE acessa nosso servidor nos EUA e recebe dados de lá, o que gera muito do benefício de desempenho do CloudFront. discutível. Eu tenho pesquisado sobre os documentos do EC2, mas não consigo encontrar uma maneira integrada de obter uma versão geograficamente distribuída do EC2 à CloudFront.

O Elastic Load Balancing parece ser o caminho a percorrer, mas não consigo encontrar uma maneira de direcionar isso com base no roteamento ... Preferencialmente, gostaríamos de manter a quantidade de coisas fora do EC2 / S3 / etc. ao mínimo (por razões óbvias).

Alguma idéia de como fazer isso dentro da estrutura do EC2 / S3? Truques de DNS / roteamento?

Obrigado!

    
por Matt Rogish 13.04.2010 / 19:49

3 respostas

4

O uso de uma camada intermediária geralmente nega os benefícios de uma CDN distribuída, pois você terá apenas alguns nós em grandes datacenters centrais que atendem ao conteúdo em vez de muitos nós de cache de borda. Se o seu plano realmente requer piping o conteúdo através de um servidor em primeiro lugar, em seguida, ignorar o CloudFront e apenas ficar com S3, como você não terá nenhum benefício dele.

Uma abordagem melhor é formalizar o que você quer dizer com "segurança etc." e veja se você pode usar os controles de autenticação e acesso que estão embutidos no CDN. O S3 e a Cloudfront usam assinaturas para fornecer controle abrangente sobre quem pode acessar o conteúdo, e você ainda pode criar tempo limitado URLS que expirará após algumas horas ou minutos. Esses urls especiais podem ser criados pelo seu site para que os usuários não possam vincular profundamente o conteúdo ou compartilhar o link com outra pessoa, e geralmente oferecem segurança suficiente que ainda permite que você se beneficie do cache de borda.

Eu não estou muito familiarizado com a documentação da Amazon, mas o Windows Azure também tem o conceito de assinaturas de acesso compartilhado que permitem delegar permissões para upload ou download sem liberar suas chaves privadas. Houve um episódio recente do Cloud Cover no Canal 9 que faz um ótimo trabalho ao descrever como criar assinaturas de acesso compartilhado e como elas podem ser usadas para proteger o conteúdo e delegar permissões em um CDN.

    
por 14.04.2010 / 01:18
1

Você pode usar um serviço DNS que ofereça suporte a solicitações de roteamento com base no país de um usuário para um servidor diferente, mas provavelmente não há sentido em usar o Cloudfront se você estiver veiculando dados do EC2 e não parece usando o S3, já que você está sempre enviando os dados da sua instância do EC2.

Talvez, se você oferecer mais informações sobre o tipo de dados que está enviando, uma solução melhor possa se tornar visível.

    
por 13.04.2010 / 20:10
0

Você pode implantar uma solução de balanceamento de carga global onde a proximidade geográfica é usada para direcionar os clientes (via respostas de DNS) para o datacenter mais próximo. Existem soluções de software que você pode executar na nuvem (no seu caso EC2), como o Zeus GLB. Você pode até obter uma avaliação gratuita e testá-la em seu ambiente.

    
por 14.04.2010 / 15:20