连接 MSK

Java
技领云博主
0
0
> 文章作者:亚马逊云科技加油站/罗技123 kafka 客户端需要 Java 依赖,所以先安装 Java11, ``` sudo yum install java-11 ``` https://docs.aws.amazon.com/zh_cn/msk/latest/developerguide/port-info.html?trk=cndc-detail ### 匿名连接 ``` # 匿名使用9092端口 BootstrapServerString=b-2.xxxx.kafka.cn-north-1.amazonaws.com.cn:9092,b-1.xxxx.c4.kafka.cn-north-1.amazonaws.com.cn:9092 # 创建 topic ./kafka-topics.sh --create --bootstrap-server $BootstrapServerString --replication-factor 2 --partitions 1 --topic MSKTutorialTopic # 生产者 ./kafka-console-producer.sh --broker-list $BootstrapServerString --topic MSKTutorialTopic # 消费者 ./kafka-console-consumer.sh --bootstrap-server $BootstrapServerString --topic MSKTutorialTopic --from-beginning ``` ### TLS 匿名 TLS 传输和 mTLS 认证都使用 9094 端口。 匿名 TLS 和匿名纯文本只能二选一 client_tls.properties ``` security.protocol=SSL ``` ``` ./kafka-console-producer.sh --broker-list $BootstrapServerString --topic MSKTutorialTopic --producer.config client_tls.properties ./kafka-console-consumer.sh --bootstrap-server $BootstrapServerString --topic MSKTutorialTopic --from-beginning --from-beginning --consumer.config client_tls.properties ``` 中国区目前不支持 TLS 双向认证。 ### IAM 连接 IAM 认证是 Amazon 自己加的功能,所以需要下载额外的包,<https://github.com/aws/aws-msk-iam-auth?trk=cndc-detail> ``` cp amazon-msk-iam-auth-1.1.1-all.jar kafka_2.13-2.8.1/libs/ ``` IAM 创建 topic 命令: ``` BootstrapServerString=b-1.xxxx.c4.kafka.cn-north-1.amazonaws.com.cn:9098,b- 2.xxxx.c4.kafka.cn-north-1.amazonaws.com.cn:9098 ./kafka-topics.sh --create --bootstrap-server $BootstrapServerString --command-config client.properties --replication-factor 2 --partitions 1 --topic MSKTutorialTopic ``` client.properties ``` security.protocol=SASL_SSL sasl.mechanism=Amazon_MSK_IAM sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required; sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandler ``` 要使用您为亚马逊云科技凭证创建的命名配置文件,请将 ``amazonProfileName="`your profile name`"`` <https://docs.aws.amazon.com/zh_cn/msk/latest/developerguide/iam-access-control.html?trk=cndc-detail> ### SASL 这个需要关联 Secrets Manager,而且 Secrets Manager 必须以 AmazonMSK\_ 开头,多租户的话需要关联多个 Secrets Manager,如果在 Secrets Manage 中修改用户密码,那么需要重新绑定,否则新旧密码都能使用,这显然不符合预期。 创建 users_jaas.conf 文件,这个是用户名密码: ``` KafkaClient { org.apache.kafka.common.security.scram.ScramLoginModule required username="alice" password="alice-secret"; }; ``` 然后导出到环境变量: ``` export KAFKA_OPTS=-Djava.security.auth.login.config=$PWD/users_jaas.conf ``` 配置信息: ``` security.protocol=SASL_SSL sasl.mechanism=SCRAM-SHA-512 ``` 连接: ``` BootstrapBrokerStringSaslScram=b-1.xxxx.c4.kafka.cn-north-1.amazonaws.com.cn:9096,b- 2.xxxx.kafka.cn-north-1.amazonaws.com.cn:9096 [ec2-user@ip-10-0-10-91 bin]$ ./kafka-console-producer.sh --broker-list $BootstrapServerString --topic MSKTutorialTopic --producer.config client_sasl.properties ./kafka-console-consumer.sh --bootstrap-server $BootstrapBrokerStringSaslScram --topic MSKTutorialTopic --from-beginning --consumer.config client_sasl.properties ``` <https://repost.aws/zh-Hans/knowledge-ceneccccvfubhkhugdueicbcbvubnlrgefkkldbeurkjfenter/msk-sasl-scram-issues?trk=cndc-detail> ### 公有访问 1. 集群必须是公有子网 2. 关闭匿名访问 3. 必须开启集群间加密,关闭纯文本连接 4. 如果是 SASL/SCRAM 或者 mTLS,那么需要配置 Apache Kafka ACL(allow\.everyone.if.no.acl.found=false),这时候用其他认证去连接。 kafka ACL:<https://docs.aws.amazon.com/zh_cn/msk/latest/developerguide/msk-acls.html?trk=cndc-detail> <https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Authorization+Command+Line+Interface?trk=cndc-detail> ### 多 VPC 连接 待测试 [![4.png](https://dev-media.amazoncloud.cn/670bae0703374a559285146fc13156cf_4.png "4.png")](https://summit.amazoncloud.cn/2024/register.html?source=DSJAVfG2GS7gEk2Osm6kYXAa+8HnSEVdbCVjkuit7lE= )
0
目录
关闭