Gerenciamento do failover multi-AZ para clusters do EMR usando o Controlador de Recuperação de Aplicações - Recomendações da AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Gerenciamento do failover multi-AZ para clusters do EMR usando o Controlador de Recuperação de Aplicações

Aarti Rajput, Ashish Bhatt, Neeti Mishra e Nidhi Sharma, Amazon Web Services

Resumo

Este padrão oferece uma estratégia eficiente de recuperação de desastres para workloads do Amazon EMR, ajudando a garantir alta disponibilidade e consistência de dados em diversas zonas de disponibilidade dentro de uma única Região da AWS. O projeto emprega o Controlador de Recuperação de Aplicações da Amazon e um Application Load Balancer para gerenciar operações de failover e de distribuição de tráfego em um cluster do EMR baseado em Apache Spark.

Sob condições padrão, a zona de disponibilidade principal hospeda um cluster EMR ativo e um aplicativo com funcionalidade completa read/write . Se uma zona de disponibilidade falhar inesperadamente, o tráfego é automaticamente redirecionado para a zona de disponibilidade secundária, na qual um novo cluster do EMR é iniciado. Ambas as zonas de disponibilidade acessam um bucket compartilhado do Amazon Simple Storage Service (Amazon S3) por meio de endpoints de gateway dedicados, garantindo um gerenciamento consistente dos dados. Essa abordagem minimiza o tempo de inatividade e possibilita uma recuperação rápida para workloads críticas de big data durante falhas em zonas de disponibilidade. A solução é útil em setores como finanças ou comércio varejista, em que analytics em tempo real são essenciais.

Pré-requisitos e limitações

Pré-requisitos

  • Uma Conta da AWS ativa

  • Amazon EMR na Amazon Elastic Compute Cloud (Amazon) EC2

  • Acesso do nó principal do cluster do EMR ao Amazon S3

  • AWS Infraestrutura Multi-AZ

Limitações

  • Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte Serviços da AWS by Region. Para endpoints específicos, consulte a página Cotas e endpoints de serviços e clique no link correspondente ao serviço desejado.

Versões do produto

Arquitetura

Pilha de tecnologias de destino

  • Cluster do Amazon EMR

  • Amazon Application Recovery Controller

  • Application Load Balancer

  • Bucket do Amazon S3.

  • Endpoints de gateway para o Amazon S3

Arquitetura de destino

Arquitetura para um mecanismo de recuperação automatizado com o Controlador de Recuperação de Aplicações.

Esta arquitetura fornece resiliência para aplicações ao usar diversas zonas de disponibilidade e implementar um mecanismo de recuperação automatizado por meio do Controlador de Recuperação de Aplicações.

  1. O Application Load Balancer encaminha o tráfego para o ambiente do Amazon EMR ativo, que normalmente é o cluster do EMR primário na zona de disponibilidade primária.

  2. O cluster do EMR ativo processa as solicitações da aplicação e estabelece conexão com o Amazon S3 por meio do endpoint do gateway dedicado do Amazon S3 para operações de leitura e gravação.

  3. O Amazon S3 funciona como um repositório central de dados e pode ser usado como ponto de verificação ou como armazenamento compartilhado entre clusters do EMR. Os clusters do EMR mantêm a consistência de dados quando gravam diretamente no Amazon S3 por meio do protocolo s3:// e do EMR File System (EMRFS).

  4. O Controlador de Recuperação de Aplicações monitora continuamente a integridade da zona de disponibilidade primária e gerencia automaticamente as operações de failover, quando necessário.

  5. Se o Controlador de Recuperação de Aplicações detectar uma falha no cluster do EMR primário, ele executará as seguintes ações:

    • Iniciar o processo de failover para o cluster do EMR secundário, localizado na zona de disponibilidade 2.

    • Atualizar as configurações de roteamento para direcionar o tráfego ao cluster secundário.

Ferramentas

Serviços da AWS

  • O Amazon Application Recovery Controller ajuda você a gerenciar e coordenar a recuperação de seus aplicativos em todas Regiões da AWS as zonas de disponibilidade. Este serviço simplifica o processo e aumenta a confiabilidade da recuperação das aplicações ao reduzir as etapas manuais exigidas por ferramentas e processos tradicionais.

  • O Application Load Balancer opera na camada de aplicação, que corresponde à sétima camada do modelo Open Systems Interconnection (OSI). Ele distribui o tráfego de entrada do aplicativo em vários destinos, como EC2 instâncias, em várias zonas de disponibilidade. Isso aumenta a disponibilidade do seu aplicativo.

  • AWS Command Line Interface (AWS CLI) é uma ferramenta de código aberto que ajuda você a interagir Serviços da AWS por meio de comandos em seu shell de linha de comando.

  • O Amazon EMR é uma plataforma de big data que fornece processamento de dados, análise interativa e machine learning para estruturas de código aberto, como Apache Spark, Apache Hive e Presto.

  • AWS Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.

  • O Amazon S3 fornece uma interface de serviço web simples que você pode usar para armazenar e recuperar qualquer volume de dados, a qualquer momento e de qualquer lugar. Com este serviço, é possível desenvolver, com facilidade, aplicações que aproveitem o armazenamento nativo da nuvem.

  • Os endpoints de gateway para o Amazon S3 são gateways que você especifica em sua tabela de rotas para acessar o Amazon S3 a partir da sua nuvem privada virtual (VPC) pela rede. AWS

Práticas recomendadas

Épicos

TarefaDescriptionHabilidades necessárias

Faça login no Console de gerenciamento da AWS.

Faça login no Console de gerenciamento da AWS como um usuário do IAM. Para obter instruções, consulte a documentação do AWS.

AWS DevOps

Configure AWS CLI o.

Instale o AWS CLI ou atualize-o para a versão mais recente para que você possa interagir com Serviços da AWS Console de gerenciamento da AWS o. Para obter instruções, consulte a documentação do AWS CLI.

AWS DevOps
TarefaDescriptionHabilidades necessárias

Criar um bucket do S3.

  1. Crie um bucket do S3 para armazenar o conjunto de dados de entrada, os logs, a aplicação e os dados de saída. Para obter instruções, consulte a documentação do Amazon S3.

  2. Organize o bucket em pastas separadas para dados de entrada (dataset), logs (logs), aplicação do Spark (spark-app) e dados de saída (output).

AWS DevOps

Crie um cluster do EMR.

  1. Use os AWS CLI comandos a seguir para criar um cluster do EMR (por exemplo, versão 6.12 ou posterior) com instâncias que abrangem duas zonas de disponibilidade (como us-east-1a eus-east-1b) para alta disponibilidade. O comando especifica o tipo de instância m4.large como um exemplo.

    aws emr create-cluster \ --ec2-attributes AvailabilityZone=<AZ-name-1> \ --release-label emr-6.12.0 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large
    aws emr create-cluster \ --ec2-attributes AvailabilityZone=<AZ-name-2> \ --release-label emr-6.12.0 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.large InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.large

    Para obter mais informações, consulte o comando create-cluster e a documentação do Amazon EMR.

  2. Forneça o par de chaves, o perfil de serviço e o perfil de instância com as permissões necessárias, se aplicável.

AWS DevOps

Defina as configurações de segurança para o cluster do EMR.

  1. Identifique o grupo de segurança associado ao nó principal do cluster do EMR usando o comando AWS CLI describe-cluster:

    aws emr describe-cluster --cluster-id j-XXXXXXXX
  2. Para aumentar a segurança, modifique as configurações do grupo de segurança para permitir acesso SSH (porta TCP 22) ao nó principal, mas restrinja-o ao seu endereço IP específico.

    Para obter mais informações, consulte a documentação do Amazon EMR.

AWS DevOps

Conecte-se ao cluster do EMR.

Estabeleça conexão com o nó principal do cluster do EMR por meio de SSH utilizando o par de chaves fornecido.

Certifique-se de que o arquivo do par de chaves esteja no mesmo diretório da sua aplicação.

Execute os seguintes comandos para definir as permissões corretas para o par de chaves e estabelecer a conexão SSH:

chmod 400 <key-pair-name> ssh -i ./<key-pair-name> hadoop@<master-node-public-dns>
AWS DevOps

Implante a aplicação do Spark.

Após estabelecer a conexão SSH, você estará no console do Hadoop.

  1. Crie ou edite o arquivo da aplicação do Spark (main.py) usando um editor de texto, como o vim:

    vim main.py

    Para obter mais informações sobre como criar e modificar a aplicação do Spark, consulte a documentação do Amazon EMR.

  2. Envie a aplicação do Spark para o cluster do EMR, especificando os locais dos dados de entrada e de saída no bucket do S3:

    spark-submit main.py —data_source <input-data-folder-in-s3> —output_uri <output-folder-in-s3>

    A seguir, apresentamos uma exemplo baseado nas pastas configuradas anteriormente:

    spark-submit main.py —data_source dataset —output_uri output
  3. Monitore o progresso da aplicação verificando os logs da aplicação:

    yarn logs -applicationId <application-id>
AWS DevOps

Monitore a aplicação do Spark.

  1. Abra outra janela de terminal e estabeleça um túnel SSH para a interface de usuário da web do gerenciador de recursos do cluster do EMR:

    ssh -i <key-pair-name> -N -L 8157:<resource-manager-public-dns>:8088 hadoop@<resource-manager-public-dns>
  2. Para monitorar a aplicação, acesse a interface de usuário da web do gerenciador de recursos ao navegar até http://localhost:8157 no seu navegador da web.

AWS DevOps
TarefaDescriptionHabilidades necessárias

Criar um Application Load Balancer.

Configure o grupo de destino que roteia o tráfego entre os nós principais do Amazon EMR implantados em duas zonas de disponibilidade dentro de uma Região da AWS.

Para obter instruções, consulte Create a target group for your Application Load Balancer na documentação do Elastic Load Balancing.

AWS DevOps

Configure a mudança de zona no Controlador de Recuperação de Aplicações.

Nesta etapa, você usará o recurso de mudança de zona no Controlador de Recuperação de Aplicações para redirecionar o tráfego para outra zona de disponibilidade.

  1. Abra o console do Controlador de Recuperação de Aplicações.

  2. Em Conceitos básicos, escolha Mudança de zona e, em seguida, Iniciar mudança de zona.

  3. Selecione a zona de disponibilidade da qual deseja redirecionar o tráfego.

  4. Escolha um recurso compatível (por exemplo, o Application Load Balancer) para a mudança de zona na tabela Recursos.

  5. Em Definir expiração da mudança de zona, escolha ou insira uma expiração para a mudança de zona. Você pode definir um período entre um minuto e três dias (72 horas).

    Todas as mudanças de zona são temporárias. Você deve definir uma expiração, mas pode atualizar as mudanças ativas posteriormente para definir um novo período de expiração de até três dias.

  6. Insira um comentário sobre essa mudança de zona.

  7. Marque a caixa de seleção para reconhecer que iniciar uma mudança de zona reduzirá a capacidade disponível para seu aplicativo ao afastar o tráfego da zona de disponibilidade.

  8. Escolha Iniciar.

Para usar o AWS CLI, consulte Exemplos de uso do AWS CLI com mudança zonal na documentação do Application Recovery Controller.

AWS DevOps

Verifique a configuração e o progresso da mudança de zona.

  1. Verifique os recursos que estão registrados na mudança de zona:

    aws arc-zonal-shift list-managed-resources --region <AWS-region-name>

    Por exemplo, a saída apresentada a seguir confirma que os recursos estão ativos em ambas as zonas de disponibilidade.

    "appliedWeights": { "use1-az1": 1.0, "use1-az2": 1.0 },
  2. Para visualizar o deslocamento zonal, use o AWS CLI comando a seguir para iniciar o deslocamento zonal:

    aws arc-zonal-shift start-zonal-shift \ --resource-identifier <application-load-balancer-arn> \ --away-from <source-AZ> \ --expires-in 10m --comment "testing" \ --region <AWS-region-name>

    em que <source-AZ> é o identificador da zona de disponibilidade da qual você deseja desviar o tráfego, e <application-load-balancer-arn> é o nome do recurso da Amazon (ARN) do seu Application Load Balancer.

  3. Verifique se o tráfego foi desviado para outra zona de disponibilidade.

    aws arc-zonal-shift get-managed-resource \ --resource-identifier <application-load-balancer-arn> \ --region <AWS-region-name>

    Você poderá confirmar a mudança de zona pelas seguintes medidas:

    "appliedWeights": { "use1-az1": 0.0, "use1-az2": 1.0 },
AWS DevOps

Recursos relacionados