即使 Kafka 正在服务 TLS/SSL,Kafka 能否通过 TCP 与 ZooKeeper 通信?

Can Kafka talk to ZooKeeper over TCP even if Kafka is serving TLS/SSL?

我创建了一个 3 节点 ZK 集成,用作 Kafka 和(可能)其他服务的共识集群。

我还创建了一个单独的 2 节点 Kafka broker 集群,它使用这 3 个 ZK 进行领导选举等。我已经用远程生产者和消费者测试了这个配置,它似乎工作得很好。

我现在想让我的 Kafka 代理需要 TLS/SSL,以便 Kafka 客户端 通过 SSL 证书进行通信。但是我不想将我的 3 个 ZK 节点配置为需要 TLS。

我可以进行以下设置吗 (?) :

Kafka Clients <---TLS---> Kafkas <---TCP---> ZK

或者我是否需要一直到 ZK 后端的 TLS?

是的,你可以。当您在 Kafka 中配置 SSL 时,仅适用于 Kafka 客户端到 Kafka 服务器以及可选的 Kafka 服务器之间。 事实上,Zookeeper 3.4 还不支持客户端和服务器之间的 TLS 通信。 Thay 功能将在 Zookeeper 3.5 中推出。

此任务仍然可以通过以下步骤中提到的简单解决方法来完成;

  1. 安装zookeeper-3.5.1-alpha(使用.jar文件,3.5+版本即可)
  2. <kafka-installation-folder>\libs
  3. 中用/zookeeper-3.5.1-alpha/zookeeper-3.5.1-alpha.jar替换默认的zookeeper*.jar
  4. 复制/zookeeper-3.5.1-alpha/lib/netty-3.7.0.Final.jar<kafka-installation-folder>\libs
  5. 在 Zookeeper 上启用 SSL 的相关更改 (https://cwiki-test.apache.org/confluence/display/ZOOKEEPER/ZooKeeper+SSL+User+Guide)