azure - 重启后Kafka主题被删除
问题描述
我有一个带有一个 zookeeper pod 和三个 kafka 代理 pod 的 kubernetes 集群。
zk 的部署描述符是:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: zookeeper
spec:
replicas: 1
template:
metadata:
labels:
name: zookeeper
spec:
containers:
- env:
- name: ZOOKEEPER_ID
value: "1"
- name: ZOOKEEPER_SERVER_1
value: zookeeper
- name: ZOOKEEPER_CLIENT_PORT
value: "2181"
- name: ZOOKEEPER_TICK_TIME
value: "2000"
name: zookeeper
image: confluentinc/cp-zookeeper:5.0.1
ports:
- containerPort: 2181
volumeMounts:
- mountPath: /var/lib/zookeeper/
name: zookeeper-data
nodeSelector:
noderole: kafka1
restartPolicy: Always
volumes:
- name: zookeeper-data
persistentVolumeClaim:
claimName: zookeeper-volume-claims
对于 kafka 代理,如下所示(每个代理都有一个对应的代理名称、侦听器和持久卷声明):
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: kafka1
spec:
replicas: 1
strategy:
type: Recreate
template:
metadata:
labels:
name: kafka1
spec:
containers:
- env:
- name: KAFKA_AUTO_CREATE_TOPICS_ENABLE
value: "true"
- name: KAFKA_ADVERTISED_LISTENERS
value: "PLAINTEXT://<ip>:9092"
- name: KAFKA_LISTENERS
value: "PLAINTEXT://0.0.0.0:9092"
- name: KAFKA_ZOOKEEPER_CONNECT
value: <ip>:2181
- name: KAFKA_BROKER_ID
value: "1"
name: kafka1
image: confluentinc/cp-enterprise-kafka:5.0.1
ports:
- containerPort: 9092
volumeMounts:
- mountPath: /var/lib/kafka
name: kafka1-data
nodeSelector:
noderole: kafka2
restartPolicy: Always
volumes:
- name: kafka1-data
persistentVolumeClaim:
claimName: kafka1-volume-claim
集群已启动并正在运行,我可以创建主题并发布和使用消息。
文件 log.1 存在于 /var/lib/zookeeper/log/version-2
-rw-r--r-- 1 root root 67108880 Jan 18 11:34 log.1
如果我遇到其中一位经纪人:
kubectl exec -it kafka3-97454b745-wddpv bash
我可以看到主题的两个分区:
drwxr-xr-x 2 root root 4096 Jan 21 10:34 test1-1
drwxr-xr-x 2 root root 4096 Jan 21 10:35 test1-0
当我在分配 zookeeper ant 代理时重新启动虚拟机时出现问题。一个用于 zk,一个用于每个代理(三个符合我的 Kubernetes 集群的 vm)
重启后,在每个broker中,都没有topic:
root@kafka3-97454b745-wddpv:/var/lib/kafka/data# ls -lrt
total 24
-rw-r--r-- 1 root root 0 Jan 21 10:56 cleaner-offset-checkpoint
-rw-r--r-- 1 root root 54 Jan 21 10:56 meta.properties
drwxr-xr-x 2 root root 4096 Jan 21 10:56 __confluent.support.metrics-0
drwxr-xr-x 2 root root 4096 Jan 21 10:56 _schemas-0
-rw-r--r-- 1 root root 49 Jan 21 11:10 recovery-point-offset-checkpoint
-rw-r--r-- 1 root root 4 Jan 21 11:10 log-start-offset-checkpoint
-rw-r--r-- 1 root root 49 Jan 21 11:11 replication-offset-checkpoint
在动物园管理员中:
root@zookeeper-84bb68d45b-cklwm:/var/lib/zookeeper/log/version-2# ls -lrt
total 16
-rw-r--r-- 1 root root 67108880 Jan 21 10:56 log.1
如果我列出主题,它们就消失了。
Kubernetes 集群在 Azure 上运行。
我假设没有与持久卷相关的问题,因为当我在那里手动创建一个文件时,重新启动后,该文件仍然存在。我认为这与我的 kafka 配置有关。如您所见,我为此使用了融合的 docker 图像。
任何帮助将非常感激。
解决方案
这只是安装路径上的错误配置。路径必须指向数据和事务日志文件夹,而不是父文件夹。
推荐阅读
- php - 从时间为 MAX 的每个用户中选择不同的信息
- ios - 另一个链接器命令失败,退出代码为 1
- mysql - 在 slick 操作中使用 scala 集合等价物是否有害?
- android - 在Android的内部布局中设置文本字段的值
- html - 在聚合物中传递数组
- django - 在序列化程序中覆盖创建
- php - 如何模拟 Magento 2 的日期时间
- azure - 使用 Xamarin.iOS 的 Azure Active Directory 身份验证过程
- javascript - 商店补水完成后如何更新 App.js 中的状态?
- xml - Nifi SplitXML 和 EvaluateXPath 性能和内存使用情况?