Ir para o conteúdo

Como faço para acessar os agentes do Amazon MSK a partir de portas personalizadas?

5 minuto de leitura
0

Quero acessar os agentes do Amazon Managed Streaming for Apache Kafka (Amazon MSK) a partir de portas personalizadas.

Breve descrição

Para configuração de porta personalizada, é possível alterar as configurações advertised.listerner das suas portas padrão (9092-plaintext/9094-TLS/9096-SASL-SCRAM/9098-IAM) para qualquer porta, incluindo a 443. Essas configurações continuam no Apache ZooKeeper e permanecem inalteradas após a reinicialização do agente.

É possível implementar uma configuração de porta personalizada por meio de uma configuração de uma única porta ou de uma configuração de várias portas. Uma configuração de única porta, por exemplo, a porta 443, exige Network Load Balancers separados para cada agente. Uma configuração de várias portas usa um Network Load Balancer com portas diferentes para cada agente.

A resolução a seguir se concentra em uma abordagem de configuração de única porta.

Importante: atualmente, os clusters baseados no Amazon MSK KRaft não oferecem suporte a modificações dinâmicas nos receptores anunciados. Essa é uma limitação conhecida na implementação KRaft do Apache Kafka e se aplica a todos os clusters baseados em KRaft, incluindo aqueles executados no Amazon MSK. O Amazon MSK oferece suporte ao KRaft nas versões 3.7 e superiores. Para casos de uso que exigem atualizações dinâmicas dos receptores, use clusters baseados no ZooKeeper.

Resolução

Atualize a porta do agente

Para atualizar a porta do agente 1 de 9094 para 443, execute um comando semelhante ao exemplo a seguir na máquina cliente:

./kafka-configs.sh --bootstrap-server b-1.testdns.mswah7.c1.kafka.us-east-1.amazonaws.com:9094 --entity-type
brokers --entity-name 1 --alter --command-config client.properties
--add-config   
advertised.listeners=[CLIENT_SECURE://b-1.testdns.mswah7.c1.kafka.us-east-1.amazonaws.com:443,REPLICATION://b-1-internal.testdns.mswah7.c1.kafka.us-east-1.amazonaws.com:9093,REPLICATION_SECURE://b-1-internal.testdns.mswah7.c1.kafka.us-east-1.amazonaws.com:9095]

Exemplo de saída:

Completed updating config for entity: broker 1

Para atualizar a porta do agente 2 para 443, execute um comando semelhante ao exemplo a seguir na máquina cliente:

./kafka-configs.sh --bootstrap-server b-2.testdns.mswah7.c1.kafka.us-east-1.amazonaws.com:9094 --entity-type
brokers --entity-name 2 --alter --command-config client.properties
--add-config   
advertised.listeners=[CLIENT_SECURE://b-2.testdns.mswah7.c1.kafka.us-east-1.amazonaws.com:443,REPLICATION://b-2-internal.testdns.mswah7.c1.kafka.us-east-1.amazonaws.com:9093,REPLICATION_SECURE://b-2-internal.testdns.mswah7.c1.kafka.us-east-1.amazonaws.com:9095]

Exemplo de saída:

Completed updating config for entity: broker 2

Práticas recomendadas

Revise as seguintes práticas recomendadas:

  • Você deve executar os comandos anteriores para cada agente separadamente da mesma máquina cliente. Essa atualização de configuração não exige a reinicialização do agente.
  • Ao modificar os valores de REPLICATION e REPLICATION_SECURE, certifique-se de adicionar -internal ao nome do agente.
  • Não substitua as portas 9093 e 9095 nos comandos anteriores.
  • Use os valores corretos no campo cliente ao atualizar a configuração da porta do agente.
    Por exemplo, para TLS - CLIENT_SECURE, use [CLIENT_SECURE://b-1.testdns.mswah7.c1.kafka.us-east-1.amazonaws.com:443].
    Para SASL - CLIENT_SASL_SCRAM, use [CLIENT_SASL_SCRAM://b-1.testdns.mswah7.c1.kafka.us-east-1.amazonaws.com:443].
    Para IAM - CLIENT_IAM, use [CLIENT_IAM://b-1.testdns.mswah7.c1.kafka.us-east-1.amazonaws.com:443].

Para verificar a configuração atual do receptor do agente, conclua as seguintes etapas:

  1. Para iniciar o shell do Apache ZooKeeper, execute o seguinte comando:

    ./zookeeper-shell.sh ZooKeeper_connection_string
  2. Para listar as informações de configuração para o agente 1, execute o seguinte comando:

    get /brokers/ids/1

    Exemplo de saída:

    {
        "listener_security_protocol_map": {
            "REPLICATION_SECURE": "SSL",
            "CLIENT_SASL_SCRAM": "SASL_SSL",
            "REPLICATION": "PLAINTEXT",
            "CLIENT": "PLAINTEXT",
            "CLIENT_SECURE": "SSL"
        },
        "endpoints": [
            "CLIENT://b-1.testdns.xx.c14.kafka.us-east-1.amazonaws.com:9092",
            "CLIENT_SASL_SCRAM://b-1.dns.691zg3.c14.kafka.us-east-1.amazonaws.com:9096",
            "CLIENT_SECURE://b-1.testdns.xx.c14.kafka.us-east-1.amazonaws.com:9094",
            "REPLICATION://b-1-internal.testdns.xx.c14.kafka.us-east-1.amazonaws.com:9093",
            "REPLICATION_SECURE://b-1-internal.testdns.xx.c14.kafka.us-east-1.amazonaws.com:9095"
        ],
        "rack": "use1-az2",
        "jmx_port": 9099,
        "port": 9092,
        "host": "b-1.testdns.xx.c14.kafka.us-east-1.amazonaws.com",
        "version": 4,
        "timestamp": "1645081828199"
    }

Crie dois grupos de destino

Crie dois grupos de destino na mesma Amazon Virtual Private Cloud (Amazon VPC) do seu cluster do Amazon MSK com os seguintes valores:

  • Em tipo de destino, use ip.
  • Em Protocolo, use TCP.
  • Em Porta, use 9094.

Em seguida, use o endereço IP do agente para registrar o agente do Amazon MSK no respectivo grupo de destino.

Para obter o endereço IP do agente, execute um comando semelhante ao exemplo a seguir:

Agente 1

dig +short b-1.testdns.mswah7.c1.kafka.us-east-1.amazonaws.com

Exemplo de saída:

10.0.3.##

Agente 2

dig +short b-2.testdns.mswah7.c1.kafka.us-east-1.amazonaws.com

Exemplo de saída:

10.0.4.##

Crie dois Network Load Balancers

Crie dois Network Load Balancers com as seguintes configurações:

  • Em Receptores, modifique a porta para apontar para a porta 443 anunciada pelo agente.
  • Em Ação padrão, selecione o respectivo grupo de destino para encaminhar o tráfego.
  • Em Mapeamentos, certifique-se de selecionar as sub-redes nas quais existem os agentes do Amazon MSK.

Certifique-se de ativar o balanceamento de carga entre zonas para os Network Load Balancers que você criou.

Crie uma zona hospedada privada do Amazon Route 53

Crie uma zona hospedada privada do Amazon Route 53 com os seguintes valores:

  • Em Nome de domínio, insira o nome de domínio da string do seu agente. Por exemplo, kafka.us-east-1.amazonaws.com.
  • Em ID da VPC, insira a ID da VPC dos clientes.

Crie dois registros de alias do tipo A

Para evitar quaisquer falhas no handshake do TLS, crie dois registros de alias do tipo A com nomes de registro idênticos aos respectivos nomes de DNS dos agentes.

Certifique-se de que as regras de entrada do grupo de segurança do cluster permitam tráfego do endereço IP dos Network Load Balancers para a porta 9094.

Depois de executar todas as etapas anteriores, conecte-se à porta 443 anunciada pelo agente.

Observação: essa solução funciona para todos os tipos de métodos de controle de acesso que você ativou para clusters do Amazon MSK.

Informações relacionadas

How Goldman Sachs builds cross-account connectivity to their Amazon MSK clusters with AWS PrivateLink (Como a Goldman Sachs cria conectividade entre contas com seus clusters do Amazon MSK com o AWS PrivateLink)

Configurações personalizadas do Amazon MSK

Configure a custom domain name for your Amazon MSK cluster (Configure um nome de domínio personalizado para seu cluster do Amazon MSK)

Establishing Multi-tenant, Custom Domain-based Secure Connectivity to Amazon MSK through a Kafka Proxy (Estabelecimento de uma conectividade segura multilocatária baseada em domínio personalizado com o Amazon MSK por meio de um proxy Kafka)

Consuming private Amazon API Gateway APIs using mutual TLS (Consumindo APIs privadas do Amazon API Gateway usando TLS mútuo)

AWS OFICIALAtualizada há 2 meses