![](/img/trans.png)
[英]How to get Kafka brokers in a cluster using Spring Boot Kafka?
[英]Fault tolerance in Kafka Cluster using Spring Boot
我开始在docker上使用Spring Boot Kafka和kafka集群工作。 我开始检查容错能力时就遇到了问题。 通常,我在Spring Boot中通过Kafka Admin创建了一个主题(复制因子= 2)。 我能够存储一些消息并从Kafka中使用它们。 但是在停止了一个kafka容器(我有两个kafka实例和一个Zookeeper)之后,我的使用者无法传达剩下的一个。
我已经提供了bootstrap.servers属性:
SPRING_KAFKA_BOOTSTRAP_SERVERS: kafka:9092,kafka2:9093
我创建主题的kafka admin bean如下所示:
@Bean
public NewTopic adviceTopic() {
return new NewTopic(topicName, 1, (short) 2);
}
当我只使用一个实例时(选择哪个实例都没有关系),它可以很好地工作(因此,不会出现配置错误的Kafka监听器/主机的情况)。 当我删除一个实例时,我的应用程序无法使用第二个kafka实例。
我的码头工人组成看起来像:
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
container_name: kafka
image: wurstmeister/kafka
expose:
- "9092"
environment:
KAFKA_LISTENERS: PLAINTEXT://kafka:9092
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'false'
volumes:
- /var/run/docker.sock:/var/run/docker.sock
depends_on:
- zookeeper
kafka2:
container_name: kafka2
image: wurstmeister/kafka
expose:
- "9093"
environment:
KAFKA_LISTENERS: PLAINTEXT://kafka2:9093
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_AUTO_CREATE_TOPICS_ENABLE:
volumes:
- /var/run/docker.sock:/var/run/docker.sock
depends_on:
- zookeeper
kafka-service:
container_name: kafka_service
build: .
ports:
- "8080:8080"
environment:
SPRING_KAFKA_BOOTSTRAP_SERVERS: kafka:9092,kafka2:9093
depends_on:
- zookeeper
- kafka
- kafka2
使用“ docker stop kafka_container”时得到的结果是:
2019-07-19 09:19:16.836警告1 --- [| 消费者] org.apache.kafka.clients.NetworkClient:[消费者clientId = json-0,groupId = qpm-消费者]无法建立到节点1002的连接。 经纪人可能不可用。
之后,我无法使用Spring Boot Example生成任何消息。 您能否提供一些提示,为什么我的应用程序无法使用第二个kafka实例? 即使我设置正确的复制因子?
如果您的主题的复制因子为2,则至少需要运行两个节点,否则kafka会抱怨。 要测试您可能需要说5个节点(a,b,c,d,e),然后设置一个复制因子为2的主题,并检查它正在使用的节点,然后杀死其中一个。
我找到了解决方案。 我需要在docker-compose中添加kafka:KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR:2 KAFKA_DEFAULT_REPLICATION_FACTOR:2
问题与哪个__consumer_offsets主题相关,该主题具有1个复制因子。 因为我使用了两个kafka实例,所以我不得不将这些属性设置为2。
有关此问题的详细答案,请参见此处:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.