本站包含联盟链接——如果你通过链接注册,我们可能获得佣金。 Affiliate links.

DigitalOcean 扩展指南 2026 — 垂直 vs 水平

DigitalOcean 扩展指南 2026 — 垂直 vs 水平

当网站或应用开始吸引更多用户时,DigitalOcean 上的扩展遵循两种主要方法:垂直扩展(向单个 Droplet 添加资源)和水平扩展(通过 Load Balancer 将负载分散到多个 Droplet)。本文介绍如何选择合适的方法,并附有真实命令和立即可操作的架构示例。所有定价和规格均来自 2026 年 7 月的 digitalocean.com/pricing。

垂直扩展:调整 Droplet 以增加 RAM/CPU

垂直扩展意味着向单个 Droplet 添加资源而不改变系统架构——非常适合仍在单个服务器上运行、还不需要负载分配的应用。DigitalOcean 允许你通过 Control Panel 和 doctl 命令调整 Droplet 大小,可以灵活地只增加 RAM/CPU 或同时添加磁盘空间。一个重要注意事项是:磁盘扩展是永久的。之后你无法缩小磁盘,所以在进行包含磁盘扩展的调整之前务必仔细决定。

DigitalOcean 的 Basic Droplet 系列范围从 512 MiB RAM / 1 vCPU / 10GB SSD / 500GiB 传输($4/月)到 16 GiB RAM / 8 vCPU / 320GB SSD / 6,000GiB 传输($96/月)。对于需要专用(非共享)CPU 的工作负载,Droplets General Purpose 层起价为 $63/月(8GB RAM、2 vCPU、25GB SSD),最高可达 $1,260/月用于需要 CPU 稳定性的重型生产负载。不要混淆这些:它们是完全不同的产品线。

通过 doctl 的调整工作流首先通过关闭 Droplet 开始:doctl compute droplet-action power-off <droplet-id> 然后调整大小:doctl compute droplet-action resize <droplet-id> --size s-4vcpu-8gb --resize-disk 最后打开它:doctl compute droplet-action power-on <droplet-id>

如果只想增加 RAM/CPU 而不触及磁盘,请省略 --resize-disk 标志。系统仍然允许你之后缩小规模,因为磁盘未被扩展。在整个调整过程中,你的 Droplet 会短暂停止提供流量(通常只需几分钟)。提前为生产系统规划维护窗口,并在调整前始终创建 Droplet 快照作为回滚点,以防操作过程中出问题。

水平扩展:多个 Droplet + Load Balancer

用户经常问到的一点是:水平扩展意味着添加更多 Droplet 而不是扩展单台机器,然后通过 Load Balancer 分配流量。这适合需要高可用性且能够处理流量波动的系统,因为你可以根据实际负载添加或删除 Droplet,而无需停止整个系统。

DigitalOcean 的 Load Balancer 起价为 $12/月,通过 VPC(私有网络,在整个账户中无限免费使用)与 Droplet 配合使用。推荐的方法是用类似 web-backend 的标签标记你的组中的所有 Droplet,然后让 Load Balancer 自动将流量转发到所有带有该标签的 Droplet。当你向该组添加具有相同标签的新 Droplet 时,Load Balancer 会立即开始向其路由流量,而无需手动逐实例配置。

使用 doctl 创建 Load Balancer 的示例:doctl compute load-balancer create --name web-lb --region sgp1 --tag-name web-backend --forwarding-rules entry_protocol:https,entry_port:443,target_protocol:http,target_port:80

配置健康检查,以便 Load Balancer 自动将无响应的 Droplet 从轮转中删除:doctl compute load-balancer update <lb-id> --health-check protocol:http,port:80,path:/healthz,check_interval_seconds:10,unhealthy_threshold:3

对于泰国用户,sgp1(新加坡)是推荐的区域,因为在 DigitalOcean 的 15 个可用数据中心中延迟最低,blr1(班加罗尔)是第二选择。水平扩展还消除了单点故障风险:如果一个 Droplet 崩溃,系统继续运行,因为 Load Balancer 将流量路由到幸存者——这是垂直扩展的关键限制,它完全依赖于一台机器。

何时使用哪种方法

在垂直和水平扩展之间进行选择取决于流量模式和预算,没有一刀切的答案。但是,有一些实用原则适用于真实场景。

垂直扩展适合仍在单个 Droplet 上轻松运行的中小型系统——企业网站、博客或具有适度流量的 API。其优点:简单、快速,不需要代码或架构更改,只需调整大小并等待几分钟。其缺点:Basic Droplets 硬限制为 $96/月或 General Purpose 为 $1,260/月,如果单个 Droplet 失败,你的整个系统将失败。

水平扩展适合需要高正常运行时间的系统,流量按时间段尖峰或波动——秒杀活动、营销活动或高并发用户负载。优点:通过添加 Droplet 几乎无限扩展,如果任何一个 Droplet 崩溃,系统会继续运行,因为 Load Balancer 将流量路由到幸存者。缺点:更高的入门成本(至少 $12/月 Load Balancer + 2 个 Droplet 最少),且你的应用必须设计为无状态或具有外部会话/文件存储,而不是依赖本地磁盘状态。

最常见的真实世界模式:团队在项目早期阶段开始使用垂直扩展,因为它更简单便宜,然后在流量接近单个 Droplet 上限或企业不再能容忍停机时迁移到水平扩展。

  1. 垂直:简单、快速、最适合中小型网页/API
  2. 水平:停机耐受力更好,非常适合流量尖峰
  3. 垂直有硬限制 $96/月(Basic)或 $1,260/月(General Purpose)

使用快照/镜像更快地扩展

在水平扩展时,创建具有相同环境(OS、包、配置)的新 Droplet 是重复的。最快和最安全的方法是使用 Droplet 快照作为黄金镜像,而不是每次都手动重新安装或运行长时间的配置脚本。

DigitalOcean 对快照按月收费 $0.06/GiB,按实际磁盘使用量计算。来自具有 20GiB 实际数据的 Droplet 的快照每月成本约为 $1.20。一旦创建,快照可以在任何区域生成新 Droplet,无需额外费用。

推荐的工作流:充分配置模板 Droplet(安装 Web 服务器、依赖项、部署最新稳定代码),然后创建快照:doctl compute droplet-action snapshot <droplet-id> --snapshot-name web-golden-2026-07

当你需要向水平扩展池添加新 Droplet 时,从该快照创建具有匹配标签:doctl compute droplet create web-03 --image <snapshot-id> --size s-2vcpu-4gb --region sgp1 --tag-names web-backend --ssh-keys <key-fingerprint>

这将配置时间从十几分钟(完整安装)减少到几分钟(从现成镜像启动)。频繁扩展的团队应该在每次部署稳定新版本时更新黄金镜像,确保新 Droplet 到达时具有当前代码并完全跳过部署后步骤。

要点总结: 快照根据实际磁盘使用量按 $0.06/GiB/月收费

处理增加流量的示例架构

应对日益增长流量的 Web 应用的真实世界架构由四个主要组件组成:前面的 Load Balancer、用于应用服务器的 Droplet 池、单独的 Managed Database 和私下连接所有内容的 VPC。

一个实用的起点是一个 Load Balancer($12/月)接收互联网流量,分配给至少 2 个 Droplet——比如 4GiB/2vCPU,每个 $24/月,在同一 VPC 内(免费)。为了安全起见,分离 Managed Database:例如,PostgreSQL Basic 层 $15.15/月,而不是在应用 Droplet 上安装数据库。这种独立扩展应用服务器的自由度很重要;另外,Managed Database 包括自动备份。

对于共享文件——例如用户上传的图像——不要将其存储在任何单个 Droplet 的磁盘上,因为其他 Droplet 看不到它们。相反,使用 DigitalOcean Spaces(对象存储,起价 $5/月,带内置 CDN)作为中央文件存储,替代对每个 Droplet 本地磁盘的依赖。

此设置的推荐 Cloud Firewall(免费):仅从 Load Balancer 打开端口 80/443,仅从 Droplet 组的 VPC 内部 IP 范围打开数据库端口,永远不要向公共互联网暴露 SSH——仅限你的开发团队的 IP。通过此架构,随着流量增长,只需从黄金镜像生成新 Droplet 并将其添加到池中;数据库和存储层保持不变。

何时使用此方案(真实用例)

在实践中,团队很少永远承诺纯垂直或纯水平扩展;他们根据季节和业务需求混合策略。常见的真实世界场景包括:

进行季节性降价活动(11.11、12.12)的电子商务网站通常在 1-2 周前规划水平扩展,从快照启动新 Droplet 进入 Load Balancer 池,然后在活动结束后缩小。这种方法比全年保持额外 Droplet 空闲更好地控制成本。

初创公司和 SaaS 平台通常在单个 Droplet 上开始垂直扩展——可能是 2GiB/1vCPU($12/月)——然后随着用户增长而调整大小(例如 4GiB/2vCPU,$24/月),直到流量变得不可预测或业务需要 SLA 正常运行时间,此时他们迁移到完整的水平架构。

具有病毒式内容风险的新闻和媒体网站——当故事传播时流量可能突然尖峰——从第一天起就是理想的水平扩展候选者,因为你无法提前预测尖峰,调整单个 Droplet(垂直)需要数分钟可能在流量在数秒内飙升时太慢。在这些情况下,保持备用 Droplet 并使用免费 Monitoring Alerts 在 CPU/RAM 接近容量时通知你,让你在网站崩溃前添加实例。

常见错误和解决方案

用户经常问到的一点是:垂直扩展中最常见的错误是在不先备份的情况下进行包含磁盘扩展的调整——磁盘增长是永久的,所以如果调整过程中出任何问题(例如启动失败),就没有回滚。即使你确信不会出问题,在进行包含磁盘扩展的调整前也要始终创建快照。

另一个错误:在峰值流量时间调整大小。由于 Droplet 在调整期间必须关闭,网站会暂时停止。选择最低流量时间窗口并提前通知生产系统用户维护窗口。

对于水平扩展,常见的错误是忽略健康检查配置或将检查路径设置为错误的端点。如果 Load Balancer 无法到达你的健康端点,它假设所有 Droplet 都不健康并完全停止路由流量,尽管它们运行良好。在将其连接到 Load Balancer 之前,使用 curl 本地测试健康检查路径。

另一个常见错误:将会话或上传的文件存储在每个 Droplet 的本地磁盘上而不意识到。当用户登录 Droplet A 时,下一个请求可能路由到 Droplet B,那里会话缺失或文件不可见。通过在 Managed Database 或 Valkey(托管 Redis)中存储会话并将文件上传到 Spaces 而不是所有 Droplet 的本地磁盘来解决此问题。

最后,添加新 Droplet 时忘记配置 Cloud Firewall 仅允许来自 VPC 内部范围的数据库访问。如果防火墙规则不匹配,新实例无法到达数据库或与组中的对等体通信。在新 Droplet 接收实时流量前,始终验证它们在同一 VPC 和防火墙规则集中。

最佳实践

在 DigitalOcean 上规划扩展时最佳实践摘要,无论是垂直还是水平:

在真正扩展前启用免费 Monitoring 并设置警报策略,为你提供历史 CPU/RAM/磁盘/带宽数据以推动合理决策——根据实际负载进行大小调整(正确调整)而不是猜测或过度配置可节省远多于未使用容量的支付。

在每次垂直扩展调整前创建快照备份并选择最低流量时间窗口。对于计划未来水平扩展的应用,从第一天起将其设计为无状态——将会话和文件外部化离开本地磁盘——即使它们现在仍在单个 Droplet 上运行。这消除了迁移到多 Droplet 架构时未来的重构痛苦。

一旦预算允许就采用 Managed Database(PostgreSQL 或 MySQL 起价 $15.15/月),将数据库扩展与应用服务器分离并获得内置自动备份,消除忘记手动备份的风险。

对于频繁扩展的团队,将 Droplet 创建工作流编码为脚本或 Terraform 配置,而不是每次都点击 Control Panel。这确保每个新 Droplet 具有相同的防火墙、VPC 和标签配置,在流量尖峰时紧急扩展时减少人为错误。最后,通过关闭 Droplet 并确认 Load Balancer 将流量路由到幸存者来测试实际故障转移——在真正的故障发生前至少按季度进行此操作。

领取 $200 免费额度 →

常见问题(FAQ)

调整 Droplet 大小需要多长时间?
调整期间的停机时间取决于磁盘大小和区域,但通常只需几分钟。始终在低流量时间调整,并提前创建快照备份以确保安全。
DigitalOcean 上垂直扩展的最大大小是多少?
Basic Droplets 最大 16GiB RAM / 8vCPU,$96/月。Droplets General Purpose(专用 CPU)最高可达 $1,260/月。超过此,请改为考虑水平扩展。
DigitalOcean 的 Load Balancer 成本多少?
起价 $12/月,适用于 DigitalOcean 运营的全部 15 个数据中心。
我需要多少个 Droplet 才能开始水平扩展?
至少 2 个,以便系统在一个失败时存活。它们应该在同一 VPC 中以进行免费的私有通信。
如果我不确定选择哪种扩展方法,我从哪里开始?
在单个 Droplet 上开始垂直扩展——更简单便宜。启用免费 Monitoring 以收集流量数据并决定何时(或是否)迁移到水平扩展。
Managed Database 是水平扩展必需的吗?
非强制性,但强烈推荐。在你的组中的 Droplet 上运行数据库会创建单点故障,且你失去独立扩展应用服务器的能力。Managed Database 起价 $15.15/月。