O blog da AWS

Dimensione tráfego usando múltiplos Interface Endpoints

Por Pratik R. Mankad, Arquiteto de Soluções
O AWS PrivateLink é um serviço de rede usado para se conectar aos serviços da AWS, seus serviços internos e serviços de Software como um serviço (SaaS) de terceiros – tudo por meio da rede segura e escalonável da AWS.

O AWS PrivateLink tem dois lados:

  1. Prestador de serviço: responsável por oferecer o serviço. O provedor de serviços cria um Amazon Virtual Private Cloud (VPC) Endpoint Service (service) usando o Network Load Balancer (NLB).
  2. Consumidor de serviço: Consome um ou mais serviços oferecidos pelo provedor de serviços. Para consumir o serviço, o consumidor cria uma interface VPC endpoint (endpoint) usando o nome do serviço fornecido pelo provedor de serviços.

 

Desafio:

A segurança combinada com a simplicidade tornou o AWS PrivateLink um mecanismo de referência para o consumo seguro de serviços. Ele conecta serviços em diferentes contas e Amazon VPCs, sem a necessidade de regras de firewall, definições de caminho ou tabelas de rota. Não há necessidade de configurar um gateway de Internet, conexão de VPC peering ou gerenciar VPC Classless Inter-Domain Routing (CIDRs).

Dito isso, de acordo com a interface endpoint properties and limitations,, cada terminal de interface atualmente oferece suporte a uma largura de banda de até 10 Gbps por Zona de Disponibilidade (AZ) e bursts de até 40 Gbps por AZ. Para casos de uso em que você precisa de um rendimento mais alto, como conectar-se a serviços como Amazon Kinesis Data Streams, pode ser necessário um rendimento sustentado de mais de 10 Gbps por Zona de Disponibilidade (AZ).

Neste blog, demonstrarei uma solução para oferecer suporte a requisitos de largura de banda mais elevados ao consumir um serviço no AWS PrivateLink.

 

Visão geral da solução:

Esta solução é baseada em endpoints de interface de escalonamento horizontal, criando vários endpoints para o mesmo serviço. Ele usa o Amazon Route 53 – um serviço da web de Domain Name System (DNS) em nuvem altamente disponível e escalonável – para distribuir o tráfego entre esses vários endpoints.

 

Fluxo de trabalho de alto nível:

No fluxo de trabalho a seguir (Figura 1), estou usando o Kinesis Data Streams como um serviço de exemplo.

Scale traffic using multiple vpce Figure 1Figura 1: VPC Endpoints da interface com escala horizontal. Esta figura descreve o fluxo de trabalho de alto nível.

  • Etapa 1: para um determinado serviço, crie dois (ou mais) interface endpoints com seu atributo DNS privado (PrivateDnsEnabled) definido como falso. Isso é mostrado na Figura 2.
Scale traffic using multiple vpce Figure 2Figura 2: criar endpoints. Esta figura mostra como criar um endpoint de interface.

o Etapa 2: (2b) – Associar o PHZ ao VPC do consumidor.

Scale traffic using multiple vpce Figure 3Figura 3: Crie uma zona hospedada privada. Esta figura mostra como criar uma zona hospedada privada Route 53.

Etapa 3: Para o PHZ criado na Etapa 2, crie weighted ALIAS A records apontando para nomes DNS regionais dos pontos de extremidade da interface criados na Etapa 1.

Um exemplo, mostrado na Figura 4: Create Weighted ALIAS A Records, foi criado dois ‘alias para registros de VPC endpoint’ de modo que o tráfego seja distribuído igualmente entre esses dois registros. Isso permite que você distribua o tráfego entre dois pontos de extremidade de interface e, por sua vez, obtenha a taxa de transferência sustentada desejada.

Observação: certifique-se de que Avaliar integridade do destino esteja habilitado (alternado para Sim).

Scale traffic using multiple vpce Figure 4Figura 4: Criar Weighted ALIAS A Records. Esta figura mostra como criar weighted record .

 

Considerações:

  • Para projetar uma arquitetura escalonável, você deve ter um bom entendimento dos requisitos de tráfego – capacidade total necessária e como ela está sendo dispersa / consumida.
  • AWS PrivateLink managed Private DNS não funciona com vários endpoints. Você deve criar sua própria zona hospedada privada para usar DNS privado com vários pontos de extremidade, seguindo as etapas mencionadas em Fluxo de trabalho de alto nível.
  • À medida que o tráfego aumenta no lado do consumidor, o serviço de endpoint VPC no lado do provedor de serviços também deve ser escalonado.
    • Para serviços pertencentes e operados pela AWS, a AWS gerência a configuração do provedor de serviços.
    • Para serviços de propriedade e operados por parceiro / fornecedor independente de software (ISV), o parceiro / ISV gerência a configuração do provedor de serviços.
    • Para serviços compartilhados que você possui e opera, você será responsável por gerenciar e, por sua vez, dimensionar a configuração do provedor de serviços.

 

Monitoramento:

O monitoramento do consumo dos terminais da interface permite que você amplie ou reduza para atender aos seus requisitos de negócios. Você pode usar VPC Flow Logs para monitorar a utilização da interface endpoint elastic network interface (ENI).

Aqui estão as etapas para configurar o monitoramento do endpoint da interface:

  • Etapa 1: Configurar logs de fluxo para cada ENI de endpoint de interface que deve ser monitorado. O intervalo de agregação de um minuto é recomendado para melhor granularidade. O destino deve ser Amazon CloudWatch Logs, e escolher o grupo de logs desejado e a função IAM. O formato personalizado é necessário com pelo menos os seguintes campos (você pode selecionar mais campos para visualizar metadados adicionais, se necessário):
    • interface-id
    • packets
    • bytes
    • tcp-flags.

As Figuras 5a e 5b mostram como configurar um VPC Flow Log para um ENI.

Scale traffic using multiple vpce Figure 5aFigura 5a: criar registros de fluxo de VPC para VPC Endpoint ENI.

Scale traffic using multiple vpce Figure 5bFigura 5b: criar registros de fluxo de VPC para VPC Endpoint ENI.

  • Etapa 2: usando os insights do CloudWatch para cada ENI, crie as seguintes consultas. Certifique-se de usar o formato de análise correto no caso de campos extras serem incluídos nos logs de fluxo.

As capturas de tela a seguir (Figuras 6, 7 e 8) mostram como isso fica quando o texto da consulta é adicionado no console.

Bits/s Query:

fields @ingestionTime, @message, @timestamp, @logStream
| parse @message "* * * *" as interface, packets, bytes, tcpflags
| filter interface="eni-0dfebe5f446e64a66"-- REPLACE WITH YOUR VPC ENDPOINT ENI ID| stats sum(bytes)*8/60 as avg_bps by bin(1m) as time
| sort time desc
Bash
Scale traffic using multiple vpce Figure 6

Figure 6: Criar Bits/s Query. Esta figura mostra como criar uma consulta de bits / s personalizados.

Packets/s Query:

fields @ingestionTime, @message, @timestamp, @logStream
| parse @message "* * * *" as bytes, interface, packets, tcpflags
| filter interface="eni-0dfebe5f446e64a66"-- REPLACE WITH YOUR VPC ENDPOINT ENI ID| stats sum(packets)/60 as avg_pps by bin(1m) as time
| sort time desc
Bash
Scale traffic using multiple vpce Figure 7Figura 7: Criar Packets/s Query.

New Connections/s Query:

fields @ingestionTime, @message, @timestamp, @logStream
| parse @message "* * * *" as interface, packets, bytes, tcpflags
| filter interface="eni-0dfebe5f446e64a66" and tcpflags=2-- REPLACE WITH YOUR VPC ENDPOINT ENI ID| stats sum(packets)/60 as cps by bin(1m) as time, interface
| sort time desc
Bash
Scale traffic using multiple vpce Figure 8Figura 8: Criar Connections/s Query.

  • Etapa 3: Adicionar as consultas ao painel do CloudWatch. Isso é mostrado nas seguintes capturas de tela (Figuras 9a e 9b).
Scale traffic using multiple vpce Figure 9a

Figura 9a: Adicionar consulta de bits / s ao painel.

Scale traffic using multiple vpce Figure 9bFigura 9b: Adicionar consulta ao painel.

Repita para adicionar cada consulta / percepção ao painel. A captura de tela a seguir (Figura 10) mostra um painel CloudWatch completo.

Scale traffic using multiple vpce Figure 10Figura 10: Painel de métricas de ENI de endpoint de VPC de amostra.

  • Etapa 4: Repita as etapas para cada ENI que deve ser monitorado. Certifique-se de ajustar o nome do gráfico e ENI ID nas consultas.

 

Limpeza:

Para limpar o seu ambiente e garantir que você não incorra em cobranças indesejadas, exclua os pontos de extremidade da interface, a zona hospedada privada e quaisquer outros recursos relacionados que você possa ter criado enquanto acessava este blog.

 

Conclusão:

AWS PrivateLink é um serviço de rede que permite que você se conecte a serviços AWS, a serviços compartilhados de propriedade do cliente em outros VPCs ou a serviços SaaS de terceiros, de forma privada e segura pela rede AWS. Neste blog, mostrei como você pode alcançar largura de banda sustentada de mais de 10 Gbps / AZ criando vários endpoints de interface e usando o Amazon Route 53 para distribuir o tráfego entre esses endpoints. Também ilustrei como monitorar o endpoint da interface ENI usando registros de fluxo de VPC.

 

Pratik Mankad Headshot1.jpgPratik R. Mankad

Pratik é arquiteto de soluções na AWS com formação em engenharia de rede. Ele é apaixonado por tecnologias de rede e adora inovar para ajudar a resolver os problemas dos clientes. Ele gosta de arquitetar soluções e fornecer orientação técnica para ajudar clientes e parceiros a alcançar seus objetivos de negócios.