我有一个spring MVC application
,并且正在将其连接到MongoDB
集群
这在application.properties
文件中
mongodb.url=mongodb://userName:Password@xx.xx.x.xx:27017,xx.xx.x.xx:27017,xx.xx.x.xx:27017/?authSource=admin
该群集部署在GCP
上,其中有一台主服务器和2台辅助服务器。
但是,在部署后,当我按下API
以获取数据时,我得到了一个错误
{java.net.UnknownHostException: mongodb-3-arbiters-vm-0}}, {address=mongodb-3-servers-vm-1:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketException: mongodb-3-servers-vm-1}, caused by {java.net.UnknownHostException: mongodb-3-servers-vm-1}}
外部IPs
被映射到GCP
仪表板上的服务器名称。 xx.xx.xx.xx:27017 to mongodb-3-servers-vm-1:27017
,从而导致未知的主机异常。怎样避免这种情况?
答案 0 :(得分:0)
连接到副本集时,连接字符串中提供的主机名,IP地址和端口号是种子列表。
驱动程序将连接到种子列表中的主机,以进行初始连接。它使用此连接来执行服务器发现。它查询首先连接的服务器的主机名,端口号以及副本集其他成员的状态。服务器从副本集配置文档中获取此信息。
这意味着在运行rs.initiate
或rs.add
时使用的主机名和端口号必须对副本集成员和将要连接的每个客户端主机都可以解析。
有一个功能支持传递远程客户端一个不同的主机名,类似于水平分割DNS,但是在git存储库之外,我没有提到它。