Couchbase cbbackup从远程服务器失败,该远程服务器与在K8s上运行的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。
对此有任何想法吗?我陷入了这个问题。
更新 我无法使用公开的内存缓存端口进行cbbackup,因为在官方document中未添加任何选项。 在Couchbase论坛上发布的This答案提供了一些详细信息。如果是这样,则不可能从远程系统运行成功的cbbackup。但是我不认为Couchbase团队采用这种方式设计。希望有办法实现相同的目标。
答案 0 :(得分:2)
这里的问题看起来像?,是您在榻榻米服务器/存储桶上配置了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
...
✌️☮️
答案 1 :(得分:2)
不幸的是,使用Couchbase 6.0无法从外部网络进行备份。
https://docs.couchbase.com/server/6.0/cli/cbbackup-tool.html#description
cbbackup,cbrestore和cbtransfer工具不与群集外部服务器节点的外部IP地址通信。对来自Couchbase Server群集内节点的数据执行备份,还原或传输操作。它们仅与集群中获得的节点列表中的节点通信。这也意味着,如果使用默认IP地址安装了Couchbase Server,则无法使用外部主机名来访问它。
6.5的文档中没有此警告……我认为这是因为6.5引入了alternate addresses用于从网络外部进行连接。