这是一篇用冒险故事串起云计算概念的科普短篇。艾伦和云端王国都是虚构的,文中的实例规模与扩缩容阈值也服务于故事。

在一个神秘的云端世界里,流传着一个传说——只要掌握了 EC2(Elastic Compute Cloud) 的奥秘,就能召唤出强大的骑士军团,在云端之上建造属于自己的帝国。年轻的程序法师 艾伦(Allen),便是被这个传说吸引,踏上了一场惊心动魄的冒险。

召唤虚拟骑士

艾伦站在云端秘境的入口,面前是一座巍峨耸立的城堡——EC2王国。他推开沉重的城门,一位身穿金甲的 守护者(EC2 API) 迎接了他:“欢迎来到EC2王国,你可以在这里召唤属于你的战士。”

艾伦激动地问道:“我要怎么召唤?”

守护者指向一本古老的魔法书——EC2启动向导,并告诉他:“你的战士(EC2实例)可以是不同种类的,你需要选择他们的职业、技能和装备。”


选择合适的骑士

艾伦翻开魔法书,书中浮现出各种各样的战士:

  • t3.micro:灵活的侦察兵,适合探索和轻量级计算任务。
  • m5.large:平衡的剑士,能适应多种战斗场景。
  • c5.2xlarge:强力战士,擅长高速计算,如加密破解、金融计算等。
  • r5.4xlarge:智者法师,拥有强大的记忆力(大内存),适合处理复杂的数据分析任务。
  • p4d.24xlarge:传说中的龙骑士,搭载强大GPU,擅长机器学习和深度学习战斗。

艾伦思考片刻,选择了m5.large 作为他的第一名战士。他用手指在魔法书上轻轻一点,一道蓝光从天空中落下,战士缓缓出现。

“但骑士需要灵魂,否则他不会动。” 守护者提醒道。

这时,一块刻满古老符文的石板浮现在艾伦面前——AMI(Amazon Machine Image)

AMI 是EC2实例的灵魂,它包含了:

  • 操作系统(如Ubuntu、Windows Server)
  • 预装软件(如Nginx、MySQL)
  • 镜像内的系统配置(如用户账户、已安装的软件配置)

艾伦选择了 Ubuntu 20.04 + Nginx 的 AMI,战士的眼睛瞬间亮起,他正式活了过来!网络、安全组和实例角色,则还需要在启动时另外安排。


骑士的铠甲与武器

艾伦的战士虽然已经苏醒,但他依然是一名“裸装战士”,缺少防护和装备。守护者带着艾伦来到EC2兵工坊,指向三样关键的装备:

1. EBS(Elastic Block Store)- 弹性块存储

“这是你的战士的背包,它可以存放所有的装备和战利品。”

EBS是EC2的磁盘存储,支持多种模式:

  • gp3(通用SSD):适用于大部分场景,性价比高。
  • io2(高性能SSD):适合金融、数据库等高IO需求的场景。
  • st1(吞吐优化型 HDD):适合顺序读写较多的大容量数据,不能用作启动卷。

艾伦选择了 gp3 100 GiB 作为他的战士存储空间,并在上面安装了Nginx网站服务。

2. Security Group - 安全组护盾

“战士需要护盾,否则他可能会被敌人攻击。”

Security Group 是 EC2 的防火墙,控制外界访问。

艾伦设定:

  • 允许 80 和 443 端口(网站访问)
  • 仅允许自己通过 22 端口(SSH远程管理)

3. Key Pair - 密钥对

“你需要一把魔法钥匙,才能命令你的战士。”

密钥对(Key Pair) 可用于 Linux EC2 实例的 SSH 认证,艾伦下载了一个 .pem 文件,妥善保管,以便能安全地远程管理他的实例。


自动扩展军团

战场告急!服务器濒临崩溃

艾伦的王国迅速扩张,他的网站日活用户从几百人增长到上万。服务器的负载越来越大,终于有一天,CPU 利用率突破 **95%**!

午夜时分,他的监控面板突然报警,显示 大量请求如潮水般涌入,服务器濒临崩溃!

  • 页面加载变慢,用户投诉增加……
  • 服务器日志充斥着“请求超时”……
  • EC2 的 CPU 负载已经接近极限……

“糟了!我的服务器快撑不住了!” 艾伦惊慌失措。

守护者的警告

就在他一筹莫展时,EC2 守护者 出现在他面前:“你的王国在不断壮大,你需要一支真正的军队,而不是靠一个孤军奋战的骑士。”

艾伦急切地问道:“难道……我可以召唤更多的战士?”

“是的。” 守护者取出一块刻满神秘符文的石板:“使用 Auto Scaling Group(ASG,自动扩展军团),你的服务器军团可以自动扩张和收缩。”

艾伦迅速设定:

  • 最少战士数量:1(保持最低防御)
  • 最大战士数量:10(避免资源浪费)
  • 扩展触发条件:
    • 当 CPU 利用率 > 70% 时,自动召唤新 EC2 骑士!
    • 当 CPU 利用率 < 30% 时,让部分骑士退出军团,缩容终止实例。

当服务器 CPU 负载飙升至 75% 时,ASG 立刻启动扩展,几分钟内:

  • 第一名增援战士出现!
  • 第二名、第三名、第四名……
  • 服务器军团从 1 台扩展到了 6 台!

战场形势终于逆转,网站恢复了正常运行!艾伦终于学会了自动化扩展的力量。

迎战黑暗势力

艾伦站在高塔上,望向远方黑压压的敌军。它们并非普通的攻击,而是由恶意流量、黑客攻击、DDoS 洪流组成的数字战队。这些黑暗势力正逼近他的王国,试图摧毁他辛苦建立的云端帝国。

“我们必须强化防御!”艾伦大声喊道。他知道,仅凭 ASG(自动扩展军团)还不足以应对如此规模的攻击。他需要更强大的防护手段。

安排城门与守卫——负载均衡和 WAF

守护者告诉艾伦,先要给请求安排入口,再给入口配上守卫。Elastic Load Balancing(ELB) 负责分发流量,AWS WAF 负责按规则检查 Web 请求。

“负载均衡会把请求分发给健康的后端,但它不会自动分清谁是敌人。”守护者解释道,“拦截哪些请求,还得给守卫写清楚规则。”

艾伦设立了 Application Load Balancer(ALB),把流量分发到健康的实例,并为它关联 AWS WAF Web ACL。他配置了请求检查和速率限制规则,让守卫拦下命中规则的请求。

战士们站在城墙之上,见到请求被分流,一部分恶意请求也被规则挡住,他们信心大增。后端的压力开始减轻。

召唤远古守护者——CloudFront CDN

然而,敌人并未就此罢休。持续的流量冲击,加上远程访问的延迟,仍让部分用户觉得网站很慢。艾伦意识到,他需要 CloudFront(CDN) 来作为全球防御网,让远程用户能够就近访问网站,而不必跨越整个互联网来请求资源。

“CloudFront 能让用户从边缘节点获取已缓存的内容,减少回源请求。缓存没有命中的内容,仍然需要向源站请求。”

艾伦迅速开启 CloudFront,将适合缓存的静态资源交给边缘节点。他也为 CloudFront 配置了 WAF 规则,并限制绕过入口直接访问源站的路径。

数据的最后堡垒——快照与AMI

尽管防线已经搭建完毕,艾伦依然担心最坏的情况。如果敌人突破防线,攻击他的核心数据,那将是毁灭性的打击。

“我们需要最后的堡垒!”艾伦下令。

守护者递给他一本古老的卷轴,上面记载着 快照(Snapshot) 和 AMI(Amazon Machine Image) 的知识。

  • EBS 快照(Snapshot):保存卷在某个时间点的数据。它不是实时备份,恢复后不会包含快照时间点之后的新写入;数据库等应用还需要考虑备份一致性。
  • AMI(Amazon Machine Image):保存启动实例所需的镜像内容。重新部署时,网络、安全组和实例角色等配置仍需要另行准备。

艾伦安排了快照计划,制作 AMI,并把网络和权限配置也记录下来。他还试着恢复了一次:卷能恢复,服务能启动,才知道这些准备能不能派上用场。

最后的决战

黑暗势力的攻击越来越猛烈,ELB 开始承受巨大压力,CloudFront 也在全力运转。艾伦的 ASG 召唤了更多战士,EBS 存储也撑住了所有请求。服务器在剧烈震动,战场上杀声震天。

就在千钧一发之际,艾伦施展了最后的底牌——

他启用了预先配置的 Route 53 DNS 故障转移。健康检查发现原来的入口异常后,新的 DNS 查询开始得到备用入口的地址。DNS 缓存和已有连接不会立刻消失,艾伦仍让 WAF 守卫继续过滤请求,并逐步恢复受影响的服务。

随着请求逐步转向健康的入口,备用军团接住了更多用户。守卫继续抵挡攻击,艾伦终于有时间修复原来的阵地,战场迎来了转机。

云端王国的崛起

战斗结束后,艾伦的王国屹立不倒。他不仅成功抵御了攻击,还学会了如何用 EC2、ASG、ELB、CloudFront、快照与 AMI 来打造真正稳固的云端帝国。

“你已经成为真正的云端之王。”守护者微笑着对艾伦说。

艾伦望向远方,知道这只是旅程的开始。他的王国会继续扩展,面对更强大的挑战,而他,也会继续成长。

云端秘境的大门向他敞开,等待着他的下一次冒险……

概念参考