我有一个大型、繁忙的网站;它目前完全在专用服务器上运行,我每月租用的服务器费用约为 700 美元。
我认为它可以分为三部分,可以归结为云解决方案:
媒体(图片/视频)文件托管。目前我有大约 236 GB 的静态图片,目前都存放在我的服务器上。如果我将它们移至云端,我可能会结合使用 CDN(以最大限度地降低每次图片请求从云服务传输数据的成本)。
数据库。我的服务器上目前运行着 MySQL,大约有 3 GB 的数据。
Web 服务器。同一台服务器运行 nginx,提供静态文件和 PHP 服务。
我现在没有遇到任何生产问题,但我预计明年我的网站的流量/服务器负载将翻倍。所以我现在想考虑可扩展性。
我的问题是:如何确定将其中的部分/全部移动到云平台上而不是将其保留在我当前的服务器上是否具有成本效益?
(我已经知道了其他一些因素:使用云进行备份会更容易,不会像现在我的单台服务器那样出现一个故障点,等等。但我不知道剥离其中一项服务需要花费多少成本。我该如何计算?)
编辑 - 感谢大家的精彩回答和评论。一些人要求提供更多信息,因此我在下面总结了所有内容并添加了一些数据:
使用的数据传输(“带宽”)- 该网站每月发送约 17 TB 的出站数据(!),我计划明年将这一数字翻一番(!!)。几乎所有这些出站数据都是静态媒体(图片和视频剪辑),因此 CDN 可能是一个好主意,不仅可以提高可发现性,还可以将所有数据传输的负担转移到 CDN 网络,这样媒体存储服务器就不必直接传输那么多数据。——编辑:看来 CDN 对于这么多的数据传输来说非常昂贵。因此,也许静态媒体会留在一个简单的服务器上,这会给我带来非常高的带宽上限(你好 OVH!),如果我能找到一种经济有效的方式将 CDN 放在它前面,那就太好了。
交通不繁忙- 我的流量相当稳定;我转向基于云的解决方案的目标是能够轻松扩展。例如,我当前的设置将所有内容放在一个硬盘上,并且该硬盘已满 60%;这种基础设施实际上无法处理两倍的数据量(而且我也不确定它是否有足够的计算能力来运行两倍流量的 Web 服务器和 DB 服务器)。
静态媒体- 正如我上面提到的,我有大约 236 GB 的静态媒体,大部分都是图片和视频剪辑。这似乎是最明显的(也许是最容易的?)首先要切分并放到云端的部分。
数据库- 虽然数据库现在运行良好,但我很快就会遇到一些更复杂的查询,并且喜欢一些更强大的东西。因此,虽然我不认为我目前的需求(能力和数据量)决定我应该将数据库服务器移到云中,但这一切都是为了能够扩展。
繁忙时间- 我总是至少1,000 名用户每天 24 小时访问该网站,疯狂地消费媒体内容。服务器从不空闲。
目前专用服务器- 我之前说错了,说是托管(意味着我拥有硬件)。那是错的。我有一台专用服务器(由我的托管公司拥有),我每个月都租用。区别不大,只是想提一下。
答案1
更新
AWS 每月将收取 3300 美元的费用,用于 35TB 的出站带宽。五个最大的 Lightsail 实例将花费 800 多美元,包括 35GB 的流量。我假设如果您使用负载均衡器,您可以使用实例带宽。他们的 CDN 定价将使您每月花费 2300 美元。您可能需要另一台服务器作为 Web 服务器,因此每月花费将达到 1000 美元左右。
考虑到您的带宽需求,我会排除 EC2/CloudFront。在验证负载均衡器有效使用实例带宽后,您可以考虑 Lightsail 和负载均衡器。但是,使用 co-lo 可能更容易,但灵活性较差。
上一篇
MLu 为您提供了一个不错的选择,但重新构建网站可能很困难。只需使用 CloudFront(或 CloudFlare)将图片托管移动到 S3 可能相当简单,而且比自己托管更便宜、更快捷。
基本建议
如果你只是想要一个 VPS,计算出所需的 CPU / RAM / 磁盘规格,然后将其放入AWS 计算器。忽略使用新计算器的警告,新的计算器不太好。
光帆是使用 AWS 的廉价方式 - 带宽特别便宜。您可以以每月 160 美元的价格获得 8 个内核、32GB RAM 和 7TB 传输,服务器成本约为 330 美元,带宽成本为 600 美元。将其中几个(或较小的实例)与 16 美元的Lightsail 负载均衡器花费不多就能获得强大的功能。Lightsail 是一款很多比完整的 AWS 更简单。
架构建议
您的架构的最佳选择是:
- 运行 Nginx / PHP 的 EC2 实例
- 适用于 MySQL 的 AWS RDS
- AWS ALB 用于负载平衡
这里的难点在于确定资源的大小。如果愿意,您可以一边观看“top”,一边根据 CPU 使用率进行猜测。
远程数据传送系统
您需要根据峰值负载调整 RDS 的大小。假设您现在有一台 4 核服务器,而 MySQL 在峰值时似乎占用两核,那么您可能需要一台两核 RDS MySQL 服务器。
将其映射到实例类型取决于您的非高峰使用情况。T2/T3 实例为您提供一小部分 CPU,有时会使用突发余额以使用更多。如果您的网站有很多时间不忙,它可以在非高峰期积累 CPU 积分,并在高峰期使用它们。db.t2.medium 为您提供两个核心和 4GB RAM,db.t3.medium 为您提供 2 个核心、8GB RAM 和更多 CPU 积分。如果网站大部分时间都相当繁忙,您将需要专用 CPU,db.m5.large 为您提供两个核心。您可以相当轻松地更改数据库类型,但如果您没有多可用区实例(谷歌该术语以了解更多信息),则会有一些停机时间。
EC2
EC2 可以更加灵活,因为您可以根据负载扩展实例数量。您可以选择 m5.large(或 AMD 的 m5a,或 ARM 的 m6g)作为基础服务器,具有 2 个内核和 8GB RAM。一旦达到阈值,例如 60% 的 CPU 使用率,AWS 可以启动尽可能多的实例来帮助应对负载,然后在不需要时将其关闭。您通常不会在负载均衡器中使用 t2/t3 实例,因为它们可能会耗尽 CPU 信用,这会使事情变得棘手。
尺寸和价格
确定架构和规模后,您可以将其输入 AWS 计算器。您将需要 RDS 实例、EC2 实例、服务器出口带宽、S3 图像存储和图像带宽、EBS 磁盘空间和用于备份的快照,以及用于自动扩展的 AMI 图像的空间。然后,您可能需要 Guard Duty 等服务来监控您的帐户(便宜),CloudTrail 日志作为审计日志(这只是存储价格)和其他零碎的东西。它可以开始累积。
AWS 带宽可能非常昂贵。在进行详细计算之前,请粗略估计一下,可能是一个 db.m5.large RDS 数据库、几个 m5.large EC2 实例、300GB EBS 磁盘和您的传出带宽。如果您使用大量带宽,则可能比您当前的 co-lo 花费更多。如果您的大部分带宽是静态资源,那么像 CloudFlare 这样的外部 CDN 可以显著降低您的成本,前提是您正确设置了缓存标头。我不知道他们会缓存您的 236GB 中的多少,但他们会缓存所有经常使用的东西。不过,他们所有的 100 多个数据中心都会从您的服务器下载资源,因此您仍然会使用相当多的带宽。
我故意没有解释我使用过的每个术语。AWS 很复杂,很难做好、保证安全。在开始使用 AWS 之前,您确实需要进行一些培训来了解它。一旦您了解了 AWS,它就非常强大,但可能很耗时。或者只需使用上面提到的 Lightsail。
答案2
根据经验,使用云总是比使用专用服务器更昂贵。例如,对于我的私人项目,我有一个相当强大的服务器(金属),每月花费 40 欧元,而使用 AWS 每月则要花费一百多欧元。
但如果你是一家企业,那你就不必计算真正的成本了。对于我自己的服务器,我必须这样做:
- Linux 发行版更新
- 软件更新
- 一般维护
- VPN 配置
- 负载均衡器配置
- SSL 证书
- 可能在其他大陆也有镜像
- 所有其他配置内容
- ...
作为一个普通人,这些事情基本上是免费的。我利用业余时间做这些事情,弄清楚如何做这些事情很有趣。因此,我每月为我的服务器支付 40 欧元,这就是我全部的开支。
作为一家公司,所有这些事情都需要花钱。必须有人(最有可能是拿薪水的人)来做所有这些事情。您可能必须聘请服务器管理员或 DevOps,他们希望每年至少获得 5 位数的高薪,甚至可能是 6 位数,具体取决于位置。如果您自己做这些事情,它们会占用您本可以花在实际开发或推广应用程序上的时间。时间就是金钱。
云可以为您节省所有这些,特别是如果您使用容器化之类的东西,它消除了您担心实际服务器的需要,只需要维护您正在使用的实际软件。
要说它是否具有成本效益,需要考虑管理时间。与专用服务器相比,您在云基础设施上花费的钱很可能是 4-5 倍,而且用户越多,成本就越高。这是否比您自己或聘请系统管理员管理当前基础设施所花费的钱更多,还无法确定。
作为个人,我总是会选择专用服务器。
作为公司,这变成了一个艰难的计算,通常趋向于使用云。
答案3
当你考虑价格时,你只需要考虑一个问题:公共云的销售方式是虚拟的具有多代不同 CPU 的 CPU(基本上是超线程)。
因此,不要考虑:1 个本地核心 = 1 个云 CPU。 这是错误的!
最多考虑:1 个本地超线程 = 1 个云 CPU。 这是几乎 正确的!
这里的‘几乎’是因为不同代的 CPU 具有不同的每个超线程性能。
另一方面,要考虑到内部部署规格通常过大。因此,在比较 CPU 之前,请先真正评估您的电源需求。
然后在线计算器可以帮助您进行粗略估算。
答案4
最简单的方法是将您当前的服务器规格与云实例产品之一大致 1:1 匹配,然后定价。例如,如果您的服务器是 4 CPU / 16 GB RAM,那么在 AWS 中,您可以查看m5.xlarge每小时费用为 0.192 美元,即每月约 140 美元。一旦您确信实例大小适合您的需求,您就可以承诺 1 年或 3 年的保留实例期限,最多可节省 60%。除此之外,您还需要一些磁盘空间,每月约 0.10 美元/GB,以及出站流量的成本。这是简单但可能更昂贵的方法。
另一个选择是重新设计网站。将图像存储在 S3 存储桶中(可扩展性更强,每 GB 成本更低),这意味着您可能可以使用更小、更便宜的实例,因为它不会因提供静态图像而超载。同样,您可以将数据库卸载到托管数据库服务(例如 AWS RDS)或使用 NoSQL 数据库(如 AWS DynamoDB)。但所有这些都可能需要更改代码。
如果您愿意重新设计网站并使用更便宜的云原生服务,您可以节省很多。节省多少?这取决于具体情况,在您决定使用哪些服务之前,没有简单的答案。
另一方面,如果你只是希望从你的托管服务器迁移到云服务器,这是很容易计算的。见上文。
希望有帮助:)