副本集 my-mongo-set 的新配置 1 中描述的主机没有映射到此节点

2023-11-29

我正在使用 Docker 设置 MongoDB 集群。

我有一个 bash 脚本,它启动三个共享网桥的容器,以便它们可以相互通信。我可以连接到网络中的所有 MongoDB 数据库。

NodeJS 脚本将集群成员添加到网络中。

docker rm -v -f mongo0
docker rm -v -f mongo1
docker rm -v -f mongo2

docker network create my-mongo-cluster

docker run -d \
-p 30002:27017 \
--name mongo0 \
--net my-mongo-cluster \
mongo mongod --replSet my-mongo-set

docker run -d \
-p 30003:27017 \
--name mongo1 \
--net my-mongo-cluster \
mongo mongod --replSet my-mongo-set

docker run -d \
-p 30004:27017 \
--name mongo2 \
--net my-mongo-cluster \
mongo mongod --replSet my-mongo-set

node setupDatabase.js

NodeJS 脚本:

async function configure() {
    let database = await connect();

    let adminDb = database.admin();

    await addMembers(adminDb);

    await returnStatus(adminDb);
}

async function connect() {
    return await MongoClient.connect("mongodb://localhost:30002/test");
}

async function addMembers(admin) {
    var config = {
        "_id" : "my-mongo-set",
        "members" : [
            {
                "_id" : 0,
                "host" : "mongo0:30002"
            },
            {
                "_id" : 1,
                "host" : "mongo1:30003"
            },
            {
                "_id" : 2,
                "host" : "mongo2:30004"
            }
        ]};

    return admin.command({replSetInitiate : config});
}

async function returnStatus(admin) {
    return admin.command({replSetGetStatus : 1});
}

每当我调用addMembers我收到以下错误:

副本集 my-mongo-set 的新配置 1 中描述的主机没有映射到此节点

根据我的理解,这意味着 MongoDB 无法连接到给定的成员。但它们都有自己的名字并共享一个网桥。所以他们应该能够相互连接。

有什么想法导致这个问题吗?


复制集配置是容器到容器的,因此需要内部容器地址和端口container-name:27017

var config = {
    "_id" : "my-mongo-set",
    "members" : [
        {
            "_id" : 0,
            "host" : "mongo0:27017"
        },
        {
            "_id" : 1,
            "host" : "mongo1:27017"
        },
        {
            "_id" : 2,
            "host" : "mongo2:27017"
        }
    ]};

可以通过 Docker 映射端口进行连接,但随后您需要使用 Docker 主机可以响应的主机名/地址。它还将包括不必要的网络跃点来退出和返回容器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

副本集 my-mongo-set 的新配置 1 中描述的主机没有映射到此节点 的相关文章

随机推荐

  • 计算两个日期之间的工作日数

    我正在尝试获取 plpgsql 中两个日期之间的工作日数 以下是我的代码 CREATE FUNCTION weekdays DATE DATE RETURNS INTEGER AS DECLARE d date 1 weekdays int
  • Google GeoCoding API - 返回 ZERO_RESULTS 但位置显示在 Google 地图上

    我正在使用 Google GeoCode API 从地址搜索位置并获取该位置的 LAT LON 信息 从API我总是得到ZERO RESULTS就好像我从谷歌地图中搜索地址一样 它会显示位置 我搜索的地址是 5989 Route 6N Ed
  • 如何证明 Coq 中的两个 Fibonacci 实现相等?

    我有两个斐波那契实现 如下所示 我想证明它们在功能上是等效的 我已经证明了自然数的性质 但是这个练习需要另一种我无法弄清楚的方法 我使用的教科书介绍了 Coq 的以下语法 因此应该可以使用这种表示法来证明相等性
  • Grand Central Dispatch 中线程限制的解决方法?

    With 大中央快讯 可以轻松地在非主线程上执行耗时的任务 避免阻塞主线程并保持 UI 响应 只需使用dispatch async并在全局并发队列上执行任务 dispatch async dispatch get global queue
  • VBA计算图表对象中的系列数

    我知道这看起来很简单 但似乎对我不起作用 我在 Sheet1 上有一个图表 这是该表上唯一的图表 我想获取图表中的系列数 所以我用 Debug Print ThisWorkbook Sheets Sheet1 ChartObjects 1
  • 使用非 root 用户时出现 ffmpeg 错误

    我已经安装了 ffmpeg 如果您是 root 或使用 sudo 它可以完美工作 但在尝试作为非 root 用户使用它时会出错 我在测试 VPS 上执行了相同的安装 安装没有问题 因此它似乎与此 cPanel 服务器隔离 我无法确定原因 非
  • 如何为Python编译C扩展,其中C函数使用LAPACK库?

    我为 Python 编写了一个 C 扩展 并且该模块已成功编译在 so 文件中 但是 当我尝试在 Python 端使用包装的 C 函数 Python 中调用包装的 C 函数的测试代码 时 我得到以下信息ImportError ImportE
  • 如何在android回收站视图中放置Admob本机高级广告?

    我想将 admob 原生高级广告放置在 Android 应用程序中回收器视图的每 3 个位置 我想要 Admob 提供的模板 https github com googleads googleads mobile android nativ
  • 透明图像中的javafx鼠标事件

    如果您单击或拖动透明像素 JavaFx ImageView 不会触发鼠标事件 例如按下或拖动 是否有办法解决此问题并检测来自透明区域的鼠标事件 I have this image that i added into this very si
  • 我应该如何从 Selenium Java WebDriver 与 Flash 进行最佳交互

    我知道有很多类似的问题 例如 使用 WebDriver 交互 Flash 元素 过去曾被问到 但目前尚不清楚如何最好地与与 Selenium 的 Java WebDriver 相关的页面上的 Flash 元素进行交互 默认情况下 我知道它不
  • Java MySQL 准备语句批处理

    我正在尝试使用准备好的语句批处理 但遇到问题 以下代码不会给我错误 但它仅在表中插入地图的最后一个键 我不知道为什么 这肯定是一个非常愚蠢的错误 但这是我第一次使用 addBatch 方法 Class forName com mysql j
  • 使用 ScreenCapture.CaptureScreenshot 捕获并保存屏幕截图

    我一直在尝试截取屏幕截图 然后立即使用它来显示某种预览 有时它有效 有时则无效 我目前不在工作 而且我没有统一这台计算机 所以我将尝试即时重新创建它 这里和那里可能存在一些语法错误 public GameObject screenshotP
  • 使用coord_equal()时,使用cowplot::plot_grid()垂直对齐不同高度的图

    我正在尝试使用组合两个 ggplot 对象cowplot plot grid 并垂直对齐它们 这通常非常简单 使用align v dat1 lt data frame x rep 1 10 2 y 1 20 dat2 lt data fra
  • Java - 赋值的左侧必须是变量

    我正在尝试制作一个小程序来定位不同的城市 作为我的第一个 Java 项目 我想从 城市 类访问 GPS 类的变量 但我不断收到此错误 赋值的左侧必须是变量 任何人都可以向我解释我在这里做错了什么以及如何避免将来出现此类错误 public c
  • 在没有软件包的情况下在 python 中实现 Haar 小波

    我正在尝试编写一个代码来实现离散小波变换 haar 小波 dwt 而不使用 python 中的包 到目前为止 我找到了一个链接 他们实现了类似的功能 该链接这个小波变换实现正确吗 运行时没有报错 但最终结果不正确 我运行的代码是 def d
  • 根据所选的货币代码设置货币格式,无论设备的区域设置如何 (Swift)

    我正在尝试根据用户选择的货币来格式化货币 如果未选择货币 则使用设备的当前区域设置进行格式化 但是 我遇到了问题 我正在使用数字格式化程序将双精度格式格式化为货币字符串 let formatter NumberFormatter forma
  • 如何在 Windows 7 中使用 C/C++ 将麦克风静音?

    我使用 WinAPI 编写了一个将麦克风静音的程序 它似乎在 Windows XP 中完美运行 但在 Windows 7 中不起作用 是否可以在 Windows 7 中使用 WinAPI 控制麦克风音量或静音 void setVolume
  • 使用 JS 从 html 表中的第一列搜索值?

    我有这张桌子 th Example No th th Column 1 th tr td 3512376894 td td email protected td tr 我有一个脚本可以按所有列搜索值 但我想做的就是仅使用 td id 按第一
  • python ctypes,通过引用传递双指针

    问题 我正在尝试使用具有以下原型的 C 库中的函数 int glip get backends const char name size t count The name这里的争论就是问题所在 它是一个通过引用传递的二维字符数组 在 C 语
  • 副本集 my-mongo-set 的新配置 1 中描述的主机没有映射到此节点

    我正在使用 Docker 设置 MongoDB 集群 我有一个 bash 脚本 它启动三个共享网桥的容器 以便它们可以相互通信 我可以连接到网络中的所有 MongoDB 数据库 NodeJS 脚本将集群成员添加到网络中 docker rm