kafka bootstrap.servers作为具有多个IP的dns a记录

vc9ivgsu  于 2021-06-04  发布在  Flume
关注(0)|答案(2)|浏览(1185)

我有一个Kafka集群,有5个代理,我正在使用领事服务发现将他们的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中使用它们

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

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

20jt8wwn

20jt8wwn1#

kafka2.1包含了对处理多个dns资源记录的支持 bootstrap.servers .
如果你设置 client.dns.lookup="use_all_dns_ips" 在您的客户端配置中,它将使用dns返回的所有ip地址,而不仅仅是第一个(或随机的)。
详见kip-235和kip-302。

vxbzzdmp

vxbzzdmp2#

来自《掌握Apache·Kafka》一书: bootstrap.servers 是一个以逗号分隔的主机和端口对列表,这些主机和端口对是kafka客户机最初连接到的“引导”kafka集群中kafka代理的地址。 bootstrap.servers 提供初始主机,这些主机充当kafka客户机发现群集中全套活动服务器的起点。由于这些服务器仅用于初始连接以发现完整的集群成员身份(可能会动态更改),因此此列表不必包含完整的服务器集(不过,在服务器关闭的情况下,您可能需要多个服务器)。
客户机(生产者或消费者)使用所有服务器,而不管bootstrap.servers中为引导指定了哪些服务器。
财产也是如此 bootstrap.servers 提供初始主机,作为kafka客户机发现集群中所有活动服务器的起点,我认为这两种方法都可以。但是由于他们将属性的值保持为逗号分隔的列表,我想第二种方法将是推荐的方法。在方法1中也是一个问题,在引导过程中,随机代理可能会关闭,客户端将无法继续获取集群信息。因此,如果一个代理在引导过程中发生故障,那么最好提供多个代理作为回退。

相关问题