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