mongoDB SRV Uri 记录

故事背景

采用MongoDB Atlas的入门级服务时,发现mongoDB 3.6+的链接已经升级了,大概长这个样子

mongodb+srv://用户名:密码@cluster0.xxx.mongodb.net/数据库名?retryWrites=true&w=majority
  • spring boot该如何配置
spring.data.mongodb.uri=mongodb+srv://用户名:密码@cluster0.xxx.mongodb.net/数据库名?retryWrites=true&w=majority

对,就是这么简单粗暴,这种方式有个好处:

  • 官方版
Once your records are set up, you can easily change port numbers without impacting clients and also add and remove cluster members.
# 翻译
设置SRV记录后,您可以轻松更改端口号而不会影响客户端,还可以添加和删除集群成员。

怎么样?很 nice 吧.

部署的问题

  • 起初,当我白piao到数据库时挺开心的,将配置加入程序中,用IDE(Windows下)启动,一切完美,可是,当我把程序发布到centos时,问题来了,SRV记录如何也不能正常返回,几经搜查,无果,反正肯定确定的是这个问题跟网络有关(什么网络安全组,SELinux,防火墙都检查了);
  • 想啊想,为什么呢?
  • 直到有天突然想到会不会是网卡导致的,因为一般云商的服务器一般都是多网卡,而我的开发电脑则是单网卡,好了,既然是这样那么就继续找找不同吧

憋出来了

出于安全考虑,Linux系统默认是禁止数据包转发的。所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将数据包发往本机另一块网卡,该网卡根据路由表继续发送数据包。这通常是路由器所要实现的功能。
要让Linux系统具有路由转发功能,需要配置一个Linux的内核参数net.ipv4.ip_forward。这个参数指定了Linux系统当前对路由转发功能的支持情况;其值为0时表示禁止进行IP转发;如果是1,则说明IP转发功能已经打开

修改/etc/sysctl.conf 配置文件

在sysctl.conf配置文件中有一项名为net.ipv4.ip_forward的配置项,用于配置Linux内核中的net.ipv4.ip_forward参数。其值为0,说明禁止进行IP转发;如果是1,则说明IP转发功能已经打开。

vi /usr/lib/sysctl.d/00-system.conf
# 添加
net.ipv4.ip_forward=1
# 重启服务
systemctl restart network

测试

  • 运行应用程序后,发现问题解决,SRV记录能够正常返回,又解决了一个看似没有用的问题

你可能感兴趣的:(mongoDB SRV Uri 记录)