简体   繁体   中英

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

  1. I am using Windows 10 Operating system.
  2. I have Docker for windows installed on my machine.
  3. I have mongo shell for Windows installed on my machine.
  4. I am creating the config servers using the latest mongo image from docker.

I am trying to create config servers (in a replica set; one primary and two secondaries) in order to set up Sharding for MongoDB. I am able to connect to the mongod servers if I create them as replica sets, without specifying the --configsvr parameter. But when I specify the --configsvr parameter, it fails with below error -

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

Case 1 - Creating 3 mongod servers as a replica set

Step 1:- Creating 3 mongod containers asia, america and europe.

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"

Step 2:- Execute docker ps 在此处输入图像描述

Step 3:- Using docker exec to connect to container named asia.

C:\> docker exec -it asia mongo

RESULT:- Successfully connected在此处输入图像描述

Step 4:-Connecting to the container asia from mongoshell:- 在此处输入图像描述

Case 2 - Creating 3 mongod servers as config servers as part of a replica set

Step 1:- Creating 3 mongod containers asiaCS, americaCS and europeCS as config servers.

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"

Step 2:- Execute docker ps 在此处输入图像描述

Step 3:- Using docker exec to connect to container named asiaCS.

docker exec -it asiaCS mongo

RESULT:- Failed to connect在此处输入图像描述

Step 4:-Connecting to the container asiaCS from mongoshell:- 在此处输入图像描述

The only difference here is the --configsvr parameter required to start a mongod instance as a config server for MongoDB sharding. Has anyone encountered such an issue before.

PS - I have kept the bind_ip to 0.0.0.0 just to test connection from mongoshell, but tread with caution when doing the same for Production on non-local instances.

It's 27019 for config servers.

When you add --configsvr you need to change port mapping too:

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"

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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