mongodb - kafka mongo db源连接器,在kubernetes上运行mongo db

标签 mongodb kubernetes apache-kafka apache-kafka-connect

我正在尝试为融合的kafka平台设置mongo db源连接器[https://www.confluent.io/hub/mongodb/kafka-connect-mongodb]。使用Mongo DB Atlas的连接URI时,我能够成功建立mongo db和kafka之间的流。当我在Azure kubernetes集群上运行mongo db时出现问题。我创建了具有3个副本的mongo db statefulset,并且已通过负载均衡器将mongo db服务公开到了Internet。我可以使用robo 3T连接到公开IP上的mongo数据库,并执行CRUD操作。现在,当我使用在kubernetes中运行的mongo db的连接URI看起来像“mongodb:// load-balance-ip:27017 / test?ssl = false&authSource = admin&retryWrites = true&w = majority”时,出现以下错误kafka连接日志
INFO Failed to resume change stream: The $changeStream stage is only supported on replica sets 40573 (com.mongodb.kafka.connect.source.MongoSourceTask:253)
Mongo DB有状态集YML看起来像这样

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: eic-mongo-mongodb
spec:
  serviceName: eic-mongo-mongodb
  replicas: 3
  selector:
    matchLabels:
      app: eic-mongo-mongodb
  template:
    metadata:
      labels:
        app: eic-mongo-mongodb
        selector: eic-mongo-mongodb
    spec:
      affinity:
        # Try to put each ES data node on a different node in the K8s cluster
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
            - weight: 100
              podAffinityTerm:
                labelSelector:
                  matchExpressions:
                    - key: app
                      operator: In
                      values:
                        - eic-mongo-mongodb
                topologyKey: kubernetes.io/hostname
      containers:
        - name: eic-mongo-mongodb
          image: mongo:4.0.8
          resources:
            limits:
              cpu: 500m
              memory: "1Gi"
            requests:
              cpu: 500m
              memory: "1Gi"
          volumeMounts:
            - name: mongo-volume
              mountPath: /data/db
  volumeClaimTemplates:
    - metadata:
        name: mongo-volume
      spec:
        accessModes:
          - ReadWriteOnce
        volumeMode: Filesystem
        resources:
          requests:
            storage: 3Gi

mongo DB服务yml看起来像这样
apiVersion: v1
kind: Service
metadata:
  name: eic-mongo-mongodb
 ports:
  - name: "27017"
    nodePort: 31683
    port: 27017
    protocol: TCP
    targetPort: 27017
  selector:
    app: eic-mongo-mongodb
  type: LoadBalancer


有人可以让我知道我在哪里出错吗?

最佳答案

我认为您需要以正确的方式设置mongodb集群。请遵循this使用运算符在kuberntes上部署mongodb副本集。如果要使用statefulset进行设置,请仅遵循this

关于mongodb - kafka mongo db源连接器,在kubernetes上运行mongo db,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61823999/

相关文章:

java - 高流量环境下使用kafka producer时的连接管理

mysql - 提高 pentaho 表输入步骤性能

macos - 蒙戈 : command not found on Mac OSX even though it's in the PATH

java - 强制吗啡覆盖现有条目的干净方法

kubernetes - 我可以暂停 kubectl apply 上的类型检查吗?

docker - 在 kubernetes 上运行的 Postgres 在 Pod 重建或集群重启时丢失数据

java - Spark Streaming Context 阻塞 REST 端点

javascript - POST 请求未收到 JSON 数据?

mongodb - 在 mongodb 集合中查找所有按字段最新且与另一个字段不同的文档

kubernetes - 所需值 : must specify a volume type when statically provisioning PV