Questão Posso hospedar um site estático no Amazon EC2 juntamente com o EFS?


Meu site está hospedado no momento no EC2 com o volume do EBS. Mas muitas vezes eu corro um programa java na mesma instância (que gera para o EBS) para gerar / atualizar arquivos para o site. A CPU e a memória chegam a 100% no tempo de execução, o que torna meu site muito lento ou não abre, até que o processo termine. Além disso, estou pagando por uma grande instância durante todo o mês, apenas para executar este programa java algumas vezes por mês.

Por que não executar o programa java em arquivos de saída local e de atualização para o EBS? As velocidades da Internet na minha área são ridículas.

Por que não enviar para o S3? Meus arquivos são pequenos em tamanho e grandes em volume. Velocidade de transferência inaceitável entre EC2 a S3. Eu até tentei s4cmd, mas ainda assim a velocidade de transferência é inaceitável.

Por que não montar o mesmo volume do EBS em 2 instâncias do EC2? Eu acho que é um hack.

Então eu quero mudar para o EFS e conectar duas instâncias do EC2. Um dedicado para o funcionamento do site. E outra instância sob demanda para executar o processo java somente quando necessário.

Minhas perguntas sobre o EFS: 1) O meu programa java pode gerar arquivos grandes para o EFS com a mesma velocidade que o EBS? 2) A Amazon não está cobrando mais pela largura de banda de saída do EFS. É limitado?


0


origem


A taxa de transferência disponível no EFS varia com base na quantidade de dados armazenados, usando um algoritmo baseline + burst baseado em crédito. Para lhe dar uma resposta significativa, por favor mencione aproximadamente a quantidade de dados que devem ser armazenados, em GiB. - Michael - sqlbot
Eu quero armazenar apenas cerca de 2GB - 5GB. Mas - Avinash
Obrigado, acabei de verificar isso e, se entendi corretamente, o EFS pode fornecer apenas 0,5 MBps se eu armazenar abaixo de 10 GB de dados. Eu quero armazenar apenas cerca de 2gb-5gb de dados, mas exigem um throughput de saída muito alto. Eu acho que o EFS não é adequado para minha exigência. É estranho que a Amazon esteja vinculando o tamanho dos dados ao tráfego. Eu posso armazenar apenas poucos dados, mas isso não significa que meu tráfego de saída também será muito baixo. - Avinash
Sua interpretação é um pouco incompleta. Vou tentar esclarecer isso com uma resposta, em breve. - Michael - sqlbot
Você pode nos contar mais sobre seu caso de uso? Na sua situação, eu reduziria o tamanho da instância e usaria outra coisa para processamento em lote - uma instância spot, AWS Batch (novo), Lambda, etc. Tornar os arquivos da sua instância disponíveis usando o NFS parece bastante prático. Eu li que o EFS tem muita latência quando uma leitura é iniciada, portanto, não é uma ideia para arquivos pequenos - é melhor com arquivos grandes. - Tim


Respostas:


Nota importante:  A partir de 2018-07-12, o EFS permite que você compre taxa de transferência provisionada. A resposta abaixo reflete o comportamento do serviço antes que esse recurso estivesse disponível. Anteriormente, sistemas de arquivos EFS pequenos eram fáceis de sobrecarregar com o tráfego, porque o desempenho aumentava linearmente com o tamanho dos dados armazenados ... portanto, com apenas alguns GB armazenados, o limite efetivo era muito pequeno para alguns casos de uso que não em conta.


Por que não montar o mesmo volume do EBS em 2 instâncias do EC2? Eu acho que é um hack.

Você não pode montar o mesmo volume do EBS em várias instâncias. Você pode, no entanto, criar uma exportação NFS a partir da máquina com o volume EBS e montá-la pela rede. NFS é uma tecnologia estabelecida, não um hack. Na verdade, isso seria quase idêntico ao uso do EFS de sua perspectiva, uma vez que o EFS de fato usa o mesmo protocolo - NFS.

A Amazon não está cobrando mais pela largura de banda de saída do EFS. É limitado?

"Outbound bandwith" não é exatamente um conceito válido com o EFS, porque o tráfego é estritamente entre o EFS eo instância que está acessando. Se você montá-lo corretamente, usando o endpoint específico da zona de disponibilidade, o tráfego entre o EFS e as instâncias do EC2 nunca deixará a zona de disponibilidade.

Se um navegador da Web fizer o download de um arquivo que está no seu sistema de arquivos EFS, ele deverá necessariamente ser baixado através um dos seus casos. Portanto, a largura de banda de saída é, na verdade, de saída do EC2, não de saída do EFS.

A taxa de transferência disponível ("largura de banda") entre o EFS e o EC2 aumenta de escala com o tamanho total dos arquivos armazenados em um sistema de arquivos EFS.

O Amazon EFS usa um sistema de crédito para determinar quando os sistemas de arquivos podem estourar. Cada sistema de arquivos ganha créditos ao longo do tempo a uma taxa de linha de base que é determinada pelo tamanho do sistema de arquivos e usa créditos sempre que lê ou grava dados. A taxa de referência é de 50 MiB / s por TiB de armazenamento (equivalente a 50 KiB / s por GiB de armazenamento).

Créditos de burst acumulados dão ao sistema de arquivos permissão para gerar taxa de transferência acima de sua taxa básica. Um sistema de arquivos pode gerar taxa de transferência continuamente em sua taxa de linha de base, e sempre que estiver inativo ou gerando taxa de transferência abaixo de sua taxa de linha de base, o sistema de arquivos acumula créditos de estouro.

http://docs.aws.amazon.com/efs/latest/ug/performance.html

Mas há um recurso de burst de 100MiB / s, por menor que seja o sistema de arquivos. Para um sistema de arquivos de 10GiB, você pode atingir 100MiB / s por 7,2 minutos por dia, ou 25MiB / s por 28,8 minutos por dia, etc.

O que você está esquecendo com a sua conclusão de que isso é insuficiente é o cache do sistema operacional. No servidor da Web, os arquivos lidos do EFS podem permanecer no cache do sistema operacional nessa máquina, o que significa que, depois que um arquivo é exibido em um navegador, o servidor da Web pode não precisar ler o arquivo do EFS no próximo download, mas pode em vez disso, apenas verifique se não mudou e depois servir para o navegador da memória. Esse comportamento deve ser automático, a menos que você o desabilite.

É estranho que a Amazon esteja vinculando o tamanho dos dados ao tráfego. Eu posso armazenar apenas poucos dados, mas isso não significa que meu tráfego de saída também será muito baixo.

Não é muito estranho, já que o tamanho dos dados armazenados é a única dimensão que impacta o preço. Volumes EBS são geralmente semelhantes - quanto maior o volume, mais rendimento em MiB / se / ou IOPS estará disponível nesse volume.

Aqui, novamente, não confunda o tráfego de saída do seu aplicativo com o rendimento da loja de apoio. Os dois valores não estão fortemente correlacionados.

Para instâncias menores, as características da instância são, na verdade, mais prováveis ​​de serem o fator limitante. Por exemplo, uma instância t2.small só tem 31.25 MiB / s (250 mbps, 0.25 gigabit / s) de largura de banda disponível, portanto, o limite superior de desempenho não será o sistema de arquivos.

Tente seu aplicativo com o EFS e observe as métricas do CloudWatch para o sistema de arquivos. Cada carga de trabalho é diferente e essa é realmente a única maneira de saber se funcionará conforme o esperado.


1



Obrigado. Faz completamente sentido agora. Agora percebi que, mesmo se houver 1000 solicitações simultâneas para um arquivo no EFS, a instância fará apenas uma única solicitação para o servidor EFS. Além disso, também entendi que o throughput depende do tamanho médio de I / O e do tamanho do arquivo desta sentença na página aws: "O throughput geral geralmente aumenta à medida que o tamanho médio de I / O aumenta, porque o overhead é amortizado em uma quantidade maior de dados". Mas a montagem na mesma zona de disponibilidade (ou mesmo região) não é possível para mim, pois quase o meu tráfego é da região da Ásia-Pacífico, enquanto o EFS não está disponível aqui. - Avinash
Oficialmente, o EFS só é suportado quando o sistema de arquivos EFS e as instâncias que o montam estão na mesma região. Eu desenvolvi uma solução alternativa para isso, o que funciona muito bem, mas as limitações da velocidade da luz tornam isso pouco adequado para muitos aplicativos, devido ao aumento na latência e às taxas de transferência de dados envolvidas no envio de tráfego entre as regiões. - Michael - sqlbot