【发布时间】:2020-07-14 20:38:30
【问题描述】:
我在 Google Compute Engine (GCE) 上运行了三个 container optimised VMs,每个 Bitnami MongoDB Docker Container,一个应该是主要的 Mongo 数据库实例,两个应该是辅助的。
在创建虚拟机时,我将容器镜像指定为 "bitnami/mongodb:latest" 并根据 bitnami documentation 使用 gce-container-declaration 设置环境变量(也可以通过 UI在“高级容器选项”下)
我可以使用 via MONGODB_ROOT_PASSWORD 定义的密码连接到主 mongodb,并且其他 VM 已启动并正在侦听它们的 27017 端口。虚拟机也可以相互访问,因此 VPC 和防火墙规则可以使用 Port 27017, 22 and 80 INGRESS / EGRESS。
但是,当我想在主节点上获取副本集状态 rs.status() 时,我总是收到 "errmsg" : "no replset config has been received" 错误。所以节点不会创建副本集......
使用 Docker-Compose 可以开箱即用,Bitnami Image 也应该自动初始化副本集,不是吗?
我尝试了很多方法,包括将 MONGODB_ADVERTISED_HOSTNAME 与 custome GCE VM 主机名一起使用,但没有任何效果,而且我不知道如何找到问题。
主节点 - 容器环境。变量:
MONGODB_ROOT_PASSWORD = 'password123'
MONGODB_REPLICA_SET_NAME = 'rep'
MONGODB_REPLICA_SET_MODE = 'primary'
MONGODB_REPLICA_SET_KEY = '321abc123'
Secondary1 节点 - 容器环境。变量:
MONGODB_PRIMARY_ROOT_PASSWORD = 'password123'
MONGODB_REPLICA_SET_NAME = 'rep'
MONGODB_PRIMARY_HOST = '${VPC_LOCAL_IP_PRIMARY_NODE}'
MONGODB_PRIMARY_PORT_NUMBER = '27017'
MONGODB_REPLICA_SET_MODE = 'secondary'
MONGODB_REPLICA_SET_KEY = '321abc123'
Secondary2 节点 - 容器环境。变量:
MONGODB_PRIMARY_ROOT_PASSWORD = 'password123'
MONGODB_REPLICA_SET_NAME = 'rep'
MONGODB_PRIMARY_HOST = '${VPC_LOCAL_IP_PRIMARY_NODE}'
MONGODB_PRIMARY_PORT_NUMBER = '27017'
MONGODB_REPLICA_SET_MODE = 'secondary'
MONGODB_REPLICA_SET_KEY = '321abc123'
【问题讨论】:
-
" 2018 年 10 月 16 日之后发布的所有 MongoDB 版本(3.6.9 或更高版本、4.0.4 或更高版本或 4.1.5 或更高版本)均根据当前不接受的服务器端公共许可证获得许可作为开源倡议 (OSI) 的开源许可证。”我不知道。感谢您提出这个问题!你觉得 Bitnami 怎么样?
-
您似乎还没有启动副本集,这也意味着您不能拥有任何主节点或辅助节点,因为它们只存在于 您没有的副本集中'似乎没有。
-
在尝试使用 GCP 之前,先在本地机器上运行它。
-
未启动是什么意思?以 docker compose 为例,初始化工作开箱即用,因为“bitnami”处理它......
-
我在以下线程中找到了一个可接受的答案:stackoverflow.com/questions/60822543/…
标签: mongodb docker google-cloud-platform google-compute-engine bitnami