Acesso de uma instância do Kafka sem SASL
Esta seção descreve como usar um cliente de Kafka de código aberto para acessar uma instância do Kafka se o acesso SASL não estiver habilitado para a instância. Há dois cenários. Para acesso entre VPCs, consulte Acesso entre VPCs a uma instância do Kafka. Para acesso baseado em DNAT, consulte Uso de DNAT para acessar uma instância do Kafka.
Para obter detalhes sobre como usar clientes de Kafka em diferentes idiomas, visite https://cwiki.apache.org/confluence/display/KAFKA/Clients.
- A seguir, descrevemos o procedimento para acessar uma instância do Kafka usando a CLI. Para acessar uma instância no código de serviço, consulte o Guia de desenvolvedor.
- Para instâncias compradas em julho de 2020 e posteriormente, cada broker de Kafka permite no máximo 1.000 conexões de cada endereço IP por padrão. Para instâncias compradas antes de julho de 2020, cada broker de Kafka permite no máximo 200 conexões de cada endereço IP por padrão. O excesso de conexões será rejeitado. Você pode alterar o limite referindo-se a Modificação de parâmetros do Kafka.
Pré-requisitos
- As regras do grupo de segurança foram configuradas corretamente.
Para acessar uma instância do Kafka com SASL desabilitada, configure as regras do grupo de segurança corretas. Para obter detalhes sobre os requisitos de configuração do grupo de segurança, consulte Tabela 2.
- O endereço de conexão da instância foi obtido.
- Para acesso dentro da VPC, use a porta 9092. Obtenha o endereço de conexão da instância na seção Connection da página de guia Basic Information.
Figura 1 Kafka instance connection addresses for intra-VPC access without SASL (in regions except CN North-Beijing4, CN East-Shanghai1, and CN South-Guangzhou)
Figura 2 Endereços de conexão de instância do Kafka para acesso dentro da VPC sem SASL (nas regiões CN North-Beijing4, CN East-Shanghai1 e CN South-Guangzhou)
- Para acesso público, use a porta 9094. Obtenha o endereço de conexão da instância na seção Connection da página de guia Basic Information.
Figura 3 Endereços de conexão de instância do Kafka para acesso público sem SASL (nas regiões exceto CN North-Beijing4, CN East-Shanghai1 e CN South-Guangzhou)
Figura 4 Endereços de conexão de instância do Kafka para acesso público sem SASL (nas regiões CN North-Beijing4, CN East-Shanghai1 e CN South-Guangzhou)
- Para acesso dentro da VPC, use a porta 9092. Obtenha o endereço de conexão da instância na seção Connection da página de guia Basic Information.
- Se a criação automática de tópicos não estiver ativada para a instância de Kafka, crie um tópico antes de se conectar à instância.
- CLI do Kafka v1.1.0, v2.3.0 ou v2.7.2 está disponível. Certifique-se de que a instância do Kafka e a CLI sejam da mesma versão.
- Foi criado um ECS. Para acesso dentro da VPC, certifique-se de que as configurações de VPC, sub-rede e grupo de segurança sejam as mesmas da instância do Kafka. JDK v1.8.111 ou posterior foi instalado no ECS, e as variáveis de ambiente JAVA_HOME e PATH foram configuradas da seguinte forma:
Adicione as seguintes linhas ao arquivo .bash_profile no diretório base como um usuário autorizado. Neste comando, /opt/java/jdk1.8.0_151 é o caminho de instalação do JDK. Altere-o para o caminho onde você instala o JDK.
export JAVA_HOME=/opt/java/jdk1.8.0_151 export PATH=$JAVA_HOME/bin:$PATH
Execute o comando source .bash_profile para que a modificação tenha efeito.
Acesso da instância usando a CLI
O seguinte usa o Linux como exemplo.
- Descompacte o pacote da CLI do Kafka.
Acesse o diretório onde o pacote da CLI está armazenado e execute o seguinte comando para descompactar o pacote:
tar -zxf [kafka_tar]
No comando anterior, [kafka_tar] indica o nome do pacote da CLI.
Por exemplo:
tar -zxf kafka_2.12-2.7.2.tgz
- Acesse o diretório /bin da CLI do Kafka.
No Windows, você precisa acessar o diretório /bin/windows.
- Execute o seguinte comando para criar mensagens:
./kafka-console-producer.sh --broker-list ${connection-address} --topic ${topic-name}
Descrição do parâmetro:
- {connection-address}: o endereço obtido em Pré-requisitos. Para acesso público, use Instance Address (Public Network)/Address (Public Network, Plaintext). Para acesso dentro da VPC, use Instance Address (Private Network)/Address (Private Network, Plaintext).
- {topic-name}: the name of the topic created for the Kafka instance. If automatic topic creation has enabled for the Kafka instance, set this parameter to the name of a created topic or a topic that has not been created.
O exemplo a seguir usa endereços de conexão 10.3.196.45:9094,10.78.42.127:9094,10.4.49.103:9094. Depois de executar o comando anterior, você pode enviar uma mensagem para a instância do Kafka escrevendo-a e pressionando Enter. Cada linha de conteúdo é enviada como uma mensagem.
[root@ecs-kafka bin]# ./kafka-console-producer.sh --broker-list 10.3.196.45:9094,10.78.42.127:9094,10.4.49.103:9094 --topic topic-demo >Hello >DMS >Kafka! >^C[root@ecs-kafka bin]#
Para parar de criar mensagens, pressione Ctrl+C para sair.
- Execute o seguinte comando para recuperar mensagens:
./kafka-console-consumer.sh --bootstrap-server ${connection-address} --topic ${topic-name} --group ${consumer-group-name} --from-beginning
Descrição do parâmetro:
- {connection-address}: the address obtained in Prerequisites. Para acesso público, use Instance Address (Public Network)/Address (Public Network, Plaintext). Para acesso dentro da VPC, use Instance Address (Private Network)/Address (Private Network, Plaintext).
- {topic-name}: the name of the topic created for the Kafka instance
- {consumer-group-name}: the consumer group name set based on your service requirements. If a consumer group name has been specified in the configuration file, ensure that you use the same name in the command line. Otherwise, consumption may fail. If a consumer group name starts with a special character, such as a number sign (#), the monitoring data cannot be displayed.
Example:
[root@ecs-kafka bin]# ./kafka-console-consumer.sh --bootstrap-server 10.3.196.45:9094,10.78.42.127:9094,10.4.49.103:9094 --topic topic-demo --group order-test --from-beginning Kafka! DMS Hello ^CProcessed a total of 3 messages [root@ecs-kafka bin]#
To stop retrieving messages, press Ctrl+C to exit.