【问题标题】:Connect to MongoDB config server for Sharding on a docker container running on windows10连接到 MongoDB 配置服务器以在 windows10 上运行的 docker 容器上进行分片
【发布时间】:2021-08-09 17:35:03
【问题描述】:
  1. 我正在使用Windows 10 操作系统。
  2. 我的机器上安装了Docker for windows
  3. 我的机器上安装了mongo shell for Windows。
  4. 我正在使用来自 docker 的最新 mongo 映像创建配置服务器。

我正在尝试创建配置服务器(在副本集中;一个主服务器和两个辅助服务器)以便为 MongoDB 设置分片。如果我将 mongod 服务器创建为副本集,我可以连接到它们,而无需指定 --configsvr 参数。但是当我指定--configsvr 参数时,它会失败并出现以下错误-

连接到: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb 错误:无法连接到服务器 127.0.0.1:27017,连接尝试 失败:SocketException:连接到 127.0.0.1:27017 :: 时出错 by :: 无法建立连接,因为目标机器主动 拒绝了。 : 连接@src/mongo/shell/mongo.js:374:17 @(connect):2:6 异常:连接失败退出代码 1

案例 1 - 创建 3 个 mongod 服务器作为副本集

第 1 步:- 创建 3 个 mongod 容器亚洲、美国和欧洲。

C:\> docker run -d -p 40001:27017 -v C:/mongodata/data/db --name asia mongo mongod --bind_ip=0.0.0.0 --replSet "rs0"
C:\> docker run -d -p 40002:27017 -v C:/mongodata/data/db --name europe mongo mongod --bind_ip=0.0.0.0 --replSet "rs0"
C:\> docker run -d -p 40003:27017 -v C:/mongodata/data/db --name america mongo mongod --bind_ip=0.0.0.0 --replSet "rs0"

第 2 步:- 执行 docker ps

第 3 步:- 使用 docker exec 连接到名为 asia 的容器。

C:\> docker exec -it asia mongo

结果:- 连接成功

第 4 步:- 从 mongoshell 连接到 asia 容器:-

案例 2 - 创建 3 个 mongod 服务器作为配置服务器作为副本集的一部分

第 1 步:- 创建 3 个 mongod 容器 asiaCS、americaCS 和 europeCS 作为配置服务器。

C:/> docker run -d -p 30001:27017 -v C:/mongodata/data/db --name asiaCS mongo mongod --configsvr --bind_ip=0.0.0.0 --replSet "rs1"
C:/> docker run -d -p 30002:27017 -v C:/mongodata/data/db --name europeCS mongo mongod --configsvr --bind_ip=0.0.0.0 --replSet "rs1"
C:/> docker run -d -p 30003:27017 -v C:/mongodata/data/db --name americaCS mongo mongod --configsvr --bind_ip=0.0.0.0 --replSet "rs1"

第 2 步:- 执行 docker ps

第 3 步:- 使用 docker exec 连接到名为 asiaCS 的容器。

docker exec -it asiaCS mongo

结果:- 连接失败

第 4 步:- 从 mongoshell 连接到容器 asiaCS:-

这里唯一的区别是启动 mongod 实例作为 MongoDB 分片的配置服务器所需的 --configsvr 参数。有没有人遇到过这样的问题。

附: - 我将 bind_ip 保持为 0.0.0.0 只是为了测试来自 mongoshell 的连接,但在非本地实例上对生产执行相同操作时要小心。

【问题讨论】:

    标签: mongodb docker windows-10


    【解决方案1】:

    配置服务器是 27019。

    当你添加 --configsvr 时,你也需要更改端口映射:

    C:/> docker run -d -p 30001:27019 -v C:/mongodata/data/db --name asiaCS mongo mongod --configsvr - -bind_ip=0.0.0.0 --replSet "rs1"

    【讨论】:

    • 感谢您指出亚历克斯。但我仍然得到同样的错误。奇怪的是docker exec 仍在尝试通过 127.0.0.1:27017 进行连接。 docker ps 在 PORTS 列下显示 27017/tcp, 0.0.0.0:30001->27019/tcp
    • 你还需要在docker exec -it asiaCS mongo --port 27019中指定端口。
    • 干杯亚历克斯。像魅力一样工作。
    • 请考虑university.mongodb.com/courses/M103 它可能会回答您的其他问题,并且可能会回答您尚未提出的更多问题。没有粉碎部分,它可以在一两天内完成。它们是免费的,但制作非常专业,非常容易理解
    猜你喜欢
    • 2021-08-12
    • 2020-09-28
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2020-01-01
    • 2017-06-02
    相关资源
    最近更新 更多