我有一个三个节点的Kakfa集群,其中还有一个三个节点的Zookeeper来管理它。这个集群的配置如下所示
192.168.1.12
192.168.1.13
对于每一个节点,我都有Zookeeper和Kakfa配置文件。我的示例配置文件如下所示
# Zookeeper server config
dataDir=/tmp/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=192.168.1.11:2889:3889
server.2=192.168.1.12:2889:3889
server.3=192.168.1.13:2889:3889因为每个动物园管理员实例都需要了解对方的动物园管理员实例,而且通常从我所看到的情况来看,即使在管理大量的Kafka集群时,通常也只有不到10个动物园管理员节点。所以在这里我们只需要跟踪10个IP。根据我的理解,这些if并不像以前那样不稳定,而且通常不会经常变化。
对于我的Kafka配置文件,我在每个节点上有以下内容
# Kafka server properties file
broker.id=<ID for this node>
log.dirs=/tmp/kafka-logs
zookeeper.connect=192.168.1.11:2181,192.168.1.12:2181,192.168.1.13:2181
zookeeper.connection.timeout.ms=36000
listeners=PLAINTEXT://<IP of this node>:9092现在,对于我来说,我们引入到集群中的每个Kafka节点都必须知道所有的动物园管理员节点,这样它才能被管理。但对我来说,问题是,当我们把卡夫卡的节点向上或向下扩展时,我们对他们的IP就不那么确定了。例如,如果我想创建一个新的Kafka主题,我将使用他们提供的kafka-topics.sh shell文件,并键入类似的内容
kafka-topics.sh --create --topic MyTopic --bootstrap-server <IP of one of the Kafka nodes>
# Could also use the broker-list option instead of bootstrap-server to allow multiple IPs对我来说,问题是,我们永远不知道哪些Kafka IP已经启动和运行,所以将IP传递给--bootstrap-server就像一个猜测游戏,或者我需要手动检查一个工作节点的IP。
因此,对于Kafka,如何配置静态IP (可能是虚拟IP)?所以使用我的Kafka集群的其他服务总是可以连接到它吗?如何使用更改的IP对集群执行服务发现?
发布于 2021-05-14 16:26:51
通常有少于10个动物园管理员节点
根据“卡夫卡绝对指南”,7通常是大型卡夫卡集群中动物园管理员集群的最大尺寸。就我个人而言,我从未见过卡夫卡集群中每天为数百万事件服务的超过5人.
您可以创建一个解析为健康实例的DNS记录。
但是,如果IP不是静态的,那么客户端通常会出现问题,因为分区领导人是由IP和broker ID托管的。
注意:引导服务器和代理列表都接受多个地址,但只有控制台生产者使用代理列表param。
还有其他创建主题的方法,比如Terraform,您可以在其中静态地将Kafka地址作为一个变量存储在源代码中,并且很少更改它。特别是,每次使用Kafka客户端时,您不需要列出每个IP,只需要列出少数几个IP。
https://stackoverflow.com/questions/67536967
复制相似问题