【问题标题】:Connect to MongoDB query router for Sharding on a docker container running on windows10连接到 MongoDB 查询路由器以在 windows10 上运行的 docker 容器上进行分片
【发布时间】:2021-08-12 16:39:56
【问题描述】:

这是我的previous question 的后续。 Alex Blex's solution 用于连接到配置服务器效果很好。但是我在连接到 MongoDB 查询路由器时遇到了同样的问题。

下面是我用来创建 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 :: 无法建立连接,因为目标机器主动 拒绝了。 : 连接@src/mongo/shell/mongo.js:374:17 @(connect):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。

【问题讨论】:

    标签: mongodb docker windows-10


    【解决方案1】:

    所以我想出了这个。显然配置服务器是轻量级的,不存储任何数据。因此,我们不需要将其绑定到卷。我首先将所有配置服务器绑定到一个固定 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 docker exec'd 进入容器

    现在在连接 mongos 时,如果它抛出一个连接被拒绝的错误(问题中提到的那个),您可以使用以下命令 -

    docker exec -it QR mongos --configdb "rs1/172.30.35.165:30001,172.30.32.73:30002,172.30.42.189:30003"
    

    上述命令将在没有分离模式的情况下启动 mongos,并且日志将开始出现在您的 CMDPowerShell(无论您以哪种方式运行命令)控制台上。

    我的本​​地有 mongo shell,我打开了另一个 CMD 提示符并执行了以下命令 -

    C:\MongoShell\bin> mongosh --host IpAddressOfMongos --port 27017
    

    瞧,它连接成功。然后,您可以关闭在附加模式下运行 docker exec 命令的初始控制台。

    mongos的IP地址可以通过docker inspect QR找到。

    【讨论】:

      猜你喜欢
      • 2021-08-09
      • 2016-10-05
      • 2020-06-21
      • 1970-01-01
      • 1970-01-01
      • 2019-03-28
      • 2021-07-02
      • 1970-01-01
      • 2018-03-15
      相关资源
      最近更新 更多