【问题标题】:Couchbase cbbackup fails from remote serverCouchbase cbbackup 从远程服务器失败
【发布时间】:2020-11-17 16:36:28
【问题描述】:

Couchbase cbbackup 从远程服务器失败,该服务器与在 K8s 上运行的 Couchbase 完全连接。

  • Couchbase 服务器版本:couchbase:community-6.0.0
  • 在 Kubernetes 1.17 上运行的 Couchbase。

cbbackup -m full http://{IP}:61006 /backup-1 -u admin -p password -vvv

错误:SASL 身份验证套接字错误:192.168.72.10:11210,超时

cbbackup 日志添加在下面,

mt cbbackup...
mt  source : http://{IP}:61006
mt  sink   : /backup-1
mt source_class: <class 'pump_dcp.DCPStreamSource'>
mt Starting new HTTP connection (1): {IP}
mt "GET /pools/default/buckets HTTP/1.1" 200 19966
mt sink_class: <class 'pump_bfd.BFDSink'>
mt source_buckets: bucket-1
mt bucket: bucket-1
mt  source_nodes: 192.168.72.10:8091
mt  enqueueing node: 192.168.72.10:8091
mt rest_request: <ud>admin</ud>@{IP}:61006/pools/default/buckets/bucket-1/stats/curr_items; reason: total_msgs
w0  node: 192.168.72.10:8091
w0 sink_bucket: bucket-1
w0   DCPStreamSource connecting mc: 192.168.72.10:11210
s0   create_db: /backup-1/2020-07-28T083342Z/2020-07-28T083342Z-full/bucket-bucket-1/node-192.168.72.10%3A8091/data-0000.cbb
s0   connect_db: /backup-1/2020-07-28T083342Z/2020-07-28T083342Z-full/bucket-bucket-1/node-192.168.72.10%3A8091/data-0000.cbb
mt rest_request: <ud>admin</ud>@{IP}:61006/pools/default/buckets/bucket-1/stats/vb_active_resident_items_ratio; reason: total_msgs
w0   pump (http://{IP}:61006(bucket-1@192.168.72.10:8091)->/backup-1(bucket-1@192.168.72.10:8091)) done.
w0   source : http://{IP}:61006(bucket-1@192.168.72.10:8091)
w0   sink   : /backup-1(bucket-1@192.168.72.10:8091)
w0          :                total |       last |    per sec
w0  node: 192.168.72.10:8091, done; rv: (u'error: SASL auth socket error: 192.168.72.10:11210, timed out', None)
(u'error: SASL auth socket error: 192.168.72.10:11210, timed out', None)

在 Couchbase 论坛中也提出了问题。参考here

对此有任何想法吗?我被这个问题困住了。

更新 我不能将暴露的 memcached 端口用于 cbbackup,因为官方 document.. 中没有添加任何选项。 This Couchbase 论坛上发布的答案提供了一些详细信息。如果这是真的,那么就不可能从远程系统运行成功的 cbbackup。但我不认为 Couchbase 团队是这样设计的。希望有办法实现同样的目标。

  • 备份和恢复 Couchbase 已使用 Kubernetes 作业进行了测试和工作。但正在寻找远程 Couchbase 备份。

【问题讨论】:

    标签: kubernetes couchbase


    【解决方案1】:

    这里的问题看起来像 ? 是您在 couchbase 服务器/存储桶上配置了 SASL 身份验证。此外,看起来 ? pod IP 是 192.168.72.10,因此客户端正在尝试从同一个 pod 网络进行身份验证,但您正在从不在 Kubernetes 集群中的另一台机器发出请求(我假设)。

    您可以尝试从 pod 运行备份:

    $ kubectl run -i --tty --rm debug --image=couchbase --restart=Never -- /opt/couchbase/bin/cbbackup -m full http://{IP}:61006 /backup-1 -u admin -p password -vvv
    

    不幸的是,kubectl run 没有很多功能,因此如果您想挂载卷,您可能必须创建自己的 Kubernetes YAML 清单。

    apiVersion: v1
    kind: Pod
    metadata:
      name: couchbase-backup
    spec:
      containers:
      - name: couchbase-backup
        image: couchbase
        command: ["/opt/couchbase/bin/cbbackup"]
        args: ["-m", "full", "http://{IP}:61006", "/backup-1", "-u", "admin", "-p", "password", "-vvv"]
        volumeMounts:
        - name: storage
          mountPath: /backup-1
      volumes:
      - name: storage
        ...
    

    ✌️☮️

    【讨论】:

    • 谢谢@Rico,你没看错“the pod IP is 192.168.72.10 so the client is trying to authenticate from the same pod network but you are issuing the request from a different machine that is not in your Kubernetes cluster”,我试图实现从远程服务器的备份,这个备份我们可以认为类似于mysqldump/pg_dump。但是为 memcached 端口 11210 抛出问题。备份和恢复我已经使用 K8s 作业(如 cronjob 和作业)进行了配置。
    • 如果您认为答案正确/有帮助,您能接受吗?
    • 恐怕您将不得不做出一些安全妥协。他们禁用远程 SASL 身份验证是有原因的。您可以尝试在 couchbase 配置中禁用。
    • 使用 SASL,客户端需要发送挑战,这就是问题所在。
    • "外部可访问性,仅在 Couchbase 服务器的企业版中可用,意味着:" 感谢@Rico (docs.couchbase.com/server/current/learn/security/…。这是否意味着,我们可以在企业版中实现远程备份?.
    【解决方案2】:

    很遗憾,Couchbase 6.0 无法从外部网络进行备份。

    https://docs.couchbase.com/server/6.0/cli/cbbackup-tool.html#description

    cbbackup、cbrestore 和 cbtransfer 工具不与集群外部服务器节点的外部 IP 地址通信。对来自 Couchbase Server 集群中节点的数据执行备份、恢复或传输操作。它们仅与从集群中获得的节点列表中的节点进行通信。这也意味着,如果 Couchbase Server 安装时使用了默认 IP 地址,则无法使用外部主机名来访问它。

    6.5 的文档中没有此警告...我认为这是因为 6.5 引入了alternate addresses 用于从网络外部进行连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-16
      • 2014-09-29
      • 1970-01-01
      • 1970-01-01
      • 2019-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多