Apache kafka kafka bootstrap.server作为具有多个IP的DNS A记录

Apache kafka kafka bootstrap.server作为具有多个IP的DNS A记录,apache-kafka,spark-streaming,flume,high-availability,resolve,Apache Kafka,Spark Streaming,Flume,High Availability,Resolve,我有一个Kafka集群,有5个代理,我正在使用Concur Service Discovery将他们的IP放入dns记录中 kafka.service.domain.cc A 1.1.1.1 2.2.2.2 ... 5.5.5.5 建议只使用一个域名: kafka.bootstrap.servers=kafka.service.domain.cc:30000 或者最好有多个域名(至少2个),每个域名解析为一个代理 kafka1.service.domain.cc A 1.1.1.1 kafka

我有一个Kafka集群,有5个代理,我正在使用Concur Service Discovery将他们的IP放入dns记录中

kafka.service.domain.cc A 1.1.1.1 2.2.2.2 ... 5.5.5.5
建议只使用一个域名: kafka.bootstrap.servers=kafka.service.domain.cc:30000

或者最好有多个域名(至少2个),每个域名解析为一个代理

kafka1.service.domain.cc A 1.1.1.1
kafka2.service.domain.cc A 2.2.2.2
然后在卡夫卡中使用它们

kafka.bootstrap.servers = kafka1.service.domain.cc:30000,kafka2.service.domain.cc:30000

我对第一种方法的担忧是,域名将只解析一次给一个随机代理,如果该代理关闭,将不会进行新的dns解析。

摘自《掌握Apache Kafka》一书:

bootstrap.servers
是以逗号分隔的主机和端口对列表 这是卡夫卡经纪人在“引导”卡夫卡中的地址 Kafka客户端最初连接到的群集,以引导自身

bootstrap.servers
提供充当引导服务器的初始主机 Kafka客户端发现完整的活动数据集的起点 集群中的服务器。因为这些服务器只是用于 发现完整群集成员身份的初始连接(可能 动态更改),此列表不必包含完整的集合 服务器的数量(但是,如果服务器不可用,您可能需要多个服务器) 向下)

客户端(生产者或消费者)使用所有服务器 其中的服务器在bootstrap.servers中指定用于引导


因此,由于属性
bootstrap.servers
提供了初始主机,作为Kafka客户端发现集群中全套活动服务器的起点,我认为这两种方法都可以。但由于他们将属性的值保持为逗号分隔的列表,我想第二种方法将是推荐的方法。在方法1中,这也是一个问题,在引导过程中,随机代理可能会关闭,客户端将无法继续获取集群信息。因此,如果一个代理在引导过程中发生故障,则最好提供多个代理作为回退。

Kafka 2.1在
bootstrap.servers
中包含了对处理多个DNS资源记录的支持

如果在客户端配置中设置
client.dns.lookup=“use\u all\u dns\u ips”
,它将使用dns返回的所有IP地址,而不仅仅是第一个(或随机的)

有关更多信息,请参阅和