MSK Kafka:请解释为什么ZookeeperConnectString列出了多个端点,以及我应该如何使用它们

x7rlezfr  于 2022-12-09  发布在  Apache
关注(0)|答案(1)|浏览(133)

如果运行以下aws命令,将获得msk Kafka集群详细信息:

aws kafka list-clusters

这会传回类似下列的结果:

{
    "ClusterInfoList": [
        {
            "BrokerNodeGroupInfo": { ...},
            "ClusterArn": "arn:aws:kafka:us-west-2:000000000000000:cluster/my-cluster/{guid}",
            "ClusterName": "my-cluster",
            "ZookeeperConnectString": "z-1.my-cluster.xyz.c5.kafka.us-west-2.amazonaws.com:2181,z-3.my-cluster.xyz.c5.kafka.us-west-2.amazonaws.com,z-3.my-cluster.xyz.c5.kafka.us-west-2.amazonaws.com"
        }
    ]
}

请注意ZookeperConnectString是一个逗号分隔的字符串...
它真的是zookeeper(我认为zookeeper的全部意义是用一个端点来协调代理)还是一个代理列表?这正是我所怀疑的。另外,当我在-zoookeeper命令中使用它来创建主题或生成主题时,如果我只使用一个端点,它的工作原理是一样的。
我可以在我的应用程序中只使用其中一个端点吗?或者我应该在我的生产者配置中使用所有三个端点。如果可以,为什么?只使用其中一个端点会有什么影响?

eit6fx6z

eit6fx6z1#

  • 这些不是代理,而是不同的zookeeper服务器,它们组成了Kafka集群的zookeeper集合。
  • 您可以只使用其中一个,但这意味着特定的Zookeeper必须运行,命令才能成功。
  • 为了在客户端启动时实现高可用性和容错性,您应该使用所有这些功能,以避免您刚刚在配置中设置的zookeeper被停止(而其他功能仍在运行)的情况。

设置所有这些参数可以保证(* 如果仲裁正常 *)即使某些zookeeper服务器不活动,您的Kafka命令也会成功。

Zookeeper多服务器设置

要获得可靠的ZooKeeper服务,您应该将ZooKeeper部署在称为集合的集群中。只要大多数集合都已启动,服务就将可用。因为ZooKeeper需要大多数,所以最好使用奇数台计算机。例如,在四台计算机中,ZooKeeper只能处理一台计算机的故障;如果有两台机器出现故障,剩下的两台机器并不构成多数。2但是,有五台机器,ZooKeeper可以处理两台机器的故障。

相关问题