Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon ec2 Kafka服务器配置-侦听器与播发的侦听器_Amazon Ec2_Apache Kafka - Fatal编程技术网

Amazon ec2 Kafka服务器配置-侦听器与播发的侦听器

Amazon ec2 Kafka服务器配置-侦听器与播发的侦听器,amazon-ec2,apache-kafka,Amazon Ec2,Apache Kafka,要运行Kafka,需要在config/server.properties文件中设置一些属性。有两种设置我不明白 有人能解释一下listeners和Adverted.listeners属性之间的区别吗 文件说: 侦听器:套接字服务器侦听的地址 及 .listeners: 代理将向生产者和消费者公布主机名和端口 什么时候我必须使用哪种设置 侦听器是代理将用于创建服务器套接字的内容 播发。侦听器是客户端将用于连接到代理的内容 如果您有一个“复杂”的网络设置(如公用和专用子网以及介于两者之间的路由),则

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

有人能解释一下listeners和Adverted.listeners属性之间的区别吗

文件说:

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

.listeners: 代理将向生产者和消费者公布主机名和端口


什么时候我必须使用哪种设置

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

播发。侦听器是客户端将用于连接到代理的内容

如果您有一个“复杂”的网络设置(如公用和专用子网以及介于两者之间的路由),则这两种设置可能会有所不同。

来自此链接:

在0.9.0.0发行周期中,支持每个 介绍了经纪人。每个侦听器都与一个安全性关联 协议、ip/主机和端口。当与广告相结合时 侦听器机制,其中一个具有相当大的灵活性 限制:每个安全协议中最多有一个侦听器 两个配置(侦听器和播发的.listeners)

在某些环境中,可能需要区分外部 客户端、内部客户端和复制流量独立于 基于成本、性能和安全原因的安全协议。少许 举例说明:

  • 复制流量被分配到一个单独的网络接口,这样它就不会干扰客户端流量
  • 外部流量通过代理/负载平衡器(安全性、灵活性),而内部流量直接命中代理 (性能、成本)
  • 即使安全协议相同,外部和内部流量的安全设置也不同(例如,不同的 启用的SASL机制、身份验证服务器、不同的密钥库、, )
因此,我们建议卡夫卡经纪人应该能够定义 用于绑定的同一安全协议的多个侦听器(即。 侦听器)和共享(即播发的侦听器),以便, 如果需要,可以将外部通信和复制通信分开

所以

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

  • PLAINTEXT://myhost:9092,TRACE://:9091
  • PLAINTEXT://0.0.0.0:9092,TRACE://localhost:9093
advised.listeners-如果与上面的侦听器不同,则要发布到ZooKeeper供客户端使用的侦听器。
在IaaS环境中,这可能需要与代理绑定到的接口不同。如果未设置此选项,则将使用侦听器的值。

因为我还不能发表评论,所以我会将其作为“答案”发布,并添加到M.answer中

在他链接的同一个文档中,有一个关于卡夫卡客户端使用哪个侦听器的简介():

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

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

还要注意这一点:

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

例如,代理配置(适用于集群中的所有代理):

adverted.listeners=EXTERNAL://XXXXX.compute-1.amazonaws.com:9990,INTERNAL://ip-XXXXX.ec2.INTERNAL:9993

inter.broker.listener.name=内部

listener.security.protocol.map=外部:SSL,内部:明文

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

由于外部的协议映射是SSL,这将迫使您使用SSL密钥库进行连接

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

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

编辑: 另外,添加入站规则更容易了,因为不同的客户端(代理、生产者、消费者)具有不同的端口

编辑2:
如果上面的内容仍然不清楚,本文将是一个非常深入的指南:

我不确定您是否可以将别名同时分配给
侦听器和
广告。侦听器
,至少对我来说,在HDP2.5.0.3上它不起作用,可能遗漏了什么。对我来说,有效的方法是定义不同的配置组,并在所需的IP地址上设置特定的广告。谢谢,@reim非常感谢您的提及,因为需要为每个代理分别配置
广告。侦听器
(总共3个代理)<代码>广告。侦听器
对于我的案例是必需的,因为我正在使用AWS.EDIT2:侦听消息