连接到 MongoDB 配置服务器以在 docker 容器 运行 上进行分片 windows10

Connect to MongoDB config server for Sharding on a docker container running on windows10

  1. 我正在使用 Windows 10 操作系统。
  2. 我的机器上安装了 Docker for windows
  3. 我的机器上安装了 mongo shell for Windows。
  4. 我正在使用来自 docker 的最新 mongo 映像创建配置服务器。

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

connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed: SocketException: Error connecting to 127.0.0.1:27017 :: caused by :: No connection could be ma de because the target machine actively refused it. : connect@src/mongo/shell/mongo.js:374:17 @(connect):2:6 exception: connect failed exiting with code 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 参数。有没有人遇到过这样的问题。

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

配置服务器为 27019。

添加 --configsvr 时,您还需要更改端口映射:

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