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

推荐订阅源

A
About on SuperTechFans
C
Cybersecurity and Infrastructure Security Agency CISA
N
News and Events Feed by Topic
C
Cisco Blogs
Cisco Talos Blog
Cisco Talos Blog
A
Arctic Wolf
Scott Helme
Scott Helme
P
Palo Alto Networks Blog
S
Schneier on Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
Tor Project blog
量子位
G
Google Developers Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
B
Blog RSS Feed
NISL@THU
NISL@THU
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
AWS News Blog
AWS News Blog
爱范儿
爱范儿
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
L
LINUX DO - 最新话题
Security Archives - TechRepublic
Security Archives - TechRepublic
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
S
Secure Thoughts
Cloudbric
Cloudbric
aimingoo的专栏
aimingoo的专栏
L
Lohrmann on Cybersecurity
TaoSecurity Blog
TaoSecurity Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Hacker News: Ask HN
Hacker News: Ask HN
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The GitHub Blog
The GitHub Blog
有赞技术团队
有赞技术团队
S
Security @ Cisco Blogs
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Cyber Attacks, Cyber Crime and Cyber Security
G
GRAHAM CLULEY
P
Proofpoint News Feed
V
V2EX
Martin Fowler
Martin Fowler
C
CERT Recently Published Vulnerability Notes
Attack and Defense Labs
Attack and Defense Labs
C
CXSECURITY Database RSS Feed - CXSecurity.com
The Cloudflare Blog
SecWiki News
SecWiki News
罗磊的独立博客
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
小众软件
小众软件
The Last Watchdog
The Last Watchdog

陈少文的网站

巨变与机遇的未来十年 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) 使用 Velero 备份 Kubernetes 集群 Kubernetes Cheat Sheet 开发 Tips(18) 如何构建一个 Java 工程 开发 Tips(17) KubeSpray 安装 Kubernetes 报错 ip in ansible_all_ipv4_addresses 基于 Kubernetes 和 Jenkins 搭建自动化测试系统 在 Kubernetes 上动态创建 Jenkins Slave 使用 Jenkins 进行服务拨测 开发 Tips(16) Kubernetes 签发 Ingress 证书及日常故障运维 Kubernetes 中 Deployment 的基本操作 Kubernetes 中的证书 如何使用 KubeBuilder 开发一个 Operator Kubernetes 1.6.0 安装问题汇总 镜像管理工具 -- Harbor 开发 Tips(15) Docker 如何拉取镜像 开发 Tips(14) 使用 Helm 安装 harbor 开发 Tips(13) 使用 S2I 构建云原生应用 在 Kubernetes 中使用 emptyDir、hostPath、localVolume 开发 Tips(12) 开发 Tips(11) 代码质量分析工具 SonarQube 使用 Kubeadm 安装 Kubernetes 集群 一起来学 Go --(4)常用函数 Kubernetes 中的 Ceph Kubernetes 之 Volumes Kubernetes 之 Labels、Selectors 开发 Tips(10) 开源正在重构商业模式 Kubernetes 之网络 Kubernetes 之 API 使用 Helm 和 Operator 快速部署 Prometheus Kubernetes 复杂有状态应用管理框架 -- Operator Kubernetes 的包管理器 -- Helm 一起来学 Go --(3)Go Modules 如何一步一步地优化博客方案 kubectl 实用指南 Kubernetes 中的基本概念 搭建远程 Kubernetes 开发环境 大公司和小公司的 ToB 思路 开发 Tips(9) Go 入门指南 一起来学 Go --(2)数据与逻辑结构 如何预防 Web 富文本中的 XSS 攻击 django-xss-cleaner 云工作时代 一起来学 Go --(1)背景与特点 SaaS 开发团队的不同阶段 你不知道的 Git 使用技巧 输出既服务 微服务设计 继续奔跑 开发 Tips(8) 从账户安全到二次验证 Django 性能之数据库查询优化 Django 性能之分库分表 敏捷开发之研发流程 打造一致性的团队 开发 Tips(7) Pytest 进阶学习之 Mock PaaS 部署之 buildpack Go 开发配置 领域输出才是 PaaS 的核心竞争力 Pytest 入门学习 开发 Tips(6) 如何使用 Jenkins、Docker、GitLab 搭建 Django 自动化部署流程
使用云上基础设施遇到的一些坑
微信公众号 · 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,导致了大面积的服务不可用。

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