小编Dan*_*l F的帖子

通过 ssh 隧道设置 MongoDB 副本

我正在尝试归档这样的东西 在此输入图像描述

dc1.com 上的 MongoDB 实例目前是独立的,On-Site 定期通过 ssh 隧道通过 mongodump 提取备份。

我现在想创建两个实例,一个在现场,一个在第二个数据中心,并使这三个实例成为副本集,以便备份几乎是即时的。这样,我就可以拥有一个现场备份,并在第二个数据中心中拥有一个备份,该备份始终是最新的。

如果 dc1.com 中的主 MongoDB 实例发生故障,那么就这样,无法提供任何数据,然后需要手动修复此问题,因为现场实例和辅助数据中心中的实例不应接管。这两个也不应该被质疑。他们只是作为备份。

我的问题是,当我将 --replSet 添加到主数据库,然后添加 rs.initialize() 时,该实例在某种程度上不会被识别为绑定到 localhost,而是绑定到 172.17.0.1,这是 docker 接口,我需要绑定以便容器可以连接到 MongoDB。如果我随后尝试通过rs.add("localhost:2001")dc2.com 上的实例添加成员,则会收到有关无法混合本地主机和非本地主机数据库的错误。主实例被识别为 172.17.0.1,而不是 localhost。

“副本集配置中的所有主机名都必须是本地主机引用,或者都必须是本地主机引用;找到二分之一”

然后,我使用/sf/ask/2019044751/来发出 ars.initiate({_id:"rs0", members: [{"_id":1, "host":"127.0.0.1:1000"}]})强制将 dc1.com 上的副本集初始化绑定到本地主机。但是当我尝试通过添加成员时,rs.add("localhost:2001")我仍然无法做到这一点。这不再是主机名错误,而是另一个错误,我不太记得了,因为我厌倦了尝试,不得不回滚所有内容。就像连接被拒绝一样。当我执行 a 时,mongo --port 2001我会在收到有关“isMaster”相关内容的警告后断开连接。

是否可以创建这种设置?我想做的就是避免在 MongoDB 上使用 TLS 并将备份绑定到全局可访问的接口(现场实例将位于防火墙后面,因此 0.0.0.0:1002 将无法公开访问)

replication mongodb ssh

5
推荐指数
1
解决办法
4742
查看次数

标签 统计

mongodb ×1

replication ×1

ssh ×1