【发布时间】:2021-08-09 17:35:03
【问题描述】:
- 我正在使用
Windows 10操作系统。 - 我的机器上安装了
Docker for windows。 - 我的机器上安装了
mongo shellfor Windows。 - 我正在使用来自 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"
第 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"
第 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