惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
有赞技术团队
有赞技术团队
aimingoo的专栏
aimingoo的专栏
WordPress大学
WordPress大学
人人都是产品经理
人人都是产品经理
酷 壳 – CoolShell
酷 壳 – CoolShell
L
LangChain Blog
Blog — PlanetScale
Blog — PlanetScale
阮一峰的网络日志
阮一峰的网络日志
Microsoft Azure Blog
Microsoft Azure Blog
云风的 BLOG
云风的 BLOG
Google DeepMind News
Google DeepMind News
T
The Blog of Author Tim Ferriss
G
Google Developers Blog
Hugging Face - Blog
Hugging Face - Blog
Y
Y Combinator Blog
D
DataBreaches.Net
Engineering at Meta
Engineering at Meta
MyScale Blog
MyScale Blog
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
The GitHub Blog
The GitHub Blog
Recent Announcements
Recent Announcements

陈少文的网站

巨变与机遇的未来十年 Kubernetes 平台管理软件压力测试方案 使用镜像部署 Hexo 静态页面 终于等到你 - GitHub 镜像仓库服务(ghcr.io) 一起来学 Go --(6)Interface 一起来学 Go --(5)Goroutine 和 Channel 什么是函数式编程 如何在 Kubernetes 集群集成 Kata 柯里化与偏函数 使用 PyGithub 自动创建 Label 软件产品是团队能力的输出 Helm 2 、Helm 3 比较 IoT 变现 Kubernetes 中的 DNS 服务 国内的 Helm 镜像源 Harbor 使用自签证书支持 Https 访问 DevOps 工具链之 Prow 如何使用 kfctl 安装 Kubeflow VS Code 无法下载 Go 插件的工具包 工程师更应具有服务精神 你不知道的 Docker 使用技巧 使用 Docker 运行 Tensorflow 论中国 什么是左移 如何清空 Git 仓库全部历史记录 一禅小和尚 有风吹过厨房 时间的玫瑰 如何在 CentOS 安装 GPU 驱动 开发 Tips(19)
使用云上基础设施遇到的一些坑
微信公众号 · 2023-08-23 · via 陈少文的网站

1. 配额限制

每种云上的资源,能用多少是有限制的。

这是云厂为了防止资源滥用,降低租户之间的相互影响。

比如,一个账户下的企业项目数、弹性主机的数量、弹性公网 IP 的数量、弹性公网 IP 带宽的大小等。

因配额不够导致的资源申请失败,很常见;但在弹性业务高峰期,这个问题就会变得很严重。

如果是自己开发了控制平面,内部的云管平台,尤其要注意这些配额限制,做好监控。

2. 共享导致的性能问题

云厂有些资源区分独享和共享,共享的价格比独享的便宜很多。

很多时候,我们出于成本考虑选择了共享的资源,但却给自己挖了一个坑。

华为云的共享负载均衡开启性能保障模式后,提供并发连接数 5 万、每秒新建连接数 5000、每秒查询数 5000 的保障能力。如果超过这个限制,业务侧就会报错。

共享类的资源都可能出现类似的问题,SLA 无法保障,或者性能无法保障。

3. 资源强制升级

云厂为了修复版本漏洞、跟进新特性,会强制升级一些资源。

云厂的强制升级,通常是热更新,会提前通知使用方,但使用方不一定会关注。

强制升级其实是一个负责任的行为,需要使用方持续投入精力跟进,但使用方往往会忽略这个事情,认为其吃力不讨好。

海外的厂商,比如 AWS 就会强制升级 RDS 等数据库,这些数据库的升级,会导致数据库闪断,短时间内无法访问。而 EKS 的升级,是通过替换底层的 EC2 实例来实现的,又非常的平稳。

关注云厂的通知,积极干预、主动升级比被动升级要好很多。

4. 云厂之间的参数差异

不同于自建的基础设施,整齐划一,云厂的基础设施参数、配置差异很大。

比如,重启华为云主机之后,NetworkManager 会覆盖 /etc/resolv.conf 中的 DNS 配置。这其实是配置 DNS 的地方不对所致,但在其他云厂却没碰到这个问题。

再比如 AWS 支持巨型帧,MTU 可以设置为 9001,但华为云不支持。

建议自定义基础设施的配置,而不是依赖云厂的默认配置,包括网络、存储、安全组、基础镜像等。事前圈定好这些配置,比事后对齐配置要好很多。

5. 云厂硬件故障

如果你是大客户,很有可能会经常收到类似这样的提示:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
尊敬的xxx用户:
您好!您账号下xxx区以下RabbitMQ实例由于底层物理机故障,需要迁移
影响:长连接1/3闪断,部分未及时消费消息丢失。
辛苦知悉。实例信息如下:
UID: xxx
Region: xxx
产品: RABBITMQ_GROUP
有归属项目的实例:
项目名称: 默认项目
   实例ID: xxxx
   实例名称:
   子类型:xxx

云厂经常会出硬件故障,AWS 尤其多,机器实在太旧了。虽然云厂做了冗余和热迁移,但发生时,并不能保证 100% 不受影响,业务会有感知。

在选择资源规格时,如果能选多 AZ 就选多 AZ,如果能选多 Region 就选多 Region。核心业务要用钱和冗余换稳定性。

6. 云厂软件故障

云厂的代码也是人写的,有人的地方就有 BUG。

这是近期一个事故的报告:

1
2
3
故障根本原因: 代码缺陷。

触发场景: 创建弹性伸缩组活动时,需要下发云主机信息、实例创建、查询实例信息以及同步 ES。由于这个过程耗时过长导致写入 Redis 数据的时间晚于伸缩组中 5 台云主机的创建完成时间(多个接口耗时偏高,累加效果导致整体耗时超出预期)。 控制台收到云平台开机完成消息后,处理弹性伸缩组逻辑时需从 Redis 获取对应信息...

云厂的态度很好,但是不解决问题,只能尽量减少类似事件。越是非头部厂商,软件问题可能会越多。

建立起对云厂功能的 SLO 指标,对于核心的功能,直接影响业务稳定性的功能要建立监控、告警体系,即时发现、即时反馈给云厂干预解决,否则等业务有问题,事情就变得很紧急了。

7. 欠费导致无法新建云资源

想不到吧,还有因为欠费导致无法新建云资源的坑。欠费不影响已有资源,但是影响新建资源。

我就经过过两次因欠费导致无法新建云资源的事件,一次是国内的账户,一次是海外的账户,海外入账周期比较长。

云厂商提前一晚通知,3,4,5月账单未支付,目前 xxx 账号已欠费,目前我们商务这边已经在申请信用额度扩容了,需要等2天;

第二天就因为欠费,导致弹性扩容失败,整个上午大家都在催公司打款、催云厂扩充信用额度、转移业务流量。挺浪费运维人力。

公对公的对账周期长,很容易出现欠费的情况,无上限增加信用额度肯定是不可行的。每次欠费都让云厂紧急处理,会降低云厂对你的服务质量。

建议和公司财务、云厂协商好,按期付款,信用额度能支持一个周期就好。如果厂商有催款通知,不要拖欠赶紧打款。

8. 云厂变更时,人为操作失误

缓存服务失联,相关的服务全都异常。云厂解释,搬运其他设备时,同时误操作了线上的四台核心交换机。

“同时关四台核心交换机”,无论是不是外包干的,都是云厂流程上极大地失误。

不多久,另外一个云厂也是因为人为操作失误,导致了大面积的服务不可用。

原因是,在修改一个带宽配置时,本来是 40Gbps 修改为 50Gbps,但是操作人员误操作,修改为 5Gbps,导致了大面积的服务不可用。

云厂的这些解释非常离谱,但也不排除他们在掩盖一些更低级的失误。