阿里云 DCDN 全站加速,会不断的做高频健康检查,以无法察觉的方式,吃掉源站流量(特别是按流量计算的)

2024-06-16 09:54:51 +08:00
 BD7JHH
场景描述:
源站开启了 2 个站点,其中 1 个是带域名的,另 1 个是默认站点

其中不带域名的访问(默认站点),直接返回 503 ,同时 SSL 握手阶段使用的是 empty 空值。
NGINX 默认站点配置如下:
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name _;
return 503;
set $empty "";
ssl_certificate data:$empty;
ssl_certificate_key data:$empty;
}

DCDN 配置了源站回源端口为 443 的时候,DCDN 的健康检查就会不断的发送不带域名的 "https://源站 ip" 请求,而且是高频的,1 天可以有几十万次的请求。

注意:即使配置了回源 SNI ,以及回源域名,同样会做这种检查。

阿里云工单对于这个问题的回复,其中有 1 条是说健康检查最多也就是 90s 一次,但实际上并不是如此

同时阿里云售后给出的所谓解决方案是:
后端建议是可以关闭静态资源 开启 2.0 架构看下(开启 2.0 架构会有短暂的业务不可用,需要您这边确认什么时候可以开启)

然而我再继续对这个解决方案提出问题:
1 、关闭静态资源是什么意思?从哪里关闭?有什么影响?
2 、2.0 架构是什么东西?从业务说明文档中并没看到?是否属于内测平台?

阿里云的回复原文如下:
1 、DCDN 主要实现动态和静态资源结合的加速产品,关闭静态资源意思是让资源都通过动态加速;
2 、2.0 是新架构,功能项比现在的 1.0 多哈

阿里云进一步回复:
1 、是的哈,静态关闭后,就是访问的时候不走静态了,是走的动态节点回源;
2 、2.0 架构没有具体的介绍页面哈,这个不是内测的,已经是上线的功能哈


这下问题就来了,产品的后端健康检查产生高频请求,阿里云的解决方案居然是让关掉静态资源缓存,所有请求都回源。
如果真的调到这样,DCDN 就纯粹的是 1 个不缓存的 PROXY ,吃掉 2 次流量( DCDN 吃 1 次,源站再吃 1 次)。

MD 这还要 DCDN 做什么?送钱吗?
同时说“2.0 是新架构,功能项比现在的 1.0 多哈 ”,单纯这样的解释,就好像骗路边啊婆啊伯买新产品一样。

如果 2.0 架构是已上线功能,用户为什么不能自己切换?而要阿里云工程师进行后台切换?严重怀疑这就是内测,找小白做内测。

结论:阿里云从不解决自身问题,一直忽悠。。。
2782 次点击
所在节点    云计算
15 条回复
wy315700
2024-06-16 10:03:42 +08:00
可能是因为你不带域名的请求返回来 503 导致阿里云认为你源站当机了
试试看返回个 200 看看
BD7JHH
2024-06-16 10:13:03 +08:00
@wy315700 但阿里云的 DCDN 源站健康检查(源站运行情况)是绿色的“健康”。
也就是阿里云自己给出的源站健康报告没有问题。

同时这个健康检查请求,只是在 SSL 握手阶段就产生错误,并关闭连接了。并没有到状态码的环节。

就是 SSL 握手,证书不对,就关闭了连接。

问题不在于证书对不对,而是健康检查为什么不带回源域名进行访问?而去直接访问 IP 。
wy315700
2024-06-16 10:15:35 +08:00
@BD7JHH
会不会因为你填源站的时候填了 IP

一般 CDN 很少有用 SSL 回源的 除非 TCP 直接透传

因为太影响速度,CDN 起不到加速作用了
BD7JHH
2024-06-16 10:23:43 +08:00
@wy315700 源站是填 IP ,端口选 443 ,已设置回源域名,已设置回源 SNI 域名。
如果源站不填 IP ,填源站域名,那不就是死循环了?加速域名和源站域名是同 1 个域名,然而加速域名配了 CNAME ,如果源站也配成相同域名,不就死循环了?

源站走 SSL 目前感觉不到速度影响,CDN 加速主要是对静态资源进行缓存(所以源站是 SSL 并不会影响内容缓存加速)

源站走 SSL 的目的是在源站和 DCDN 节点间的通讯也加密

按用户端的理解,既然是健康检查,为什么不走带域名的健康检查,而直接请求和加速域名不相关的请求?
yinmin
2024-06-16 10:55:11 +08:00
return 503 改成 return 404
yinmin
2024-06-16 11:06:26 +08:00
另外,证书 empty 改成真实证书,然后看看问题是否改善。
Shiroka
2024-06-16 11:10:42 +08:00
源站健康检查:实行主动四层健康检查机制,探测源站的 80 、443 或自定义端口。每 2.5 秒检查一次,连续 3 次失败标记为不可用。

https://www.alibabacloud.com/help/zh/dcdn/user-guide/configure-an-origin-server

尝试源站设置成只有一个主,不要添加其他的主和备
BD7JHH
2024-06-16 11:21:37 +08:00
@yinmin 如果配置为真实证书,这好像违反了默认站点禁止访问的原则。
我曾经试过使用自签证书作为默认站点的证书,这时候报错信息没有了,但如果打开 debug 级别的,还是看到高频访问。

如果使用 empty ,改成 404 甚至 200 都没用,因为是在 SSL 握手阶段就报错,然后就断开了。
如果使用自签证书,证书无效也会断开的。

基本的问题不在于状态码,而在 SSL 握手阶段,而再进一步说,健康检查高频请求不带业务域名,这是后端健康检查的业务逻辑有问题。

客户配置了所有可以配置的回源域名,回源 SNI ,那健康检查应该遵循业务配置进行健康检查。而不是自己萌生出 1 个非正常请求。
BD7JHH
2024-06-16 11:23:13 +08:00
@Shiroka 不是 2.5 秒,我遇到的是 1 秒好多次,而且是多个节点都同时做高频请求。3 小时,10W 次的健康检查。

单主 和 主备,都一样
BD7JHH
2024-06-16 11:24:59 +08:00
目前更新:
阿里云售后打电话给我了,说让我新开 1 个域名,然后单独的把新的域名打开 2.0 架构,看看是否存在问题。

同时目前的工单继续处理中,说是已经提升级别了。看后续吧~~
wushenlun
2024-06-16 13:46:30 +08:00
没勾 sni 吧,或者回源 host 被改了?
dorothyREN
2024-06-16 19:55:14 +08:00
不介意的话可以考虑用 http 回源
BD7JHH
2024-06-17 15:00:34 +08:00
@wushenlun 回源 HOST 也有 回源 SNI 也填写了
BD7JHH
2024-06-17 15:01:47 +08:00
@dorothyREN 这个回源 http 确实不会产生这个问题,之前其他域名的配置就是回源 HTTP 。只不过现在考虑的还是回源 HTTPS
BD7JHH
2024-06-17 15:03:55 +08:00
目前状态:
开启 2.0 架构的,目测真的不会产生高频健康检查访问
但同时好像非 2.0 架构的情况下,如果不添加备用回源 IP ,好像也不会产生高频访问。这个在持续观察中

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

https://ex.noerr.eu.org/t/1049896

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

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

© 2021 V2EX