连接到MongoDB查询路由器,以便在windows10上运行的docker容器上进行切分
这是我的后续行动。连接到配置服务器非常有用。但我在连接MongoDB查询路由器时也面临同样的问题连接到MongoDB查询路由器,以便在windows10上运行的docker容器上进行切分,mongodb,docker,windows-10,Mongodb,Docker,Windows 10,这是我的后续行动。连接到配置服务器非常有用。但我在连接MongoDB查询路由器时也面临同样的问题 docker run -d -p 40001:27017 --name QR --hostname QR mongo mongos --configdb "rs1/172.30.35.165:30001,172.30.32.73:30002,172.30.42.189:30003" --bind_ip 0.0.0.0 下面是我用来创建mongos服务器的命令 docker ru
docker run -d -p 40001:27017 --name QR --hostname QR mongo mongos --configdb "rs1/172.30.35.165:30001,172.30.32.73:30002,172.30.42.189:30003" --bind_ip 0.0.0.0
下面是我用来创建mongos服务器的命令
docker run -d -p 40001:27017 -v C:/mongodata/data/db --name QR mongo mongos --configdb rs1/172.30.35.165:30001,172.30.32.73:30002,172.30.42.189:30003 --bind_ip 0.0.0.0 --port 27017
但我在执行docker exec-it QR mongo-port 27017时出现以下错误:-
连接到:
mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
错误:无法连接到服务器127.0.0.1:27017,尝试连接
失败:SocketException:连接到127.0.0.1:27017时出错::导致
by::无法连接,因为目标计算机处于活动状态
拒绝了connect@src/mongo/shell/mongo.js:374:17@(连接):2:6
异常:连接失败,退出代码为1
下面是配置服务器的复制配置详细信息-
config = {
"_id": "rs1",
"configsvr": true,
"members":
[
{
"_id": 0,
"host": "6ed1d953f979:27019"
},
{
"_id": 1,
"host": "086f0ef5c955:27019"
},
{
"_id": 2,
"host": "391c9c07b341:27019"
}
]
}
这是容器ID和IP地址
------------------------------------------
Server IP Address Container ID
------------------------------------------
asiaCS 172.30.35.165 6ed1d953f979
europeCS 172.30.32.73 086f0ef5c955
americaCS 172.30.42.189 391c9c07b341
我甚至不确定是否正确配置了mongos。所以我想出了这个办法。显然,配置服务器很轻,不存储任何数据。因此,我们不需要将其绑定到卷。我首先将所有配置服务器绑定到一个固定的IP(这样docker就不会在每次我停止并启动容器时为它们分配一个新的IP)。但是为了回答这个问题,我将使用问题中提到的IP。我使用下面的命令创建了一个查询路由器
docker run -d -p 40001:27017 --name QR --hostname QR mongo mongos --configdb "rs1/172.30.35.165:30001,172.30.32.73:30002,172.30.42.189:30003" --bind_ip 0.0.0.0
然后通过运行docker exec-it QR mongo
现在,当连接到mongos时,如果它抛出连接拒绝错误(问题中提到的错误),您可以使用以下命令-
docker exec -it QR mongos --configdb "rs1/172.30.35.165:30001,172.30.32.73:30002,172.30.42.189:30003"
C:\MongoShell\bin> mongosh --host IpAddressOfMongos --port 27017
上述命令将在不使用分离模式的情况下启动mongos,并且日志将开始出现在CMD
或PowerShell
(无论您以何种方式运行该命令)控制台上
我在本地安装了mongoshell,打开另一个CMD
提示符并执行以下命令-
docker exec -it QR mongos --configdb "rs1/172.30.35.165:30001,172.30.32.73:30002,172.30.42.189:30003"
C:\MongoShell\bin> mongosh --host IpAddressOfMongos --port 27017
瞧,它连接成功了。然后,您可以关闭在附加模式下运行docker exec命令的初始控制台
通过执行docker inspect QR
,可以找到mongos的IP地址