通过网闸访问MongoDb副本集IP地址问题

jackie_Ga 2018-10-24 03:04:51
在10.235的内网3台虚拟机上部署了mongodb的副本集,同网段中的虚拟机上部署的Springboot工程可正常访问。
spring配置文件:
data:
mongodb:
uri: mongodb://iot:iot@10.235.10.10:27017,10.235.10.11:27018,10.235.10.12:27019/db

后来由于某些原因,数据库需要放到网闸后面,应用通过网闸访问。
网闸配置信息如下:
网闸 mongo
172.255.254.23:27017 10.235.10.10:27017
172.255.254.23:27018 10.235.10.10:27018
172.255.254.23:27019 10.235.10.10:27019

更改后spring配置文件:
data:
mongodb:
uri: mongodb://iot:iot@172.255.254.23:27017,172.255.254.23:27018,172.255.254.23:27019/db

现在遇到的问题是应用链接mongo异常,日志信息如下:

最终应用连接mongo使用的是真实的(网闸后)mongo服务ip地址,而不是网闸IP地址,所以超时:


但是给spring配置文件改为单节点可使用:
data:
mongodb:
uri: mongodb://iot:iot@172.255.254.23:27017/db

...全文
728 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
福尔摩斯.军 2019-08-26
  • 打赏
  • 举报
回复
引用 7 楼 ThreeeOrange 的回复:
MongoDB副本集的连接方式有误,正确的url格式是
mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[database][?options]] 在副本集连接串后添加replicaSet=your replicaSet name
福尔摩斯.军 2019-08-26
  • 打赏
  • 举报
回复
MongoDB副本集的连接方式有误,正确的url格式是
834148284 2019-08-22
  • 打赏
  • 举报
回复
834148284 2019-08-22
  • 打赏
  • 举报
回复
我用python连接也报类似错误,降低pymongo驱动一个大版本就好了,3.8降到2.9
jackie_Ga 2018-11-13
  • 打赏
  • 举报
回复
引用 1 楼 rucypli 的回复:
应该是副本集模式连接之后发现连接的ip和执行rs.status执行的结果不一致
有什么好的解决方法吗?
jackie_Ga 2018-11-13
  • 打赏
  • 举报
回复
暂时用了一个很傻的方式保证高可用。 如下的方式不是已副本集的方式启动的: data: mongodb: uri: mongodb://iot:iot@172.255.254.23:27017/db 所以,动态写了三个数据源uri: mongodb://iot:iot@172.255.254.23:27017/db、uri: mongodb://iot:iot@172.255.254.23:27018/db、uri: mongodb://iot:iot@172.255.254.23:27019/db 然后程序判断哪个是可用的。感觉好2B,就像是在写BUG。
rucypli 2018-11-06
  • 打赏
  • 举报
回复
应该是副本集模式连接之后发现连接的ip和执行rs.status执行的结果不一致

1,798

社区成员

发帖
与我相关
我的任务
社区描述
MongoDB相关内容讨论区
社区管理员
  • MongoDB社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧