You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bitnami MongoDB ReplicaSet部署后认证失败问题求助

MongoDB副本集认证失败问题排查与解决

问题场景

基于Bitnami MongoDB镜像,通过docker-compose搭建1主1从1仲裁的副本集用于Spring Boot事务功能,但启动后primary节点出现SCRAM认证失败、密钥缓存刷新失败,arbiter节点也报认证错误。

原docker-compose配置:

version: '2'

services:
  mongodb-primary:
    image: 'bitnami/mongodb:latest'
    environment:
      - MONGODB_ADVERTISED_HOSTNAME=mongodb-primary
      - MONGODB_REPLICA_SET_MODE=primary
      - MONGODB_ROOT_PASSWORD=password123
      - MONGODB_REPLICA_SET_KEY=replicasetkey123

    volumes:
      - 'mongodb_master_data:/bitnami'

  mongodb-secondary:
    image: 'bitnami/mongodb:latest'
    depends_on:
      - mongodb-primary
    environment:
      - MONGODB_REPLICA_SET_MODE=secondary
      - MONGODB_INITIAL_PRIMARY_HOST=mongodb-primary
      - MONGODB_INITIAL_PRIMARY_PORT_NUMBER=27017
      - MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD=password123
      - MONGODB_REPLICA_SET_KEY=replicasetkey123

  mongodb-arbiter:
    image: 'bitnami/mongodb:latest'
    depends_on:
      - mongodb-primary
    environment:
      - MONGODB_REPLICA_SET_MODE=arbiter
      - MONGODB_INITIAL_PRIMARY_HOST=mongodb-primary
      - MONGODB_INITIAL_PRIMARY_PORT_NUMBER=27017
      - MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD=password123
      - MONGODB_REPLICA_SET_KEY=replicasetkey123

volumes:
  mongodb_master_data:
      driver: local

错误日志

Primary节点关键错误:

"id":4939300, "ctx":"monitoring-keys-for-HMAC","msg":"Failed to refresh key cache","attr":{"error":"NotYetInitialized: Cannot use non-local read concern until replica set is finished initializing.","nextWakeupMillis":5400}}

"ctx":"conn34","msg":"Authentication failed","attr":{"mechanism":"SCRAM-SHA-256","speculative":true,"principalName":"root","authenticationDatabase":"admin","remote":"10.89.1.52:54010","extraInfo":{},"error":"AuthenticationFailed: SCRAM authentication failed, storedKey mismatch"}}

Arbiter节点错误:

MongoServerError: Authentication failed.

解决方案

1. 清理残留数据卷

旧数据卷可能存储了不匹配的认证信息,执行以下命令彻底清除:

docker-compose down -v

2. 添加健康检查确保服务就绪

depends_on仅等待容器启动,不代表MongoDB服务完成初始化。给primary节点添加健康检查,让secondary和arbiter仅在primary服务就绪后启动:

修改后的完整docker-compose配置:

version: '2.4'  # 需要使用2.4+版本支持condition

services:
  mongodb-primary:
    image: 'bitnami/mongodb:7.0'  # 固定版本避免兼容性问题,可替换为稳定版本
    environment:
      - MONGODB_ADVERTISED_HOSTNAME=mongodb-primary
      - MONGODB_REPLICA_SET_MODE=primary
      - MONGODB_ROOT_PASSWORD=password123
      - MONGODB_REPLICA_SET_KEY=replicasetkey123
    volumes:
      - 'mongodb_master_data:/bitnami'
    healthcheck:
      test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')", "--username", "root", "--password", "password123", "--authenticationDatabase", "admin"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 20s  # 给primary足够的初始化时间

  mongodb-secondary:
    image: 'bitnami/mongodb:7.0'
    depends_on:
      mongodb-primary:
        condition: service_healthy
    environment:
      - MONGODB_REPLICA_SET_MODE=secondary
      - MONGODB_INITIAL_PRIMARY_HOST=mongodb-primary
      - MONGODB_INITIAL_PRIMARY_PORT_NUMBER=27017
      - MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD=password123
      - MONGODB_REPLICA_SET_KEY=replicasetkey123

  mongodb-arbiter:
    image: 'bitnami/mongodb:7.0'
    depends_on:
      mongodb-primary:
        condition: service_healthy
    environment:
      - MONGODB_REPLICA_SET_MODE=arbiter
      - MONGODB_INITIAL_PRIMARY_HOST=mongodb-primary
      - MONGODB_INITIAL_PRIMARY_PORT_NUMBER=27017
      - MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD=password123
      - MONGODB_REPLICA_SET_KEY=replicasetkey123

volumes:
  mongodb_master_data:
      driver: local

3. 验证副本集状态

启动后,进入primary容器验证副本集状态:

docker-compose exec mongodb-primary mongosh --username root --password password123 --authenticationDatabase admin
rs.status()

确认secondary和arbiter已加入副本集且状态正常。

问题原因

  1. 初始化时序问题:secondary/arbiter在primary尚未完成副本集初始化时就发起认证请求,导致认证失败。
  2. 旧数据残留:之前的MongoDB数据卷中存储的SCRAM密钥与新配置不匹配,引发storedKey mismatch错误。
  3. 镜像版本不稳定:latest标签可能自动更新到未兼容的版本,导致节点间通信异常。

内容的提问来源于stack exchange,提问作者DCO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 13:22:10