Docker Compose部署Couchbase出现DurabilityImpossibleError写入失败
问题根源
你在单节点Couchbase实例上创建bucket时指定了durabilityMinLevel=majorityAndPersistActive,该持久化级别要求数据至少被集群多数节点接收且在活跃节点持久化到磁盘,单节点集群完全无法满足该要求,所有写入请求都会被直接拒绝,这是报错的核心原因。
单节点修复方案(推荐本地开发使用)
- 修改初始化脚本里的bucket创建配置,删除
-d durabilityMinLevel=majorityAndPersistActive参数,或者将值改为none,适配本地开发不需要高持久化保障的场景。 - 调整业务代码里的写入配置,删除显式指定的
durabilityLevel、durabilityPersistTo、durabilityReplicateTo参数,或者显式将durabilityLevel设为0(对应无持久化要求)。 - 清理之前的挂载数据目录
./docker-data/couchbase/node3,重新启动服务完成初始化即可,单节点即可正常写入数据。
多节点集群稳定运行方案(如需模拟生产集群环境)
如果需要搭建多节点集群验证高可用逻辑,可通过配置Docker静态IP解决重启IP变动问题:
- 在docker-compose中自定义网段,给每个Couchbase节点分配固定静态IP,示例配置如下:
version: '3.4' networks: couchbase-net: ipam: config: - subnet: 172.20.0.0/16 services: couchbase-node1: image: couchbase/server volumes: - ./docker-data/couchbase/node1:/opt/couchbase/var networks: couchbase-net: ipv4_address: 172.20.0.11 ports: - 8091:8091 - 8092:8092 - 8093:8093 - 8094:8094 - 11210:11210 couchbase-node2: image: couchbase/server volumes: - ./docker-data/couchbase/node2:/opt/couchbase/var networks: couchbase-net: ipv4_address: 172.20.0.12 couchbase-node3: image: couchbase/server volumes: - ./docker-data/couchbase/node3:/opt/couchbase/var networks: couchbase-net: ipv4_address: 172.20.0.13
- 初始化脚本里的add server操作直接使用上面配置的固定静态IP即可,重启服务IP不会变动,集群不会失效。同时该场景下bucket的durability级别可以保留为
majorityAndPersistActive,只需确保bucket的副本数配置不低于1即可满足持久化要求。
内容的提问来源于stack exchange,提问作者A Fader Darkly
相关产品推荐
相关产品推荐

