azure - 重启后Kafka主题被删除

标签 azure apache-kafka confluent-platform azure-aks persistent-volumes

我有一个 kubernetes 集群,其中包含一个 Zookeeper Pod 和三个 Kafka Broker Pod。

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 集群的虚拟机)

重新启动后,在所有代理中,都没有主题:

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 上运行。

我认为不存在与持久卷相关的问题,因为当我在其中手动创建文件时,重新启动后,该文件仍然存在。 我认为这与我的卡夫卡配置有关。 正如您所看到的,我为此使用了融合的 docker 镜像。

任何帮助将不胜感激。

最佳答案

这只是安装路径上的错误配置。路径必须指向数据和事务日志文件夹,而不是父文件夹。

关于azure - 重启后Kafka主题被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54289244/

相关文章:

docker - 无法反序列化主题的数据

azure - 如何通过 C# 创建 Azure API 管理实例?

azure - 需要在Azure Web App中设置默认文档和物理路径

apache-kafka - 无论如何,对于kafka Streams应用程序中的不同输入主题,是否可以使用不同的 auto.offset.reset 策略?

apache-kafka - 在 StreamsConfig 中找不到 KEY_SERIALIZER_CLASS_CONFIG

docker - cp-kafka-connect 是开源组件还是专有组件?

MySQL 到 Confluence Enterprise Kafka 数据摄取

Azure 备份与快照

mysql - 是否可以在 Azure 网站上创建使用数据库的 Django 应用程序?

java - 使用 Kafka Streams 按 ID 和时间连接日志 - 无法刷新状态存储