本文介绍通过 SASL_SSL 接入点连接 Kafka 实例,进行消息生产和消息消费的操作步骤。
消息队列 Kafka版通过 SASL_SSL 接入点提供多重安全保障的访问方式,选择该接入点连接实例时,数据需要通过 SASL_PLAIN 协议鉴权与 SSL 证书认证。
使用 SASL_SSL 接入点连接 Kafka 实例,会通过 SSL 证书对消息进行鉴权和加密,建议您为 Kafka 实例开通公网访问,使用公网访问地址连接实例。
目前私网访问 Kafka 实例无法通过证书校验,会提示类似certificate verify failed
的报错信息。
私网访问 Kafka 实例,实际是使用 IP 进行业务访问,而 IP 是一个可变的地址,无法在证书里面固定配置。如果您确认要在私网环境通过 SASL_SSL 接入点连接 Kafka 实例,请在客户端添加ssl.endpoint.identification.algorithm=
配置,以跳过证书域名校验。
在 Kafka 客户端包的 ./config
目录中,修改 consumer.properties
和 producer.properties
文件。 请根据 SASL 机制类型,分别在文件中增加以下内容:
注意
使用 SASL_SSL 接入点连接 Kafka 实例,建议您为 Kafka 实例开通公网访问,使用公网访问地址连接实例。
如果您使用私网地址连接实例,除以下需要增加的内容外,还需要额外增加ssl.endpoint.identification.algorithm=
配置,以跳过证书域名校验。
使用 PLAIN 机制时:
在 consumer.properties
和 producer.properties
文件中增加以下内容。其中 username
和 password
须填写 PLAIN 用户的用户名和密码。
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="{$plainusername}" password="{$plainpwxxx}"; sasl.mechanism=PLAIN security.protocol=SASL_SSL
使用 SCRAM-SHA-256 机制时:
在 consumer.properties
和 producer.properties
文件中增加以下内容。其中 username
和 password
须填写 SCRAM 用户的用户名和密码。
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="{$scramusername}" password="{$scrampw}"; sasl.mechanism=SCRAM-SHA-256 security.protocol=SASL_SSL
各字段说明如下,详细的配置文件说明请参考配置文件。
字段 | 说明 |
---|---|
username | SASL 用户名。
|
password | SASL用户密码。
|
security.protocol | 协议名称。此处应指定为 SASL_SSL。 |
ssl.endpoint.identification.algorithm | 可选参数。 |
解压 Kafka 客户端文件。
在 ./bin
目录下,打开终端。
执行以下命令启动生产者,开始生产消息。
bash kafka-console-producer.sh --broker-list ${SASL_SSL接入点} --topic ${Topic名称} --producer.config ../config/producer.properties
参数 | 说明 |
---|---|
SASL_SSL 接入点 | 控制台实例详情页面获取的 SASL_SSL 接入点的域名和端口号。 |
Topic 名称 | Kafka 实例的 Topic 名称。 |
输入需要生产的消息内容,按回车键发送此消息到 Kafka 实例。 光标下输入的每一行内容都将封装到消息中发送到 Kafka 实例。如需停止生产,可以使用 Ctrl+C 命令退出消息生产。
[root@kafkaecs bin]# bash kafka-console-producer.sh --broker-list kafka-cnngc7an0qp****.kafka.volces.com:9493 --topic mytopic --producer.config ../config/producer.properties >Hello world! >This is a Kafka message! >^C[root@kafkaecs bin]#
打开另一个终端,执行如下命令消费消息。
如需停止消费,可以使用 Ctrl+C 命令退出消息消费。
bash kafka-console-consumer.sh --bootstrap-server ${SASL_SSL接入点} --topic ${Topic名称} --group ${消费组名称} --from-beginning --consumer.config ../config/consumer.properties
参数 | 说明 |
---|---|
SASL_SSL 接入点 | 控制台实例详情页面获取的 SASL_SSL 接入点的域名和端口号。 |
Topic名称 | Kafka 实例的 Topic 名称。 |
消费组名称 | 自定义的消费组名称。 |
成功操作后,消费者可以收到生产者发送的消息,内容与生产端的消息相同。
[root@kafka bin]# bash kafka-console-consumer.sh --bootstrap-server kafka-cnngc7an0qpv****.kafka.volces.com:9493 --topic mytopic --group grouptest --from-beginning --consumer.config ../config/consumer.properties Hello world! This is a Kafka message! ^CProcessed a total of 2 messages [root@kafka bin]#