Criando um fileserver com o Amazon EFS

Criando um fileserver com o Amazon EFS

Voltando com nossos tutoriais da AWS, hoje vamos abordar uma solução de compartilhamento de arquivos entre instâncias EC2.

O que é um fileserver

No ambiente on premises, utilizamos fileservers quando queremos compartilhar arquivos via rede para usuários ou aplicações.

Um fileserver (ou servidor de arquivos) nada mais é que um sistema criado para armazenar, gerenciar e compartilhar arquivos em uma rede. Através do fileserver, os usuários podem acessar documentos, imagens, vídeos e outros tipos de arquivos de forma centralizada, o que facilita a colaboração.

Normalmente, os servidores de arquivos operam com protocolos como SMB (Windows) e NFS (Linux), exigindo administração para gerenciamento de permissões, espaço em disco e desempenho.

O que é o EFS

O Amazon Elastic File System (EFS) é um serviço de armazenamento de arquivos gerenciado e escalável. Ele permite criar e compartilhar sistemas de arquivos entre várias instâncias da AWS, como EC2, containers e funções Lambda, de forma simples e segura.

Diferente dos servidores de arquivos tradicionais, o EFS não exige provisionamento de capacidade em disco, pois ele é escalável. Além disso, oferece alta disponibilidade com replicação automática entre zonas de disponibilidade (AZs). Cabe ressaltar que ele utiliza o protocolo NFS, portanto, é usado em Linux.

Em cenários em que é necessário armazenar arquivos e compartilhar com várias instâncias, ou que o volume de dados pode variar significativamente, a solução mais indicada é fazer uso do EFS - ao invés de um Elastic Block Store (EBS) por exemplo.

Até o presente momento em que este tutorial foi preparado, a AWS oferece 12 meses gratuitos de armazenamento com o EFS, com 5GB de espaço.

Agora que já sabemos o que é o EFS, vamos colocar as mãos na massa!

Passo a passo: servidor de arquivos com o EFS

1) Crie Grupos de Segurança

Primeiramente, vamos criar dois Grupos de Segurança. Para isso, temos que:

  • Acessar a console AWS ->ir em EC2 -> Grupos de Segurança -> clicar em Criar grupo de segurança

Para esse primeiro grupo, forneça um nome e uma descrição. Ele será o SG que vai permitir acessarmos a instância EC2 via SSH, mas limitando esse acesso ao IP da sua máquina local. Portanto, em Regras de Entrada:

  • Clique em Adicionar regra -> em Origem selecione Meu IP -> clique em Criar grupo de segurança

O segundo grupo será para o EFS liberar para a instância o protocolo NFS. Para isso, crie um novo grupo de segurança:

Adicione uma regra de entrada com as informações:

  • Tipo NFS, Origem Personalizado -> busque pelo Grupo de segurança criado para a EC2 e selecione o grupo -> e clique em Criar grupo de segurança

2) Criando o EFS

Agora vamos efetivamente criar o EFS:

  • Pesquise por EFS na console -> clique em Criar sistema de arquivos

Uma janela pop-up será aberta para criar o EFS, mas vamos selecionar a opção Personalizar para criarmos nosso sistema de arquivos:

Na janela de configuração do EFS, vamos definir as seguintes informações:

  • Nome do sistema de arquivos
  • Tipo de sistema de arquivos: marque Regional
  • Desmarque a caixa Habilitar backups automáticos

Mais abaixo, em Configurações de performance, deixe:

  • Modo de taxa de Transferência: Avançado
  • Marque o Elastic (Recomendado)
  • Modo de desempenho: Uso geral

Por fim, clique em Próximo.

Em Acesso à rede, como estou usando a VPC padrão da AWS - no Norte da Virgínia, o EFS vai listar todas as zonas de disponibilidade disponíveis para esta VPC. Nós vamos remover 4 delas, e deixar apenas a us-east-1a e us-east-1b.

Além disso, você deve remover os grupos de segurança padrão e selecionar o grupo criado para o EFS, conforme imagem:

Na página seguinte, não é necessário marcar nada em Política do sistema de arquivos. Clique em Próximo.

Você será direcionado para uma página para revisar as informações e criar o EFS. Desça até o final da página e clique em Criar.

Se tudo ocorrer com o esperado, o EFS será criado e em poucos segundos estará disponível:

Agora, clique no EFS para acessá-lo. Em seguida, clique no botão Anexar

Deixe marcada a opção Montar via DNS e copie os códigos das opções: Usando o assistente de montagem do EFS e o Usando o cliente do NFS. Guarde esses códigos em um bloco de notas, pois vamos precisar deles depois.

3) Provisionando as instâncias EC2

Iremos criar duas instâncias com sistemas operacionais ligeiramente diferentes, uma instância Ubuntu e outra Amazon Linux.

Portanto, acesse o EC2 para criar as instâncias. A primeira deve ser as seguintes configurações:

  • Nome: ec2-fileserver-1
  • Imagem de máquina da Amazon: Ubuntu 24.04
  • Tipo de instância: t2.micro
  • Par de chaves (login): Criar novo par de chaves
  • Configurações de rede -> clique em Editar -> selecione a VPC padrão da AWS e a sub-rede disponível na região us-east-1a
  • Firewall (Grupos de segurança): Selecionar grupo de segurança existente
  • Grupos de segurança comuns: escolha o grupo que criamos para as EC2 no começo deste tutorial
  • Em "Configurar armazenamento", mantenha o padrão de 1 volume com 8 GiB.

Já a segunda instância deve ser as seguintes configurações:

  • Nome: ec2-fileserver-1
  • Imagem de máquina da Amazon: Amazon Linux
  • Tipo de instância: t2.micro
  • Criar par de chaves: selecionar par de chaves (escolha o mesmo par de chaves criado para a instância Ubuntu)
  • Configurações de rede -> clique em Editar -> selecione a VPC padrão da AWS e a sub-rede disponível na região us-east-1b
  • Firewall (Grupos de segurança): Selecionar grupo de segurança existente
  • Grupos de segurança comuns: escolha o grupo que criamos para as EC2

Prontinho! Instâncias criadas:

4) Acessando as instâncias e montando o EFS

Agora, vamos acessar a instância por SSH. Eu não irei me delongar nesse passo, mas caso tenha dúvidas de como fazer, acesse o tutorial Criando uma instância EC2 na AWS

Primeiro vamos acessar a instância Ubuntu (ec2-fileserver-1) e rodar os seguintes comandos:

sudo apt update
sudo apt install nfs-common -y
sudo mkdir efs

## Aqui vamos colar o segundo comando copiado lá no EFS
sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-0eb35cc770df5b760.efs.us-east-1.amazonaws.com:/ efs

df -h
  • Primeiro, atualizamos a lista de pacotes disponíveis nos repositórios configurados com o sudo apt update
  • Depois, instalamos o pacote nfs-common para permitir montar e acessar sistemas de arquivos NFS com o comando sudo apt install nfs-common -y
  • Criamos um diretório chamado 'efs' com o comando sudo mkdir efs
  • Em seguida, colamos o segundo comando que copiamos lá no EFS - para lembrar, olha ele aqui:
  • Por fim, listamos o espaço em disco e os sistemas montados com o comando df -h. Veja que nosso EFS já aparece montado:

Em seguida, vamos acessar o diretório do EFS e criar um arquivo nele. Para isso, execute os comandos:

cd efs
sudo touch teste.txt
ls -lha

O arquivo vai aparecer listado no diretório efs:

Agora, vamos acessar a instância Amazon Linux, e rodar os comandos:

sudo yum install -y amazon-efs-utils
sudo mkdir efs

## Aqui vamos colar o primeiro comando copiado lá no EFS
sudo mount -t efs -o tls fs-0eb35cc770df5b760:/ efs

df -h

Veja que nosso diretório aparece montado:

Agora, vamos acessar o diretório compartilhado, listar os arquivos e criar mais um arquivo a partir da instância Amazon Linux:

cd efs
ls -lha
sudo touch teste2.txt

Por fim, vamos voltar na instância Ubuntu (ec2-fileserver-1) depois de criar o arquivo teste2.txt e rodar o comando ls -lha para listar os arquivos do diretório:

Veja que o teste2.txt criado na outra instância já aparece aqui. É isso, você agora tem um sistema de compartilhamento de arquivos altamente disponível e escalável na AWS!

5) Limpando o ambiente

Para limpar o seu ambiente desse tutorial, basta:

  • Encerrar as duas instâncias criadas
  • Selecionar e excluir o EFS
  • Caso queira, pode excluir os Grupos de Segurança e o par de chaves criados também, mas isso é opcional.

É isso, bons estudos!

Referências