kafka配置没有advertised.listeners这个参数,只有listeners这个可以连接k8s吗
时间: 2023-05-22 12:05:59 浏览: 104
可以。listeners参数可以指定Kafka在哪些网络接口或主机名上监听客户端请求。如果Kafka部署在Kubernetes中,可以将listeners参数配置为"kubernetes内部服务名称:9092",这样客户端就可以通过Kubernetes服务名称连接Kafka。但如果需要让客户端能够在Kafka集群外通过公网IP访问Kafka,需要使用advertised.listeners参数来指定广告地址。
相关问题
kafka的server.properties advertised.listeners 和 listeners 都是什么含义
在Kafka的`server.properties`配置文件中,`advertised.listeners`和`listeners`都是用来配置Kafka Broker的监听地址(Listener)的。
其中:
- `listeners`配置了Kafka Broker监听的地址和端口,格式如下:
```
listeners=PLAINTEXT://host.name:port,SSL://host.name:port
```
其中,`host.name`为Broker所在的主机名或IP地址,`port`为Broker监听的端口。可以同时配置多个Listener,使用逗号进行分隔。例如,上面的配置中,Broker会监听两个地址:`PLAINTEXT`协议的`host.name:port`和`SSL`协议的`host.name:port`。
- `advertised.listeners`则是配置Kafka Broker在外部网络中的地址和端口,格式与`listeners`相同,例如:
```
advertised.listeners=PLAINTEXT://your.host.name:9092
```
`advertised.listeners`会被用于告诉Kafka Producer和Consumer Broker在外部网络中的地址,以便它们可以正确地连接到Broker。如果Broker监听的地址与外部网络中的地址不同,那么就需要使用`advertised.listeners`来指定外部网络中的地址。
需要注意的是,如果`advertised.listeners`没有配置,那么Kafka Producer和Consumer会使用`listeners`中配置的地址和端口进行连接。
在docker 部署kafka, server.properties advertised.listeners 和 listeners 需要部署哪一个
在Docker部署Kafka时,需要根据实际情况来配置`server.properties`中的`advertised.listeners`和`listeners`。
如果Kafka Broker运行在Docker容器内部,并且与外部网络隔离,那么应该将`listeners`配置为Broker监听的Docker容器内部的地址和端口,例如:
```
listeners=PLAINTEXT://localhost:9092
```
如果要将Kafka Broker的服务暴露到外部网络中,那么需要将`advertised.listeners`配置为Broker在外部网络中的地址和端口,例如:
```
advertised.listeners=PLAINTEXT://your.host.name:9092
```
此时,为了让Kafka Producer和Consumer能够正确地连接到Broker,还需要将Docker容器内部的`listeners`地址映射到宿主机的端口上,例如:
```
docker run -p 9092:9092 ...
```
其中,`-p`参数用于将容器内部的`9092`端口映射到宿主机的`9092`端口上。
总之,`listeners`是Broker内部监听的地址和端口,`advertised.listeners`是Broker在外部网络中的地址和端口。在Docker部署Kafka时,需要将它们设置为正确的值,以便Kafka Producer和Consumer能够正确地连接到Broker。
阅读全文