繁体   English   中英

Google Compute Engine 上的 Bitnami MongoDB 副本集

[英]Bitnami MongoDB Replica Set on Google Compute Engine

我有三个在 Google Compute Engine (GCE) 上运行的容器优化虚拟机,每个虚拟机都有一个Bitnami MongoDB Docker Container ,一个应该是主要的 Mongo DB 实例,两个应该是辅助的。

创建虚拟机时,我将容器映像指定为“bitnami/mongodb:latest” ,并使用 gce gce-container-declaration根据 bitnami 文档设置环境变量(也可以通过“高级容器选项”下的 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与自定义 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'

事实上,这是一个奇怪的错误。 我试图自己启动一个实例,但没有遇到任何问题。

在这里你有一个我遵循的步骤的列表,以防你发现它作为指南有用:

1 - 在 GCP 中创建一个新的 VM 实例:为它分配一个名称(在我的情况下为 mongodb-01),并使用您所说的 UI 为其分配属性。

通过 UI 启用 VM 容器部署

通过 UI 指定环境变量

2 - 在 GCP 中创建第二个 VM 实例:为其指定一个名称(在我的例子中为 mongodb-02),并与前面的示例类似地进行操作。 在提供MONGODB_PRIMARY_HOST的值时,请记住使用分配给mongodb-01的私有地址。

3 - 通过 SSH 连接到mongodb-01您应该能够列出正在运行的容器并成功执行命令:

$ docker exec -it klt-mongodb-01-xyz mongo -u root -p
$ rep:PRIMARY> rs.status()
{
        "set" : "rep",
        "date" : ISODate("2020-07-22T13:40:15.172Z"),
        ...
        "members" : [
                {
                        "_id" : 0,
                        "name" : "10.XXX.0.29:27017",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        ...
                },
                {
                        "_id" : 1,
                        "name" : "10.XXX.0.34:27017",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        ...
                 }

注意:您还可以使用docker logs <container-name>进一步调查是否存在任何问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM