在腾讯云同一个局域网下, 一台服务器部署业务, 一台服务器部署数据库, 两台服务器都有外网 ip, 数据库外网 ip 使用域名解析, 我直接在业务服务器上 ping 数据库的域名,延迟很低, 说明直接通过内网访问的. 所以我有个疑问, 业务系统中是否可以直接使用域名连接数据库, 不必区分内网 /外网地址, 这样开发部署的时候都很省事. 但是我发工单问腾讯云的客服, 他们说用外网域名 /ip 就走的外网,不会走内网, 有点搞不懂了.
1
Oktfolio 2020-07-20 15:20:20 +08:00
我直接在业务服务器上 ping 数据库的域名,延迟很低, 说明直接通过内网访问的
延迟低怎么就得出“直接通过内网访问的”这个结论的? |
2
sha4yu 2020-07-20 15:27:11 +08:00
可以用 traceroute 或者 besttrace 确认下网络路由路径
|
3
wangritian 2020-07-20 15:27:14 +08:00
外网域名解析到外网 ip,实际访问一定走外网
你提到“这样开发部署的时候都很省事”,难道你开发线上用的都是这台数据库? |
4
wujieyuan OP @Oktfolio 测试出来的啊, 其他不在同一局域网下的域名延迟 10ms+, 但是同内网下是 1ms 以内, 基本可以确定
|
5
wujieyuan OP @wangritian 个人项目, 为了省事和省钱, 就一台数据库
|
7
opengps 2020-07-20 15:33:08 +08:00
“ping 数据库的域名,延迟很低, 说明直接通过内网访问的”。这个结论真的不准,最起码你 ping 一个大包才多少有点说服力
我可以给你举个实际测试过的例子,同为联通线路,我在一楼的独立联通入户网络,ping 三楼的独立联通入户网络。ping 结果为 6ms |
8
monsterxx03 2020-07-20 15:35:35 +08:00
你 dig 下那个域名,看解析出来的是内网 ip 还是外网 ip 不就知道了..哪有用 ping 来判断的
|
9
wujieyuan OP @opengps 这个不用杠了, ping 我敢肯定是走内网的, 因为我测试的机器都是腾讯云的, 根据经验 1ms 内绝对是走的内网, 但是我不确定数据库连接是不是走的内网
|
10
aihimmel 2020-07-20 15:40:55 +08:00 via Android
楼上都说了叫你 traceroute 一下
|
11
CodeCodeStudy 2020-07-20 15:41:47 +08:00 1
修改业务服务器的 /etc/hosts,把数据库服务器的域名指向其内网 IP
|
12
wujieyuan OP @CodeCodeStudy 厉害了, 这个确实是个非常好的办法
|
13
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 |
14
byzf 2020-07-20 16:00:16 +08:00 1
我记得 go 里有个库, 要加一个 /etc/nsswitch.conf 才会去用 hosts... 我曾经被恶心过一次.
总之 ping 的, dig 的, 你所使用的网络库最后解析出来的 ip, 都可能是不一样的... 一般都会把内网域名加到 hosts 的. 或者你内网自己弄个 dns. 否则内网的 https 的 api, 没法用 ip 地址请求. |
16
XiaoxiaoPu 2020-07-20 16:42:50 +08:00 1
@opengps 哈哈,心疼。
访问外网 IP,至少要走到机房的外网超级核心的,只不过从外网超级核心直接又走回到内网超级核心了,网络包没有出机房,当然 ping 的延迟很低。但是毕竟走了外网超核,外网带宽、外网流量肯定要算的。 |
17
yelocat 2020-07-20 16:47:13 +08:00
/etc/host 解决问题
|
18
hulushangxian 2020-07-20 18:33:24 +08:00
@opengps 心痛
|
19
goodryb 2020-07-20 18:54:59 +08:00
所以没人提醒一下楼主,为何数据库会暴露在外网呢
一般原则 1 、应用与数据库部署在同一台机器上,数据库应该监听 127.0.0.1 2 、应用与数据库分开独立部署的,数据库应该监听内网地址 |
22
Tink 2020-07-21 04:48:22 +08:00 via iPhone
延迟很低就是走内网?
|
23
xmr68yahoo 2020-07-21 06:50:33 +08:00 via iPhone 1
直接改 hosts
你这个情况标准的 端口回流 小于 1ms 不代表不计费 |
24
locoz 2020-07-21 09:18:26 +08:00 via Android 1
所以你是为了使用域名同时在外网和内网访问对应的服务?各类云应该都有提供内网 DNS 功能吧,直接用那个内网 DNS 设置个内网 IP,顶掉原先的外网 IP 就好了。设置完之后内网设备走内网,外网设备走外网,没有任何影响。
如果没有提供这种功能的话,就 hosts 或者自己用 dnsmasq 搭一个都可以,看你需不需要考虑后续的扩展性。 访问外网 IP 是一定走的外网的,延迟低只能说明人家机房做了回流,也就是封包走到外层交换机之后,交换机发现是个内网设备,就又给你送回来了。 |
26
z5864703 2020-07-21 12:02:08 +08:00
楼主没有基本网络知识,路由和交换机怕是都不知道干嘛用的,还理直气壮怼人,厉害了
楼上很多都说出答案了,ping 只能代表网络链路延迟,和是否内外网以及数据包路径没半毛钱关系 |
27
wakzz 2020-07-23 22:43:31 +08:00
楼主用一下 traceroute 命令,看一下请求域名的报文经过的路由就知道有没有走公网了。像阿里云下的主机域名,被其他阿里云主机请求时,实际上并没有走公网,报文仅在阿里云内部网络传输。
|