我应该为mongodb连接字符串使用主机名还是IP地址

我应该为mongodb连接字符串使用主机名还是IP地址,mongodb,replicaset,mongodb-replica-set,Mongodb,Replicaset,Mongodb Replica Set,我已经设置了一个包含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 mo

我已经设置了一个包含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


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

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

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

请参见,以获得更全面的解释