关于同内网下服务器域名的疑惑

2020-07-20 15:11:59 +08:00
 wujieyuan

在腾讯云同一个局域网下, 一台服务器部署业务, 一台服务器部署数据库, 两台服务器都有外网 ip, 数据库外网 ip 使用域名解析, 我直接在业务服务器上 ping 数据库的域名,延迟很低, 说明直接通过内网访问的. 所以我有个疑问, 业务系统中是否可以直接使用域名连接数据库, 不必区分内网 /外网地址, 这样开发部署的时候都很省事. 但是我发工单问腾讯云的客服, 他们说用外网域名 /ip 就走的外网,不会走内网, 有点搞不懂了.

3277 次点击
所在节点    程序员
27 条回复
Oktfolio
2020-07-20 15:20:20 +08:00
我直接在业务服务器上 ping 数据库的域名,延迟很低, 说明直接通过内网访问的

延迟低怎么就得出“直接通过内网访问的”这个结论的?
sha4yu
2020-07-20 15:27:11 +08:00
可以用 traceroute 或者 besttrace 确认下网络路由路径
wangritian
2020-07-20 15:27:14 +08:00
外网域名解析到外网 ip,实际访问一定走外网
你提到“这样开发部署的时候都很省事”,难道你开发线上用的都是这台数据库?
wujieyuan
2020-07-20 15:30:01 +08:00
@Oktfolio 测试出来的啊, 其他不在同一局域网下的域名延迟 10ms+, 但是同内网下是 1ms 以内, 基本可以确定
wujieyuan
2020-07-20 15:30:40 +08:00
@wangritian 个人项目, 为了省事和省钱, 就一台数据库
wujieyuan
2020-07-20 15:31:20 +08:00
@sha4yu 好的,谢谢, 我测试看看
opengps
2020-07-20 15:33:08 +08:00
“ping 数据库的域名,延迟很低, 说明直接通过内网访问的”。这个结论真的不准,最起码你 ping 一个大包才多少有点说服力
我可以给你举个实际测试过的例子,同为联通线路,我在一楼的独立联通入户网络,ping 三楼的独立联通入户网络。ping 结果为 6ms
monsterxx03
2020-07-20 15:35:35 +08:00
你 dig 下那个域名,看解析出来的是内网 ip 还是外网 ip 不就知道了..哪有用 ping 来判断的
wujieyuan
2020-07-20 15:38:48 +08:00
@opengps 这个不用杠了, ping 我敢肯定是走内网的, 因为我测试的机器都是腾讯云的, 根据经验 1ms 内绝对是走的内网, 但是我不确定数据库连接是不是走的内网
aihimmel
2020-07-20 15:40:55 +08:00
楼上都说了叫你 traceroute 一下
CodeCodeStudy
2020-07-20 15:41:47 +08:00
修改业务服务器的 /etc/hosts,把数据库服务器的域名指向其内网 IP
wujieyuan
2020-07-20 15:43:17 +08:00
@CodeCodeStudy 厉害了, 这个确实是个非常好的办法
maojy1989
2020-07-20 15:45:51 +08:00
https://s1.ax1x.com/2020/07/20/UhIh4A.png
https://s1.ax1x.com/2020/07/20/UhIWAH.png
https://s1.ax1x.com/2020/07/20/UhIfNd.png
刚用腾讯云试了一下 ping 内网 ip 和外网 ip 延迟是有点区别的,ping 外网 ip 走的也不是内网 ip
byzf
2020-07-20 16:00:16 +08:00
我记得 go 里有个库, 要加一个 /etc/nsswitch.conf 才会去用 hosts... 我曾经被恶心过一次.

总之 ping 的, dig 的, 你所使用的网络库最后解析出来的 ip, 都可能是不一样的...

一般都会把内网域名加到 hosts 的. 或者你内网自己弄个 dns. 否则内网的 https 的 api, 没法用 ip 地址请求.
opengps
2020-07-20 16:23:53 +08:00
@wujieyuan 既然我这算杠,那我就不评论了,楼层里有人告诉你判断内外网的方法了
XiaoxiaoPu
2020-07-20 16:42:50 +08:00
@opengps 哈哈,心疼。

访问外网 IP,至少要走到机房的外网超级核心的,只不过从外网超级核心直接又走回到内网超级核心了,网络包没有出机房,当然 ping 的延迟很低。但是毕竟走了外网超核,外网带宽、外网流量肯定要算的。
yelocat
2020-07-20 16:47:13 +08:00
/etc/host 解决问题
hulushangxian
2020-07-20 18:33:24 +08:00
@opengps 心痛
goodryb
2020-07-20 18:54:59 +08:00
所以没人提醒一下楼主,为何数据库会暴露在外网呢

一般原则
1 、应用与数据库部署在同一台机器上,数据库应该监听 127.0.0.1
2 、应用与数据库分开独立部署的,数据库应该监听内网地址
wujieyuan
2020-07-20 21:29:00 +08:00
@goodryb 个人项目, 省钱方便为主

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/691597

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX