Coder Social home page Coder Social logo

igor-gallo / app-static-site-efs Goto Github PK

View Code? Open in Web Editor NEW

This project forked from kledsonhugo/app-staticsite-efs-aws

0.0 0.0 0.0 1.52 MB

Lab de uso do AWS EFS

License: GNU General Public License v2.0

Shell 12.89% PHP 0.28% HTML 13.81% HCL 73.02%

app-static-site-efs's Introduction

WebApp hosted on AWS EFS

Amazon Elastic File System (Amazon EFS) é um serviço que fornece um sistema de arquivos elástico simples e sem servidor.

O serviço gerencia toda a infraestrutura de armazenamento de arquivos para você, evitando a complexidade de implantar, corrigir e manter configurações complexas de sistemas de arquivos.

É compatível com a última versão do protocolo Network File System versão 4 (NFSv4.1 e NFSv4.0) e suas versões anteriores.

Várias instâncias de computação em nuvem, incluindo Amazon EC2, Amazon ECS e AWS Lambda, podem acessar o sistema de arquivos EFS ao mesmo tempo, permitindo uma fonte de dados comum para cargas de trabalho e aplicativos em execução em mais de uma instância de computação.

Com o Amazon EFS, você paga apenas pelo armazenamento usado pelo sistema de arquivos e não há taxa mínima nem custo de configuração.

O objetivo dessa atividade é explorar na prática os conceitos deste serviço EFS.

Tempo aproximado para realização da atividade: 3hs

Note

A execução requer conhecimento prévio sobre a infraestrutura global da AWS (Regiões e Zonas de Disponibilidade), além de caracteríticas básicas dos serviços AWS Virtual Private Cloud (VPC) e AWS Elastic Compute Cloud (EC2).

As opções utilizadas consideram ambiente exclusivamente para experimentação. Ambientes corporativos produtivos devem levar em consideração outros aspectos não contemplados, como segurança, capacidade, alta disponibilidade e observability.

Referência: https://docs.aws.amazon.com/pt_br/efs/latest/ug/whatisefs.html



Arquitetura de referência

arquitetura base



Passo-a-passo

Criar VPC

  1. Faça login no AWS Console.

  2. Em Serviços digite VPC e selecione o serviço.

  3. Selecione o botão Criar VPC e preencha com as informações abaixo.

    • Recursos a serem criados : VPC e muito mais
    • Gerar automaticamente : efs
    • Bloco CIDR IPv4 : 10.0.0.0/16
    • Número de sub-redes privadas : 0
    • Endpoints da VPC : Nenhuma

  4. Clicar em Criar VPC.

  5. Observar se os recursos associados à VPC foram criados conforme o exemplo da figura.

    Note

    Valide cuidadosamente esse passo antes de prosseguir.

    Esse passo é pré-requisito para os demais passos desse procedimento.

    Em caso de dúvidas ou algo inesperado, não prossiga, busque apoio.

    • Devem ser criados os seguinte recursos:

      • 01 VPC
      • 02 sub-redes
      • 01 gateway para a Internet
      • 01 tabela de rotas

      Criar VPC

    Warning

    Ignore a mensagem Falha ao carregar grupos de regras conforme figura abaixo, caso apareça.

    Essa mensagem é devido a ambientes de laboratório não possuirem permissão para visualizar regras do firewall de DNS.

    Essa mensagem não afeta os passos seguintes dessa atividade.

    Criar VPC

Criar Security Group (Firewall)

  1. Em Serviços digite VPC e selecione o serviço.

  2. No menu lateral esquerdo clique em Grupos de segurança.

  3. Clique em Criar grupo de segurança e preencha com as informações abaixo.

    • Nome do grupo de segurança : efs-sg
    • Descrição : EFS Security Group
    • VPC : efs-vpc

    • Em Regras de entrada clique em Adicionar regra para cada regra abaixo
      • Regra
        • Tipo : Todo o tráfego
        • Origem : 10.0.0.0/16
      • Regra
        • Tipo : SSH
        • Origem : 0.0.0.0/0
      • Regra
        • Tipo : HTTP
        • Origem : 0.0.0.0/0

  4. Clique em Criar grupo de segurança.

Criar sistema de arquivos EFS

  1. Em Serviços digite EFS e selecione o serviço.

  2. Selecione o botão Criar sistema de arquivos e preencha com as informações abaixo.

    • Nome : efs
    • Virtual Private Cloud : efs-vpc

  3. Clique em Personalizar e preencha com as informações abaixo.

    • Habilitar backups automáticos : Desmarcar
    • Transição para IA : Nenhum
    • Habilite a criptografia de dados em repouso : Desmarcar

  4. Clique em Próximo.

  5. Na tela Acesso à rede, para cada uma das duas Zonas de disponibilidade, remova o grupo de segurança padrão e selecione o grupo de segurança efs-sg .

    Note

    As sub-redes criadas anteriormente devem ser preenchidas automaticamente no campo ID da sub-rede.

    A sub-rede efs-subnet-public1-us-east-1x para uma Zona de disponibilidade e a sub-rede efs-subnet-public2-us-east-1x para a outra Zona de disponibilidade.

    Caso não estejam, selecione manualmente.

  6. Clique em Próximo.

  7. Na tela Política do sistema de arquivos clique em Próximo.

  8. Na tela Revisar e criar clique em Criar.

  9. Após a criação deverá aparecer a mensagem Êxito! O sistema de arquivos com id fs-xxxxxxxx está disponível conforme exemplo da figura.

    Note

    Capture o id do sistema de arquivos EFS pois será utilizado adiante.

    Criar EFS

Criar instâncias EC2

  1. Em Serviços digite EC2 e selecione o serviço.

  2. Clique em Executar instância e preencha com as informações abaixo.

    • Nome : efs-public1

    • Par de chaves (login)

      • Nome do par de chaves : vockey (ou outra de sua preferência)

    • Em Configurações de rede clique Editar

      • VPC : efs-vpc
      • Sub-rede : efs-subnet-public1-us-east-1a
      • Atribuir IP público automaticamente : Habilitar
      • Selecionar grupo de segurança existente
        • Grupos de segurança comuns : efs-sg

    • Detalhes avançados

      • Dados do usuário

        #!/bin/bash
        yum update -y
        amazon-linux-extras install -y php7.2 epel
        yum install -y amazon-efs-utils httpd telnet tree git
        mkdir /mnt/efs
        echo "${efs_id}:/ /mnt/efs efs _netdev,noresvport,tls 0 0" >> /etc/fstab
        x=10
        while (( $x > 0 )); do
          mount -fav
          mnt=`df -h |grep /mnt/efs |wc -l`
          if (( $mnt >= 1 )); then
            systemctl enable httpd
            cd /tmp
            git clone https://github.com/kledsonhugo/app-static-site-efs
            mkdir /mnt/efs/html
            cp /tmp/app-static-site-efs/app/*.html /mnt/efs/html
            cp /tmp/app-static-site-efs/app/phpinfo.php /mnt/efs/html
            rm -rf /var/www/html/
            ln -s /mnt/efs/html/ /var/www/html
            service httpd restart
            break
          fi
          echo $((x--))
          echo "Unable to mount EFS. Attempt: $x"
          sleep 5
        done
        

        Note

        Substitua no código acima ${efs-id} pelo id do sistema de arquivos EFS capturado anteriormente, conforme figuras abaixo.

        Antes

        Criar EFS

        Depois

        EFS id fs-0e1404bfc151ce59b usado apenas como exemplo.

        Substitua pelo id do EFS criado previamente nessa atividade.

        Criar EFS

    • Resumo

      • Número de instâncias : 2

  3. Clique em Executar instância.

  4. Clique em Visualizar todas as instâncias.

  5. Aguarde até que as instâncias fiquem com status 2/2 verificações aprovadas conforme exemplo da figura.

    Note

    Clique no botão Refresh para atualizar o status da página.

    Visualizar Instancias

    Note

    Valide cuidadosamente esse passo antes de prosseguir.

    Esse passo é pré-requisito para os demais passos desse procedimento.

    Em caso de dúvidas ou algo inesperado, não prossiga e busque apoio.



  6. Repita os passos 01 ao 05 acima apenas alterando com as informações abaixo.

    • Nome : efs-public2

    • Configurações de rede

      • Sub-rede : efs-subnet-public2-us-east-1b

        Note

        Pode ser que a sub-rede não seja efs-subnet-public2-us-east-1b, dependendo de qual Zona de disponibilidade a sub-rede foi criada. Porém nesse ponto não pode ser a mesma sub-rede usada para criar as primeiras 2 instâncias EC2.

        Em caso de dúvidas, reveja a Arquitetura de Referência ou busque por apoio.



Criar Balanceador de Carga

  1. Em Serviços digite EC2 e selecione o serviço.

  2. No menu lateral esquerdo clique em Grupos de destino.

  3. Clique em Criar grupo de destino e preencha com as informações abaixo.

    • Nome do grupo de destino : efs-elb-target-group
    • VPC : efs-vpc

  4. Clique em Próximo.

  5. Selecione as 4 instâncias criadas anteriormente, que iniciam com efs-publc, e clique em Incluir como pendente abaixo conforme exemplo da figura.

    Visualizar instâncias target

  6. Validar que as 4 instâncias foram movidas para Examinar destinos conforme exemplo da figura.

    Note

    Valide cuidadosamente esse passo antes de prosseguir.

    Esse passo é pré-requisito para os demais passos desse procedimento.

    Em caso de dúvidas ou algo inesperado, não prossiga e busque apoio.

    Visualizar instâncias target 2

  7. Clique em Criar grupo de destino.

  8. No menu lateral esquerdo clique em Load Balancers.

  9. Clique em Criar Load Balancer.

  10. Clique em Criar para a opção Application Load Balancer e preencha com as informações abaixo.

    • Nome : efs-elb

    • VPC : efs-vpc

    • Mapeamentos : us-east-1a e us-east-1b

      Note

      A segunda Zona de disponibilidade pode não ser us-east-1b, dependendo de qual Zona de disponibilidade as sub-redes foram criadas. Selecione as Zonas de disponibilidade usadas para criar as instâncias EC2.

      Em caso de dúvidas busque apoio.

    • Grupos de segurança : efs-sg

      Note

      Desmarque qualquer outro Grupo de Segurança selecionado por padrão.

    • Ação padrão : Avançar para efs-elb-target-group

  11. Clique em Criar Load Balancer.

  12. Clique em Ver balanceador de carga.

  13. Aguarde até que o balanceador de carga fique com o estado Ativo conforme exemplo da figura.

    Note

    Clique no botão Refresh para atualizar o estado

    Visualizar ELB

  14. Capturar a url do campo Nome do DNS.

    Note

    A url será utilizada adiante.

  15. No menu lateral esquerdo clique em Grupos de destino.

  16. Clicar sobre o Grupo de destino previamente criado efs-elb-target-group.

  17. Valide se o Balanceador de Carga possui 4 instâncias com status Íntegro, conforme exemplo da figura.

    Note

    Valide cuidadosamente esse passo antes de prosseguir.

    Esse passo é pré-requisito para os testes desse procedimento.

    Em caso de dúvidas ou algo inesperado, não prossiga, busque apoio.

    Visualizar ELB

Testar aplicação HTML

  1. Abrir uma outra guia do navegador e acessar a url do Balanceador de Carga capturada previamente, conforme exemplo da figura.

    Note

    Sucesso caso tenha carregado a página conforme a figura.

    Visualizar ELB

Testar Balanceador de Carga

  1. Na mesma guia do navegador, inclua /phpinfo.php no fim da url, conforme exemplo da figura.

    Visualizar ELB

  2. Atualize a página diversas vezes e observe se a informação da linha System é alterada conforme os exemplos abaixo.

    Visualizar ELB

    Visualizar ELB

    Note

    Toda vez que a página é carregada, o balanceador de carga redireciona a conexão para uma das instâncias íntegras no balanceador.

    O esperado é que o IP das 4 instâncias EC2 apareça.



Parabéns

Se chegou até aqui você concluiu com sucesso o objetivo dessa atividade

Não esqueça de desproisionar todos recursos criados nessa atividade, para evitar gastos desnecessários.

app-static-site-efs's People

Contributors

kledsonhugo avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.