Authentication 我可以通过互联网使用卡夫卡吗?
卡夫卡适合互联网使用吗 更准确地说,我想要的是将卡夫卡主题公开为“公共接口”,然后外部消费者(或制作人)可以连接到它。可能吗 我听说如果我想在内部和外部网络中使用群集,会出现问题,因为这样很难配置adverted.host.name。这是真的吗Authentication 我可以通过互联网使用卡夫卡吗?,authentication,apache-kafka,cluster-computing,nat,wan,Authentication,Apache Kafka,Cluster Computing,Nat,Wan,卡夫卡适合互联网使用吗 更准确地说,我想要的是将卡夫卡主题公开为“公共接口”,然后外部消费者(或制作人)可以连接到它。可能吗 我听说如果我想在内部和外部网络中使用群集,会出现问题,因为这样很难配置adverted.host.name。这是真的吗 我也要暴露动物园管理员吗?我认为新的消费者/生产者api不再需要它。卡夫卡的有线协议是基于TCP的,在公共互联网上运行良好。在最新版本的Kafka中,您可以为内部和外部流量配置多个接口。互联网上的卡夫卡产品示例包括Heroku、IBM MessageHu
我也要暴露动物园管理员吗?我认为新的消费者/生产者api不再需要它。卡夫卡的有线协议是基于TCP的,在公共互联网上运行良好。在最新版本的Kafka中,您可以为内部和外部流量配置多个接口。互联网上的卡夫卡产品示例包括Heroku、IBM MessageHub和Confluent Cloud提供的几种卡夫卡即服务产品 如果Kafka客户端使用新的消费者API,则不需要公开zookeeper
您也可以选择将REST代理(如开源Confluent REST Proxy)公开为更为客户端防火墙友好的接口,因为它运行在HTTP上,不会被大多数公司或个人防火墙阻止。除了配置客户端TLS之外,代理还必须具有我们试图避免的公共IP。通常,对于其他服务,我们将所有内容隐藏在负载平衡器后面。卡夫卡能做到这一点吗
当您需要java producer客户端的高性能批处理时,我不确定托管在公共服务器上的Confluent REST代理是否是一个真正的选择。我个人不会通过TCP将Kafka服务器直接暴露给客户端,原因如下:
- 如果一个坏客户端打开了太多的连接,这可能会影响Kafka平台的稳定性,也可能会影响其他客户端
- Kafka服务器上打开的文件太多,需要硬件/软件设置和操作系统调整来限制不受控制的客户端
- 如果您需要添加Kafka服务器以提高可伸缩性,则可能需要在客户端和服务器端进行大量低级别配置(防火墙、IPs可见性、证书等)。其他产品使用网关或代理解决这些问题:Coherence使用扩展代理客户端,tibco EMS使用路由目的地,其他SW(许多JMS服务器)使用存储转发机制,等等
- 卡夫卡节点的维护,在连接到卡夫卡服务器的客户端的情况下,还必须考虑客户机的需求和客户机定义的SLA(服务级别聚合)(24×7×365) 。
- 如果您还将Kafka用作后端服务,则应考虑多层体系结构:FE网关和be服务等 其他的考虑需要了解你在系统中认为是什么样的外部(互联网上的)消费者/生产者。它是需要访问Kafka服务器的系统组件吗?它们是组织内部的还是外部的,等等。
- HTTP代理
- 或者,至少我会使用一个专用的FE Kafka服务器(或HA的两个服务器),专用于将消息转发到主Kafka服务器组的每个客户端
- ZooKeeper节点应位于专用子网中,并且不能从外部路由。ZK的安全性不足,无论如何,不再需要使用ZK地址引导Kafka客户端
- 在网络级别限制对代理的访问。如果您的所有客户端都从受信任的网络连接,则设置适当的防火墙规则。如果在AWS中,如果要连接云到云或云到地,请使用VPC对等或直接连接。如果您的大多数客户机都在受信任的网络上,但相对少数客户不在,请强制后者通过VPN隧道。最后,如果您想允许从任意位置进行连接,只需在端口9092(或配置代理侦听的任何端口)上
;只需确保其他端口已关闭allow*
- 为客户端代理连接启用TLS(SSL)。这是。根据您公开侦听器的方式,可能需要在客户端上禁用SSL主机名验证。(如果播发的主机名与证书的公用名不匹配,则证书信任链将断开。)客户端将需要安装CA证书。(与签署经纪人证书的CA相同。)
- 或者,您可以启用相互TLS身份验证;但是,这在逻辑上更为繁重,因为它要求每个客户端都有自己的私钥,该私钥由代理信任的CA签名李>
- 使用SASL向代理验证客户机,并为每个应用程序和预期访问集群的每个人创建单独的用户
- 遵循最小特权原则(PoLP),在ACL中为每个用户发出最少足够的集群级和主题级访问权限
需要记住的另一件事是:并非所有工具都支持SASL/SSL连接,有些工具实际上需要连接到ZooKeeper节点(在上述设置中无法访问)。确保您所依赖的任何工具都直接使用“新”样式的连接到Kafka代理,并且不需要Zookeeper连接。我看到了这一点。不确定它是否相关但前面有一个django/flask rest api。AFAIK您不能将kafka群集隐藏在负载平衡器后面,因为每个生产者必须直接连接到特定的代理,该代理是生产者需要写入的分区的负责人。更正@guido,您必须