当前位置:  开发笔记 > 前端 > 正文

Kafka服务器配置 - 侦听器与advertised.listeners

如何解决《Kafka服务器配置-侦听器与advertised.listeners》经验,为你挑选了3个好方法。

要让Kafka运行,您需要在config/server.properties文件中设置一些属性.我不明白有两种设置.

有人可以解释一下监听器和advertised.listeners属性之间的区别吗?

文件说:

listeners:套接字服务器侦听的地址.

advertised.listeners:代理将向生产者和消费者做广告的主机名和端口.

我何时必须使用哪种设置?



1> PragmaticPro..:

由于我无法发表评论,我会将其作为"答案"发布,并添加到M.Situations的答案中.

在他链接的同一文档中,有一个关于KAFKA客户端使用哪个监听器的模糊(https://cwiki.apache.org/confluence/display/KAFKA/KIP-103%3A+Separation+of+Internal+and+外部+流量):

如前所述,客户端永远不会看到侦听器名称,并且将像以前一样完成元数据请求.不同之处在于,它们返回的端点列表仅限于发出请求的端点的侦听器名称.

这很重要,因为取决于您在bootstrap.servers配置中使用的URL,如果它在advertised.listeners中映射,客户端将返回的URL*(如果侦听器不存在则不知道行为是什么) ).

另请注意:

基于ZooKeeper的消费者是个例外.这些消费者直接从ZooKeeper检索代理注册信息,并将选择第一个使用PLAINTEXT作为安全协议的侦听器(它们支持的唯一安全协议).

作为示例代理配置(对于集群中的所有代理):

advertised.listeners = EXTERNAL://XXXXX.compute-1.amazonaws.com:9990,内部://ip-XXXXX.ec2.internal:9993

inter.broker.listener.name = INTERNAL

listener.security.protocol.map = EXTERNAL:SSL,内部:PLAINTEXT

如果客户端使用XXXXX.compute-1.amazonaws.com:9990进行连接,则元数据提取将转到该代理.但是,与组协调员或领导者一起使用的返回URL可以是123.compute-1.amazonaws.com:9990*(另一台机器!).这意味着匹配是在KIP-103公布的侦听器名称上完成的,而与实际的URL(节点)无关.

由于EXTERNAL的协议映射是SSL,因此会强制您使用SSL密钥库进行连接.

另一方面,如果您在AWS内部,那么您可以发出ip-XXXXX.ec2.internal:9993,并且根据协议映射,相应的连接将是纯文本.

这在IaaS中尤其需要,在我的案例中,经纪人和消费者都在AWS上,而我的生产者则生活在客户端站点上,因此需要不同的安全协议和监听器.

编辑:由于您为不同的客户(经纪人,生产者,消费者)提供了不同的端口,因此添加入站规则要容易得多.



2> Thilo..:

listeners 是代理将用于创建服务器套接字的内容.

advertised.listeners 是客户将用于连接经纪人的东西.

如果您有"复杂"的网络设置(公共和私有子网以及中间路由),这两个设置可能会有所不同.



3> Maximilien B..:

通过此链接:https : //cwiki.apache.org/confluence/display/KAFKA/KIP-103%3A+Separation+of+Internal+and+External+traffic

在0.9.0.0发布周期中,引入了对每个代理支持多个侦听器的支持。每个侦听器都与安全协议,ip /主机和端口相关联。与通告的侦听器机制结合使用时,存在相当大的灵活性,但有一个限制:两个配置(侦听器和advertised.listeners)中的每个配置中,每个安全协议最多有一个侦听器。

在某些环境中,出于成本,性能和安全性的原因,可能希望独立于安全协议来区分外部客户端,内部客户端和复制流量。一些例子说明了这一点:

复制流量被分配给单独的网络接口,以使其不会干扰客户端流量。

外部流量通过代理/负载平衡器(安全性,灵活性),而内部流量则直接对代理(性能,成本)产生影响。

即使安全协议相同,外部和内部流量的安全设置也不同(例如,启用的SASL机制,身份验证服务器,不同的密钥库等的不同集合)

因此,我们建议Kafka代理应该能够为同一安全协议定义多个侦听器,以进行绑定(即侦听器)和共享(即advertised.listeners),以便在需要时可以将内部,外部和复制流量分开。

所以,

listeners-我们将在其上侦听的URI的逗号分隔列表。将主机名指定为0.0.0.0绑定到所有接口。将主机名保留为空以绑定到默认接口。合法侦听器列表的示例:

PLAINTEXT://myhost:9092,TRACE://:9091

PLAINTEXT://0.0.0.0:9092, TRACE://localhost:9093

advertised.listeners-与上述侦听器不同的侦听器,发布给ZooKeeper供客户端使用。在IaaS环境中,这可能需要与代理绑定的接口不同。如果未设置,listeners将使用的值。

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有