Alta Disponibilidade - ribeiry/AWS-Professional-Study GitHub Wiki

Auto Scaling Group

Serviço que ajuda a manter a disponibilidade do aplicativo e permite adicionar ou remover automaticamente instâncias EC2 de acordo com as condições que você definir.

Launch Configuration (Legado)

A launch configuration é um template usado para criar uma nova instancia de EC2 e inclui parametros como familia de isntancias , tipo de instancias, AMI, Key Pair e security group. Ao definir uma nova AMI um novo Launch Configuration precisa ser criado e o ASG precisa ser atualizado.

Launch Template (Atual)

Armazena configurações de instancia (imagem, tipo etc.), para uso via Console, SDK ou CLI. Permite que você tenha várias versões de um modelo. Os modelos de inicialização oferecem suporte a uma combinação de instâncias On-Demand e Spot e, graças ao ASG, temos recursos de escalonamento automático. É possivel adicionar instancias EC2 executando em um Auto Scaling Group, desde que estejam na mesma AZ

Serviços que o ASG estão incluídos

  • Amazon EC2 (known as Amazon EC2 Auto Scaling).
  • Amazon ECS.
  • Amazon DynamoDB.
  • Amazon Aurora. Como funciona : O ASG executará três funções principais para automatizar o gerenciamento de frotas para instâncias do EC2:

Monitore a integridade das instâncias em execução

O ASG realiza periodicamente verificações de integridade para identificar quaisquer instâncias corrompidas.

Substitua instâncias comprometidas automaticamente

Quando uma instância comprometida falha em uma verificação de integridade, o ASG a encerra automaticamente e a substitui por uma nova. Essa nova instancia passa a fazer parte do target do ELB

Equilibre a capacidade entre as zonas de disponibilidade

O Auto Scaling do Amazon EC2 pode fazer o rebalanceamento automático de instâncias entre zonas. Ele sempre lança novas instâncias para que elas sejam equilibradas entre as diferentes zonas da maneira mais uniforme possível Obs.: Por Default encerra a AZ que tem maior quantidade para que a carga fique balanceada entre as AZs e a que está mais próxima da próxima hora de cobrança (se nenhuma politica customizada de encerramento for encontrada)

Customizada

Pode ser customizada politicas de encerramento como (OldestInstance, NewestInstance, ClosestToNextInstanceHour etc.)

Tipos de Scaling

  • Scheduled Scaling : Escala conforme agendado
  • Dynamic Scaling : Escala em resposta a carga do sistema

Tipos

Target tracking scaling

Aumenta ou reduz a capacidade atual do grupo com base em um valor de destino para uma métrica específica. Isso é semelhante à forma como o termostato mantém a temperatura da sua casa, ou seja, você seleciona uma temperatura, e o termostato faz o resto.

Step scaling

Aumenta ou reduz a capacidade atual do grupo com base em um conjunto de ajustes de escalabilidade, conhecidos como ajustes em etapas, que variam com base no tamanho da violação do alarme.

Simple scaling

Aumenta ou reduz a capacidade atual do grupo com base em um único ajuste da escalabilidade ex. (se CPU < 40 = Diminui, se CPU > 60% = aumenta).

Preditivo

Um recurso do AWS Auto Scaling usa aprendizado de máquina para agendar o número certo de instâncias EC2 em antecipação às mudanças de tráfego que se aproximam

Proteção contra encerramento

  • Protege uma instancia ou um grupo de instancia de encerrarmento pelo ASG.
  • Ao encerrar um Auto Scaling Group, as instancias associadas a ele também são encerradas.
  • O valor padrão de cooldown é de 300 segundos. É uma definição configurável para o seu grupo Auto Scaling

Target ASG (Health Check)

  • EC2 Instance health status
  • Elastic Load Balancing (ELB) Health Checks
  • Custom Health Checks

Auto Scaling Group Lifecycle Hooks

  • Voce tem habilidade para performar passos extras antes da instancia ir para o inicio do serviço(Status Pending:Wait)
  • Voce tem habilidade para performar passos extras antes da instancia terminar o serviço (Status Terminating:Wait)
  • Um lifeciclye hooks tem até 1hr para efetuar todos os processos
Launch Configuration Tenancy VPC Tenancy = Default VPC Tenancy = Dedicated
Not Especified Shared Tenancy instances Dedicated Instances
Default Shared Tenancy instances Dedicated Instances
Dedicated Dedicated Instances Dedicated Instances

ELB

Cross-Zone Load Balancing

Habilitado

  • Cada balancer vai distribuir através de todas as suas instancias por AZ Desabilitado
  • Requisições são distribuidas em instancias de nó do elastic load Balancer

Application Load Balancer

  • Decisão de roteamento da camada de aplicação (HTTP/HTTPS)
  • Cross - Zone Load Balancing ativado por default, pode ser desabilitado

Round robin

Application Load Balancer usa exclusivamente um algoritmo round-robin para distribuir solicitações recebidas para destinos de back-end. As solicitações seriam distribuídas entre todos os destinos de um grupo de destino de maneira alternada, sem considerar a capacidade ou a utilização.

LOR(Least Outstandig Request)

Para rotear solicitações dentro de um grupo de destino. Com esse algoritmo, à medida que a nova solicitação chega, o load balancer a envia ao destino com o menor número de solicitações pendentes. Os destinos que processam solicitações antigas ou com recursos de processamento mais baixos não são sobrecarregados com mais solicitações e a carga é distribuída igualmente entre os destinos.

Tipos de Roteamento

  • protocol (http e https)
  • hostname
  • port
  • path
  • query

Tipos de Target Group

  • Instance ID
  • Endereço de IP
  • Funções Lambda

Health Check

  • Verificações dos Target Groups registrados para testar seu status. Obs.: ALB não pode usar EC2 based health checks

Network Load Balancer

  • Decisão de roteamento na camada de transporte (TCP, UDP e SSL)
  • Possui endereço de IP estático (suporte à PrivateLink, IP estático por Availability Zone)
  • Cross - Zone Laod Balancing desabilitado por default, pode ser habilitado

Tipos de Roteamento

  • flow hash routing algorithm
  • dynamic host port mapping Obs.: Não tem weidght

Tipos de Target Group

  • Instance ID
  • Endereço de IP
  • ALB
  • Limits
  • Os Network Load Balancer não têm security groups associados. Portanto, os security groups para seus destinos devem usar endereços IP para permitir o tráfego.
  • Não será possível usar os security groups para os clientes como uma origem nos security groups para os destinos. Portanto, os security groups para seus destinos devem usar os endereços IP dos clientes para permitir o tráfego.

Classic Load Balancer

  • Legado, decisação de roteamento na camada de transporte (TCP, UDP e SSL) e na camada de aplicação (HTTP e HTTPS)

Outras características:

  • Feature de acesso aos logs são opcionais e vem desabilitado por default, to analyze traffic patterns and troubleshoot
  • ELB São para balancemento de cargas entre AZ'z, para balancemento de carga entre regiões é utilizado o Route 53
  • O Stick Session ou Stickness mantém a sessão de uma determinada requisição para um determinado servidor ativa.
  • Posso redirecionar a minha carga para: Instancias, IP's e Lambdas Functions

Connection Drainning

Para garantir que um Elastic Load Balancer pare de enviar solicitações para instâncias que estão cancelando o registro ou não íntegras enquanto mantém as conexões existentes abertas, use a redução da conexão. Isso permite que o balanceador de carga conclua as solicitações em andamento feitas para instâncias que estão cancelando o registro ou não íntegras. O valor de tempo limite máximo pode ser definido entre 1 e 3.600 segundos (o padrão é 300 segundos). Quando o limite de tempo máximo é atingido, o balanceador de carga fecha à força as conexões com a instância de cancelamento de registro.

Route 53

  • Serviço Universal
  • O Route53 suporta DNSSEC para a proteção de man in the midle attack o DNSSEC é a necessidade de validacao do certificados https
  • No Route 53, você está limitado (por padrão) a cinco solicitações por segundo por conta AWS
  • Diferença entre CNAME e Alias Record

CNAME

Redirecionamento entre DNSs, não utilizado no Zone Apex

Alias Record

Utilizado para direcionamento de domínios, na Zone Apex Nativo Health Check

Zone Apex

Raiz do domínio, ex.: www.minhamarca.com

DNS para uso interno

  • Route 53 tem features de segurança que impede que DNS Interno seja acessado por recursos externos

Tipos de DNS records suportados pelo Route53 usado pelo Alias Record

  • A (address record)
  • AAAA (IPv6 address record)
  • CNAME (canonical name record)
  • CAA (certification authority authorization)
  • MX (mail exchange record)
  • NAPTR (name authority pointer record)
  • NS (name server record)
  • PTR (pointer record)
  • SOA (start of authority record)
  • SPF (sender policy framework)
  • SRV (service locator)
  • TXT (text record)

CNAME drawio

Configuração de Multi Regions

  • Ativo-Ativo Mantém todas as regiões ativas ao mesmo tempo, e não é possível ter recursos primários e secundários

  • Ativo-Passivo Mantém uma região ativas e demais em stand by, nesse caso é possível utilizar recursos primários e secundários.

Ativo-Passivo (Com um recurso primario e um secundário)

  • Para criar uma configuração de failover ativo-passivo com um registro primário e um secundário, basta criar os registros e especificar uma política de roteamento de Failover. Quando o recurso primário está Health, o Route 53 responde às consultas DNS usando o registro primário. Quando o recurso primário não está íntegro, o Route 53 responde às consultas DNS usando o registro secundário.

Ativo-Passivo (Com multiplos recurso primarios e secundários)

  • Você também pode associar vários recursos ao registro primário, ao registro secundário ou a ambos. Nessa configuração, o Route 53 considera o registro de failover primário como Health, desde que pelo menos um dos recursos associados esteja Health.

Como o Amazon Route 53 escolhe registros quando a verificação de HealthCheck é configurada

  • O Route 53 usa os seguintes critérios ao escolher um registro:
    • Endpoint não AWS, aplica-se uma cobrança adicional. As cobranças por um HealthCheck são aplicadas mesmo quando a verificação de HealthCheck está desativada.
    • Registros sem verificação de HealthCheck são sempre considerados Health
    • Se você especificar o endpoint por nome de domínio, o Route 53 usará apenas IPv4 para enviar verificações de Health Check ao endpoint.
    • Se nenhum registro estiver Health, todos os registros serão considerados Health
    • Registros ponderados com peso 0 (Se você adicionar verificações de integridade a todos os registros em um grupo de registros ponderados, mas atribuir pesos diferentes de zero a alguns registros e pesos zero a outros, as verificações de integridade funcionarão da mesma forma que quando todos os registros têm pesos diferentes de zero, com as seguintes exceções:
      • O Route 53 considera inicialmente apenas os registros com peso diferente de zero, se houver.
      • Se todos os registros com peso maior que 0 não estiverem íntegros, o Route 53 considerará os registros com peso zero.)
    • Registros de alias (Você também pode configurar a verificação de integridade para registros de alias definindo Avaliar integridade do destino como Sim para cada registro de alias. Isso faz com que o Route 53 avalie a integridade do recurso para o qual o registro roteia o tráfego para, por exemplo, um balanceador de carga ELB ou outro registro na mesma zona hospedada.)
    • Registros de failover (Os registros de failover geralmente funcionam da mesma maneira que outros tipos de roteamento. Você cria verificações de integridade e as associa a registros sem alias e define Avaliar integridade do destino como Sim para registros de alias. Observe o seguinte:
      • Os registros primário e secundário podem ser um registro sem alias ou um registro de alias.
      • Se você associar verificações de integridade aos registros de failover primário e secundário, veja como o Route 53 responde às solicitações:
      • Se o Route 53 considerar o registro primário íntegro (se o endpoint de verificação de integridade estiver íntegro), o Route 53 retornará apenas o registro primário em resposta a uma consulta DNS.
      • Se o Route 53 considerar o registro primário não íntegro e o registro secundário íntegro, o Route 53 retornará o registro secundário.
      • Se o Route 53 considerar os registros primário e secundário não íntegros, o Route 53 retornará o registro primário.
      • Ao configurar o registro secundário, adicionar uma verificação de integridade é opcional. Se você omitir a verificação de integridade do registro secundário e se o endpoint de verificação de integridade do registro primário não estiver íntegro, o Route 53 sempre responderá às consultas DNS usando o registro secundário. Isso é verdade mesmo se o registro secundário não estiver íntegro.)

Políticas de DR - Route53

Hosted Zone

Hosted zone é um contêiner para registros, e os registros contêm informações sobre como você deseja rotear o tráfego para um domínio específico, como example.com e seus subdomínios (acme.example.com, zenith.example.com). Uma hosted zone e o domínio correspondente têm o mesmo nome. Existem dois tipos de hosted zone:

Public Hosted Zone

  • Contêm registros que especificam como você deseja rotear o tráfego na Internet.

Privated Hosted Zone

  • Contêm registros que especificam como você deseja rotear o tráfego em um Amazon VPC. Obs.: Habilitada por default quando utilizado VPC interface endpointSecret Manager

DNS RESOLVER

O console do Route 53 Resolver inclui um assistente que orienta você durante as etapas a seguir para começar a usar o Resolver: Crie endpoints: de entrada, de saída ou ambos. Para endpoints de saída, crie uma ou mais regras de encaminhamento, que especificam os nomes de domínio para os quais você deseja rotear consultas de DNS para sua rede. Se você criou um endpoint de saída, escolha a VPC com a qual deseja associar as regras.

Resolver consultas de DNS entre VPCs e sua rede On Premises

  • Endpoint de entrada : os resolvedores de DNS em sua rede on premise podem encaminhar consultas de DNS para o Route 53 Resolver, por meio desse endpoint. Isso permite que os resolvedores de DNS resolvam facilmente os nomes de domínio para recursos da AWS, como instâncias do EC2 ou registros em uma zona hospedada privada do Route 53 DNS Resolver - Endpoint de Entrada

  • Endpoint de saída : o Resolver encaminha condicionalmente consultas para resolvedores em sua rede por meio desse endpoint. Para encaminhar consultas selecionadas, crie regras do Resolver que especificam os nomes de domínio para as consultas de DNS que você quer encaminhar (como example.com) e os endereços IP dos resolvedores de DNS da sua rede on premise para os quais você quer encaminhar as consultas. Se uma consulta corresponder a várias regras (example.com, acme.example.com), o Resolver escolherá a regra com a correspondência mais específica (acme.example.com) e encaminhará a consulta aos endereços IP especificados nessa regra. DNS Resolver - Endpoint de Saída.

Forwarding rules

Se você quiser que o Resolvedor encaminhe consultas de nomes de domínio especificados para sua rede, crie uma regra de encaminhamento para cada nome de domínio e especifique o nome do domínio para o qual deseja encaminhar consultas;

Obs.: Você não pode configurar forwarding rule em um inbound resolver.

Tipos de redirecionamento

  • Path Condition Você pode usar a ação de redirect cliente para requisições de uma URL para outra. O componente de path tem um absolute path, iniciando com "/", o componente é case-sensitve, voce pode usar mais 128 caracteres e consiste em caracteres alfanuméricos, wildcards (* e ?), & e seguindo de caracteres especiais como: _-.$/~"'@:+.

  • Host Condition

Voce pode usar host conditions para definir regras que routeiam a requisição baseada em seu hostname e no host header( também conhecido como host-based routing). Isso habilita voce suportar multiplos subdominos e diferentes nives de dominios usando um unico load balancer. Um hostname não é case-sensitive, voce pode ter mais de 128 caracteres de tamanho e pode conter qualquer um dos seguintes caracteres: 1. A–Z, a–z, 0–9 2. - . 3. * (matches 0 or more characters) 4. ? (matches exactly 1 character). Voce deve incluir no final o caracter ".". Voce incluir somente caracteres alfanumericos depois do caracter ".".

Exemplo: example.com, teste.example.com, *.example.com

A regra *.example.com combina com test.example.com mas não comina com example.com. Conseuementement, ná também precisamos incluir ecomm.com junto com *.ecomm.com para incluir todos os hosts servindo a requisição.

FQDN

A Fully Qualified Domain Name (FQDN), as vezes se refere para um nome de dominio absoluto, é um nome de dominio que especifica exatamente qual é o local em que a arvore hierarquica do DNS. Isso especifica todos os niveis de dominio, incluindo o dominio do topo e raiz da zona. O FDN é distinguido pelo falta de ambiguidade em termos de localização da zona DNS na hierarquia dos rótulos DNS: ela pode ser interpretada apenas de uma maneira. O DNS são leituras de direito e esquerdo, entretanto nós precisamos saber iniciar para encontrar para local explicito de um host usando DNS. Usando essa informação nós podemos ver como DNS requisita/pesquisadas (A zona DNS checa) os seguintes processos:

  1. A zona raiz, inicia no topo hierarquico, é representado simplesmente por um full stop(periodo), como um sem nome e sem rotulo. Tipico DNS que irá usar um longo-estabilizada zona de raiz que é coordenado pela IANA (um departamento da ICANN).
  2. Sob a zona raiz está o domínio de primeiro nível (TLD).
  3. Sob estes está um Domínio de Segundo Nível (SLD), que é um subdomínio do TLD acima dele.
  4. Sob estes pode haver um Domínio de Terceiro Nível, ainda outro subdomínio do SLD acima dele.

Cada subdomínio é um domínio filho de cada domínio acima dele (seu domínio pai) e separado por um ponto final. Com o ponto final representando a zona raiz. Devido à falta de um rótulo/nome para esta zona, muitas vezes ela não é representada em muitos softwares, como navegadores da web. Resultando em uma hierarquia DNS terminando com o domínio de nível superior sem ponto final, no entanto, este é na verdade apenas um nome de domínio parcialmente qualificado (PQDN), já que podemos supor com segurança que queremos usar o mesmo, acordado, raiz para interagir com o domínio que queremos (embora existam zonas raiz alternativas).

Devido à distinta falta do ponto final representando a zona raiz. Nos casos em que o FQDN é crítico, como em registros de arquivo/servidor de zona DNS, o caractere ponto final (ponto) é necessário para formar o nome de domínio totalmente qualificado.

DNS_schema svg

Triade de serviços escaláveis

  • ELB
  • CloudWatch
  • AutoScaling Group