apache-kafka - Kafka集群 - 在运行集群上分离内部和外部通信
问题描述
案例是:将客户端和代理复制通信分开+引入安全性。
问题是:是否可以将通信与滚动重启等程序分开?无需在整个集群上停机。
配置原样(简单的一个端口用于所有没有安全性的东西):
listeners=PLAINTEXT://server1:9092
想要的配置(不同的端口和一些具有安全性,在 9094 端口上复制):
listener.security.protocol.map=PLAINTEXT:PLAINTEXT,SASLPLAIN:SASL_PLAINTEXT,REPLICATION:SASL_PLAINTEXT
listeners=PLAINTEXT://server1:9092,SASLPLAIN://server1,REPLICATION://server1:9094
inter.broker.listener.name=REPLICATION
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
进展: 下面的配置运行良好。但唯一的方法是,在不使集群进入我现在知道的不一致状态的情况下,停止集群,引入新配置,如上所示,然后再次启动集群。这显然不是客户想要的。感谢任何想法如何在不需要停止/启动整个集群的情况下继续。
解决方案
我设法通过以下步骤从原始的一个侦听器配置继续进行。如果有人有任何想法来简化流程,请添加。
原始配置:
listeners=PLAINTEXT://server1:9092
1.更改 server.properties 并滚动重启
listener.security.protocol.map=PLAINTEXT:PLAINTEXT,SASLPLAIN:SASL_PLAINTEXT,REPLICATION:SASL_PLAINTEXT
listeners=PLAINTEXT://SERVER1:9092,SASL_PLAINTEXT://SERVER1:9093,REPLICATION://SERVER1:9094
sasl.enabled.mechanisms=PLAIN
还包括 jaas 配置作为 jvm 参数。-Djava.security.auth.login.config=/path/to/kafka_server_jaas.conf
2.修改server.properties并滚动重启
listener.security.protocol.map=PLAINTEXT:PLAINTEXT,SASLPLAIN:SASL_PLAINTEXT,REPLICATION:SASL_PLAINTEXT
listeners=PLAINTEXT://SERVER1:9092,SASL_PLAINTEXT://SERVER1:9093,REPLICATION://SERVER1:9094
inter.broker.listener.name=REPLICATION
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN
3.最后一次修改服务器属性,第三次滚动重启
listener.security.protocol.map=PLAINTEXT:PLAINTEXT,SASLPLAIN:SASL_PLAINTEXT,REPLICATION:SASL_PLAINTEXT
listeners=PLAINTEXT://SERVER1:9092,SASL_PLAINTEXT://SERVER1:9093,REPLICATION://SERVER1:9094
inter.broker.listener.name=REPLICATION
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
allow.everyone.if.no.acl.found=true
推荐阅读
- node.js - 类型错误:device.devices.map 不是函数
- excel - 将文件发送到其他计算机时自动添加一行
- ruby - 在 ruby 中,我们如何将两个给定的哈希合并为单个哈希,并用两个值中的较大值替换重复的键值
- powerquery - Power Query - 数据转换
- html - 从引导表中检索函数中的所有计数器值
- rust - Rust 是否允许您为您的类型和外部类型定义 Ord 或 PartialOrd?
- flutter - 在 Flutter Web 应用程序中实现橙色货币支付网关时出错
- c - 循环中 fread 后检查 EOF
- chilkat - Chilkat.CkString 缺失
- python - PyQt5 Mac拖拽窗口事件类型与收缩事件类型相同