Para usar um sistema de arquivos de cluster como OCFS ou compartilhar dados somente leitura entre máquinas, é necessário anexar o mesmo volume/LUN SAN a vários servidores ao mesmo tempo.
Como posso fazer isso com volumes EBS no Amazon EC2?
console.aws.amazon.com parece não permitir anexar um volume já anexado e a documentação da Amazon não contém "multiattach". Talvez eu precise de outra palavra-chave para pesquisar?
Você não pode fazer isso. A API do EC2 não permite isso.
Agora você pode fazer isso com volumes IOPS io1 provisionados.
Anúncio da AWS :
Observe que é necessário usar sistemas de arquivos projetados para gravação múltipla ou replicação, como GFS2 ou OCFS2.
Se você quiser fazer isso, use o Elastic File System (EFS) em vez do Elastic Block Storage (EBS).
https://aws.amazon.com/efs/
Notas:
O EBS é apenas para uma única instância. Compartilhar uma instância do EBS seria como colocar o mesmo disco físico em duas máquinas.
Se você quiser duas instâncias do disco, poderá criar um instantâneo do EBS ou uma AMI com base nesse disco do EBS. Isso permitiria executar várias instâncias de um servidor da web, por exemplo.
Se você realmente deseja armazenamento compartilhado para dados, consulte o Amazon EFS ou pode usar o S3.
Conforme declarado pela EEAA, você não pode fazer isso.
No entanto, existe uma solução alternativa: anexe o volume EBS a uma única instância do Linux e exporte o dispositivo via iSCSI. Agora, nas instâncias "cliente", você simplesmente tinha que anexar o volume como uma unidade iSCSI normal.
Por uma questão de integridade: lembre-se de que os sistemas de arquivos tradicionais não reconhecem clusters. Se você montar simultaneamente um disco de dois clientes iSCSI, você (mais ou menos) corromperá instantaneamente seu sistema de arquivos (pelo menos ext4; xfs tem alguma proteção de segurança que deve impedir uma montagem dupla). Você tinha que usar um sistema de arquivos com reconhecimento de cluster, como OCFS (como você sugeriu) ou GFS2.
Você pode usar o NFS independentemente da AWS. Lembro-me de usar o NFS no início dos anos 90 como uma excelente maneira de compartilhar um volume de diretório inicial em vários servidores SAMBA no DNS round robin. No meu caso recente, estou usando vários servidores da web para servir mídia e dados estáticos.
A AWS simplesmente não fornece compartilhamento do volume entre vários servidores, o que faz pouco sentido porque, se você tiver dois servidores atrás de um balanceador de carga, um arquivo só será acessado por um servidor por vez. A Rackspace e a Digital Ocean permitem que você faça isso, mas a AWS frustrantemente não permite, a menos que você esteja em uma zona específica.
Criei um volume ELB, anexei-o a um servidor e usei o NFS para anexá-lo ao outro servidor. Boas instruções para fazer isso no Ubuntu estão aqui: https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nfs-mount-on-ubuntu-20-04
Atualização Conforme apontado por @Juergen, se os dados forem compartilhados em rodízio em servidores acessados por clientes que escrevem na mesma área, um compartilhamento NFS não seria uma boa ideia, pois existe a possibilidade de condições de corrida. Para o exemplo de round robin para servidores da web para mídia, ele funciona bem. A AWS fornece volumes multiattacheable se seu servidor AWS estiver em uma zona específica. A maioria das zonas da AWS não fornece esse serviço e, se o seu servidor precisar estar em uma dessas zonas, você não poderá fazê-lo.