Pular para o conteúdo principal

Criando um fileserver com o Amazon EFS

· 8 min para ler
Ludmila Silva
Cloud & DevOps Engineer

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​