情况是::将客户端和代理复制通信分开,并引入安全性。
问题是:是否可以通过某些程序(如滚动重启)来分隔通信?无需在整个集群上停机。
按原样配置(只需一个端口即可实现所有安全功能)
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
进度: 下面的配置运行良好。但是,我现在知道,在不使集群进入不一致状态的情况下,唯一的方法是停止集群,引入新的配置,然后再次启动集群。显然,客户不希望这样做。 对于在不停止/启动整个集群的情况下如何进行操作的任何想法深表感谢。
答案 0 :(得分:1)
通过以下步骤,我设法从原始的一种侦听器配置继续进行,直到需要为止。 如果有人想简化此流程,请补充。
原始配置:
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