关注https://strimzi.io/quickstarts/和https://strimzi.io/blog/2019/05/13/accessing-kafka-part-4/将GKE内部负载平衡器与Strimzi一起使用。在添加了内部负载平衡器之后,Strimzi提供了两个具有外部IP的负载平衡器服务。
Kafka % k get svc -n kafka
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
my-cluster-kafka-0 LoadBalancer xx.xxx.xx.xxx bb.bb.bbb.bb 9094:30473/TCP 3d1h
my-cluster-kafka-bootstrap ClusterIP xx.xxx.xx.xxx <none> 9091/TCP,9092/TCP,9093/TCP 25d
my-cluster-kafka-brokers ClusterIP None <none> 9090/TCP,9091/TCP,9092/TCP,9093/TCP 25d
my-cluster-kafka-external-bootstrap LoadBalancer xx.xxx.xx.xxx aa.aa.aaa.aa 9094:30002/TCP 3d1h
my-cluster-zookeeper-client ClusterIP xx.xxx.xx.xxx <none> 2181/TCP 25d
my-cluster-zookeeper-nodes ClusterIP None <none> 2181/TCP,2888/TCP,3888/TCP 25d
生产者/消费者流使用my-cluster-kafka-bootstrap
在集群内工作,我也可以从集群外卷曲my-cluster-kafka-external-bootstrap
addessaa.aa.aaa.aa:9094
。然而,在从集群外生产到aa.aa.aaa.aa:9094
之后,我的生产商记录了以下错误。
Connection to node 0 (bb.bb.bbb.bb:9094) could not be established. Broker may not be available.
其似乎指示CCD_ 5正在将业务转发到CCD_。根据kubectl get svc -o yaml
的输出,只有my-cluster-kafka-external-bootstrap
被设置为GKE内部LB。由于我们的环境中有各种防火墙规则,我怀疑my-cluster-kafka-0
也需要被设置为GKE内部LB,以便生产者工作。这似乎是问题所在吗?如何更新Strimzi以使两个LB都是内部的?谢谢
斯特里姆齐·卡夫卡在GKE私下访问它之前的一个相关问题。但在我关闭tls后,它并没有起到任何作用。
回答自己的问题。斯特里姆齐似乎为每个经纪人提供了一个LB,这就是这里的my-cluster-kafka-0
。侦听器配置可以像这样指定每个代理LBhttps://strimzi.io/blog/2019/05/13/accessing-kafka-part-4/
# ...
listeners:
# ...
- name: external
port: 9094
type: loadbalancer
tls: true
authentication:
type: tls
configuration:
bootstrap:
annotations:
service.beta.kubernetes.io/openstack-internal-load-balancer: "true"
brokers:
- broker: 0
annotations:
service.beta.kubernetes.io/openstack-internal-load-balancer: "true"
- broker: 1
annotations:
service.beta.kubernetes.io/openstack-internal-load-balancer: "true"
- broker: 2
annotations:
service.beta.kubernetes.io/openstack-internal-load-balancer: "true"
# ...