apache-kafka - Kafka集群配置问题
问题描述
我的 Kafka 集群设置存在问题。我有一个 Kafka 集群,其中有两个代理连接到两个动物园管理员。我将数据发布到一个主题,该主题具有复制因子和两个分区,每个分区都有一个 Spring Boot Kafka 生产者,并与另一个 Spring Boot 应用程序一起使用。
在以以下方式测试集群时,我发现了一种奇怪的行为 -
Turned off node1 and node 2
Turned on node 1
Turned off node 1
Turned on node 2
打开节点 2 后,Kafka 集群出现故障,我无法向 Kafka 生成数据。我的消费者开始连续发送消息,如下所示。
[Producer clientId=producer-1] 无法建立到节点 1 (/server1-ip:9092) 的连接。经纪人可能不可用。
问题在两个节点中都可见。但是如果我让两个系统都运行一段时间,问题就会得到解决,我可以在不破坏集群的情况下关闭任何节点。
我的代理配置如下。
broker.id=0
listeners=PLAINTEXT://server1-ip:9092
Advertisementd.listeners=PLAINTEXT://serever1-ip:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes =102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/home/user/kafka/data/kafka-logs
num.partitions=1
num.recovery.threads.per.data .dir=2
offsets.topic.replication.factor
=2
transaction.state.log.replication.factor=2
transaction.state.log.min.isr=2
log.retention.hours=168
log.segment.bytes=1073741824
log .retention.check.interval.ms=300000
zookeeper.connect=server1-ip:2181,server2-ip:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms
=3000
auto.leader.rebalance.enable=true
leader.imbalance.check.interval.seconds=5
动物园管理员配置
dataDir=/home/user/kafka/data
clientPort=2181
maxClientCnxns=0
initLimit=10
syncLimit=5
tickTime=2000
server.1=server1-ip:2888:3888
server.2=server2-ip:2888:3888
这是 Kafka 的预期行为还是我对这个配置做错了什么?
有人可以帮我解决这个问题..
解决方案
您应该将所有代理地址添加到生产者和消费者配置中的 bootstrap.servers 属性。通过这种方式,您可以在一台或多台服务器发生故障的情况下连接到 Kafka 集群。
bootstrap.servers:用于建立与 Kafka 集群的初始连接的主机/端口对列表。客户端将使用所有服务器,无论此处指定哪些服务器进行引导——此列表仅影响用于发现完整服务器集的初始主机。此列表应采用 host1:port1,host2:port2,.... 的形式。由于这些服务器仅用于初始连接以发现完整的集群成员(可能会动态更改),因此此列表不需要包含完整集服务器数量(但您可能需要多个服务器,以防服务器停机)。
推荐阅读
- python - python pd.read_excel [WinError 32] 该进程无法访问该文件,因为它正在被另一个进程使用
- javascript - 在返回节点之前等待嵌套循环完成
- php - 使用 PHPWord 更改布局、边框将 docx 转换为 PDF,
- python - Qt 动态属性 - 如果不是父级,则适用于小部件?
- postgresql - Postgres 订阅未启用
- html - 是否有必要将用户提交的数据转义到 HTML 输入值中?
- jackson - 如何忽略@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
- export-to-csv - Snowflake COPY INTO Export 产生不可读的文件
- python - 当顶行的列值包含时,pandas read_csv() 导致应用程序崩溃并出现分段错误
e- - python - Spacy 自定义名称实体识别(NER)“灾难性遗忘”问题