3

我已经设置了一个包含 3 个节点的 MongoDB 副本集。所有服务器都位于同一个 VPC 中,但位于不同的可用区中。多亏了etc/hosts文件,当我描述在哪里可以找到其他节点时,我的副本集能够在节点之间进行通信。我的etc/hosts文件在所有 3 个节点上都是这样的。

127.0.0.1 localhost mongo0.example.com
Private IP 1 mongo0.example.com
Private IP 2 mongo1.example.com
Private IP 3 mongo2.example.com

现在,应用服务器需要连接到副本集。我应该在连接字符串中使用节点的 IP 地址还是应该使用主机名?

mongodb://private_ip1:27017,private_ip2:27017,private_ip3:27017/dbname?replicaSet=rs0 或者 mongodb://mongo0.example.com:27017,mongo1.example.com:27017,mongo2.example.com:27017/dbname?replicaSet=rs0

如果是后者(主机名),我应该/etc/hosts像每个 mongo 节点一样配置应用服务器吗?

4

1 回答 1

2

使用 IP 地址通常是个坏主意,因为它们可能需要多次更改。如果可能的话,我会坚持使用主机名。

是的,您需要确保所有副本成员任何应用服务器或客户端计算机都可以解析名称(必要时使用 /etc/hosts)。

另请参阅此线程以获得更彻底的解释。

于 2016-07-22T04:11:40.387 回答