面临的挑战是创建一个Kafka生产者,该生产者从该集群外部连接到位于Kubernetes集群中的Kafka集群。我们有几个RDBMS数据库位于内部,我们想直接将数据流传输到AWS上位于Kubernetes中的Kafka。我们已经尝试了一些方法并部署了Confluent开源平台,但是到目前为止没有任何效果。有没有人对这个问题有明确的答案?
答案 0 :(得分:0)
您可能会看看在Kubernetes内部部署Kafka Connect。由于您要复制各种RDMBS数据库中的数据,因此需要设置源连接器
源连接器提取整个数据库并更新流表 卡夫卡主题。它还可以收集您所有的指标 应用服务器纳入Kafka主题,使数据可用于 低延迟的流处理。
根据您的源数据库,您必须配置相应的connectors。
如果您不熟悉Kafka Connect,this article可能会很有帮助,因为它解释了关键概念。
答案 1 :(得分:0)
Kafka客户端需要连接到特定节点以生成或使用消息。
kafka协议可以连接到任何节点以获取元数据。然后,客户端连接到一个特定的节点,该节点被选为该客户端要生产/使用的分区的领导者。
每个kafka吊舱必须可单独访问,因此每个吊舱需要一个L4负载平衡器。可以在kafka配置中设置播发的侦听器配置,以为内部和外部客户端播发不同的IP /主机名。配置ADVERTISED_LISTENERS EXTERNAL以使用负载平衡器,并配置INTERNAL以使用Pod IP。内部和外部端口必须不同。
结帐https://strimzi.io/,https://bitnami.com/stack/kafka,https://github.com/confluentinc/cp-helm-charts
更新:
正在尝试在AWS EC2中运行的k8s中安装kafka。之间 合流操作员,bitnami-kafka和strimzi,仅配置了strimzi kafka设置中的EXTERNAL到负载均衡器。
bitnami-kafka使用 无头服务,在k8s网络外部无用。 Confluent-operator配置为节点的IP,从而使其可访问 外部k8,但对于那些可以通过私有访问EC2实例的用户 IP。