Desejo compartilhar dados entre várias instâncias da AWS de maneira de alto desempenho e baixa latência. Conceder acesso somente leitura a todas as instâncias (exceto uma instância que lidaria com gravações) é aceitável. Dois pontos sobre este caso de uso:
- Os nós anexados ao volume podem ir e vir a qualquer momento (iniciar, parar, terminar, etc.).
- Os dados compartilhados incluem milhares de arquivos potencialmente pequenos que precisam ser listados e ter metadados verificados.
Então, inicialmente tentei o EFS, mas ele é bastante lento para operações que precisam enumerar ou modificar centenas ou milhares de arquivos pequenos.
Então agora estou considerando a conexão múltipla do EBS. No entanto, para evitar corrupção de dados, a AWS recomenda usar apenas sistemas de arquivos em cluster como GFS2 ou OCFS. Ambos parecem ser complexos e complicados de configurar, bem como frágeis para o caso de uso de um cluster onde os nós podem entrar e sair a qualquer momento. Por exemplo, o GFS2 exige que o software de cluster em todos os nós seja reiniciado se o número de nós passar de mais de 2 para exatamente 2; ou adicionar um novo nó envolve fazer login em um nó atual, executar alguns comandos e possivelmente redistribuir um arquivo de configuração atualizado para todos os outros nós. Parece realmente inflexível, além de muita sobrecarga extra.
Mas se eu tivesse certeza de que apenas 1 instância estaria gravando no disco (ou possivelmente cada instância só poderia gravar em sua própria subpasta ou mesmo partição de disco), eu poderia usar um sistema de arquivos regular como o XFS para este volume e sair impune? ? Ou haveria problemas sutis de corrupção de dados, mesmo se o acesso fosse tecnicamente somente leitura ou se o acesso de gravação fosse restrito a subpastas ou partições específicas da instância?
Ou há uma solução completamente diferente que estou perdendo?
Responder1
Eu testei isso (XFS) e não funciona. Você precisa de um sistema de arquivos clusterizado. A melhor aposta é usar um sistema de arquivos em cluster. Veja outras opções, como Veritas Infoscale.
Responder2
O compartilhamento de conteúdo de volume estático parece funcionar bem com vários anexos e XFS regular. As "adições" ativas ao volume são visíveis apenas para a instância que gravou os dados. Com isso estabelecido, não testei "atualizações" ou "exclusões" a quente, presumindo que elas também seriam vistas apenas pelo autor, mas poderiam potencialmente interromper o acesso a esses dados para outras instâncias. Instâncias reiniciadas, reiniciadas e/ou reconectadas veem o estado mais recente do volume. Portanto, o caso de uso com uma instância gravando novos dados com pouca frequência, o que aciona, por exemplo, reinicializações forçadas para que as outras eventualmente vejam esses dados parece ser um caso de uso que esta tecnologia pode suportar.