0

我们已经使用服务器的本地 IP 配置了 MongoDB 副本集。

config = {_id: 'Prod', members: [ {_id: 0, host: '10.10.194.22:27017'}, {_id: 1, host: '10.10.194.23:27017'}, {_id: 2, host: '10.10.194.24:27017'}, {_id: 3, host: '10.10.194.25:27017', arbiterOnly: true}] };

它对我来说绝对没问题。当我们尝试从 Eclips 填充数据时,问题就开始了。

我们正在使用公共 IP 连接数据库,我们已经使用 Mongo-Explorer 测试了连接。

在填充数据时,它试图连接到服务器的本地 IP 并抛出错误 "connection timed out" 。

-塔拉克

4

1 回答 1

0

如果您作为单个节点连接到 MongoDB,则客户端驱动程序将连接到您指定的地址。

但是,如果您作为副本集连接到 MongoDB,客户端驱动程序将向服务器询问副本集配置,然后在配置中使用主机名或 IP 地址。如果使用这些主机名或 IP 地址无法从您的客户端访问数据库服务器节点,它将无法工作。

如果您使用的是 Java,区别在于您为 Mongo 对象使用的构造函数。如果您使用 List 构造函数之一,即使 List 中只有一个对象,它也会作为副本集连接,因此它不适合您。其他驱动程序具有类似的机制,但您没有提及您使用的是哪个驱动程序。

但是,如果您作为单个节点连接到副本集的一个节点,这应该可以工作。我不会说这是推荐的,但它应该可以工作。

于 2013-06-19T03:37:32.260 回答