连接到 MongoDB 配置服务器以在 docker 容器 运行 上进行分片 windows10
Connect to MongoDB config server for Sharding on a docker container running on windows10
- 我正在使用
Windows 10
操作系统。
- 我的机器上安装了
Docker for windows
。
- 我的机器上安装了
mongo shell
for Windows。
- 我正在使用来自 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"
- 我正在使用
Windows 10
操作系统。 - 我的机器上安装了
Docker for windows
。 - 我的机器上安装了
mongo shell
for Windows。 - 我正在使用来自 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"