我在 Google Cloud Platform 上的 3 个不同区域中有 3 个 GKE 集群。我想创建一个 Kafka 集群,在每个区域(每个 GKE 集群)中都有一个 Zookeeper 和一个 Kafka 节点(代理)。
这种设置旨在避免区域故障(我知道整个 GCP 区域出现故障是罕见的,而且极不可能发生)。
我正在尝试使用Incubator 提供的Helm Chart进行此设置。
我按照本指南在 3 个 GCP 虚拟机上手动尝试了此设置,并且我能够毫无问题地完成此设置。
但是,在 Kubernetes 上设置 Kafka 集群似乎很复杂。
我们知道我们必须在每个 zookeeper 配置文件中提供所有 zookeeper 服务器的 IP,如下所示:
...
# list of servers
server.1=0.0.0.0:2888:3888
server.2=<Ip of second server>:2888:3888
server.3=<ip of third server>:2888:3888
...
正如我在 Helm 图表中看到的config-script.yaml文件有一个脚本,它为每个部署创建 Zookeeper 配置文件。
与zookeeper服务器相呼应的脚本部分如下所示:
...
for (( i=1; i<=$ZK_REPLICAS; i++ ))
do
echo "server.$i=$NAME-$((i-1)).$DOMAIN:$ZK_SERVER_PORT:$ZK_ELECTION_PORT" >> $ZK_CONFIG_FILE
done
...
截至目前,此 Helm 图表创建的配置在配置中具有以下 Zookeeper 服务器和一个副本(此处的副本意味着Kubernetes Pods replicas
)。
...
# "release-name" is the name of the Helm release
server.1=release-name-zookeeper-0.release-name-zookeeper-headless.default.svc.cluster.local:2888:3888
...
在这一点上,我一无所知,不知道该怎么办,让所有的Zookeeper服务器都包含在配置文件中?
我该如何修改脚本?