kafka内外网访问配置

kafka

kafka里面两种监听配置

  • 内网监听配置
listeners=PLAINTEXT://192.168.0.213:9092

配置完内网可以正常得去消费或者添加kfka数据
如果配置了advertised.listeners就无法正常访问消费

advertised.listeners=PLAINTEXT://101.89.163.1:9092

WARN [Consumer clientId=consumer-console-consumer-94880-1, groupId=console-consumer-94880] Error while fetching metadata with correlation id 2 : {ooxx=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)

因为我的外网通讯虽然注册得zookeeper里面了,但是外网网络无法在kafka 集群机器上来回通讯导致问题,所以这个时候需要切换成内外网分流访问

内外网分流

  • 方法1:
listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
listeners=INTERNAL://192.168.0.213:9092,EXTERNAL://192.168.0.213:19092
advertised.listeners=INTERNAL://192.168.0.213:9092,EXTERNAL://101.89.163.9:19092
inter.broker.listener.name=INTERNAL
  • 方法2:
listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
listeners=INTERNAL://192.168.0.213:9092,EXTERNAL://101.89.163.9:19092
advertised.listeners=INTERNAL://192.168.0.213:9092,EXTERNAL://101.89.163.9:19092
inter.broker.listener.name=INTERNAL

注意这两的区别是listeners的EXTERNAL使用的ip不一样,一个使用内网ip,一个使用外网ip。

  • 如果你的kafka宿主机有外网网卡,只能用外网ip,若使用配置1,kafka通过listeners监听的两个端口都是内网网卡的数据,无法接收到外网网卡数据;
  • 如果你的kafka宿主机外网ip是映射来的,只能使用内网ip,原因也是上面说过的,不存在外网网卡,kafka启动监听就会报错,而使用内网ip有环境配置好的转发,可以接收到外网ip的数据。

在这里配置得 kafka内部访问端口与外部访问端口不能是一致得

参考链接 https://www.cnblogs.com/gentlescholar/p/15179258.html

### 启用Kafka SASL认证 对于Apache Kafka,在内外网络环境下启用SASL认证涉及配置服务器端和客户端设置。由于`kafka-topics.sh`默认不支持SASL认证[^1],因此需要调整相关配置文件来确保安全连接。 #### 服务端配置 为了使Kafka集群能够处理来自外部或内部带有SASL认证请求的数据流,需修改`server.properties`文件中的监听器配置: - **内部环境** 当仅限于局域网内的机器访问时,可以定义如下形式的监听者属性: ```properties listeners=SASL_PLAINTEXT://localhost:9092 listener.security.protocol.map=PLAINTEXT:SASL_PLAINTEXT sasl.enabled.mechanisms=SCRAM-SHA-512 ``` 这段配置指定了使用SASL/PLAINTEXT协议,并允许通过SCRAM-SHA-512机制进行身份验证。 - **外部环境** 针对公网开放的服务,则应采用更严格的安全措施如TLS加密传输层加上SASL认证组合(`SASL_SSL`)。这不仅保护了数据在网络上传输时不被窃听,同时也实现了强效的身份验证过程。 ```properties advertised.listeners=SASL_SSL://your.public.ip.address:9094 listener.name.sasl_ssl.scram-sha-512.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required; security.inter.broker.protocol=SASL_SSL ssl.keystore.location=/path/to/kafka.server.keystore.jks ssl.keystore.password=<keystore-password> ssl.key.password=<key-password> ssl.truststore.location=/path/to/kafka.client.truststore.jks ssl.truststore.password=<truststore-password> ``` 以上参数设置了对外暴露的接口地址以及SSL证书路径等必要信息;同时启用了跨代理间的通信也遵循相同的认证模式。 #### 客户端配置 为了让生产者或消费者能成功连接到已启用SASL认证的Broker上,同样也需要相应地更新其配置项。例如,在创建topic或其他管理操作之前,先指定好合适的JAAS配置文件并加载它。 ```bash export KAFKA_OPTS="-Djava.security.auth.login.config=/path/to/jaas.conf" ./bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test-topic ``` 其中jaas.conf的内容可能类似于这样: ```plaintext KafkaClient { org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="password"; }; ``` 此段声明表明将利用用户名密码对的方式完成登录校验流程。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值