Kafka群集-在运行的群集上分离内部和外部通信

时间:2018-10-11 14:35:49

标签: apache-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

进度: 下面的配置运行良好。但是,我现在知道,在不使集群进入不一致状态的情况下,唯一的方法是停止集群,引入新的配置,然后再次启动集群。显然,客户不希望这样做。 对于在不停止/启动整个集群的情况下如何进行操作的任何想法深表感谢。

1 个答案:

答案 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
相关问题