AWS MSK的连接

kafka客户端需要Java依赖,所以先安装Java11,

bash 复制代码
sudo yum install java-11

https://docs.aws.amazon.com/zh_cn/msk/latest/developerguide/port-info.html

匿名连接

bash 复制代码
# 匿名使用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

复制代码
cp aws-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=AWS_MSK_IAM 
sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required; 
sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandler

要使用您为 AWS 凭证创建的命名配置文件,请将 awsProfileName="`your profile name`"

https://docs.aws.amazon.com/zh_cn/msk/latest/developerguide/iam-access-control.html

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

公有访问

  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

https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Authorization+Command+Line+Interface

多VPC连接

待测试

相关推荐
AKAMAI2 小时前
Akamai Cloud Pulse 审计日志现已全面开放使用
人工智能·云计算
workflower6 小时前
智能无人机成低空经济核心赛道
运维·人工智能·机器学习·机器人·云计算·无人机
tech讯息8 小时前
商业化内容生产适用企业级视频生成模型云平台推荐|从模型生成至审核分发全链路 AWS 选型方案
人工智能·音视频·aws
海兰9 小时前
【AI工具】腾讯云开源自研 AI 助手 Octop介绍及安装使用指南
人工智能·云计算·腾讯云
头茬韭菜1 天前
第 10 篇:「Fluss 实战案例集」—— 完整解决方案与最佳实践
c#·linq·fluss
天疆说1 天前
02 API 鉴权与腾讯云公网桥接:把局域网模型服务安全地挂到域名上
安全·云计算·腾讯云
张3蜂2 天前
ALB、NLB、GWLB、CLB怎么选?
阿里云·云计算
SaaS_Product2 天前
在线文件收集工具推荐?几种常见的批量文件收集方法
人工智能·云计算·saas·onedrive
怪奇云呼军2 天前
G.711、Opus 和重采样会拖慢识别吗?闪电智能VoiceAgent 的音频入口怎么选
java·人工智能·python·算法·云计算·音视频
workflower2 天前
例二:某汽车制造企业深度融合AI智能体,构建园区网络的智能运维体系
人工智能·机器学习·设计模式·机器人·云计算·汽车·制造