如何实现最便宜但非常可靠的 Web 应用程序配置?
让我们假设至少 2 个应用程序服务器(每月 80 美元)加上一个数据库服务器将支持大多数人的应用程序一段时间 - 我们只想实现良好的可靠性(至少 3 个 9)。
现在可以从任何合理的提供商(Amazon EC2、Slicehost等)以大约 80 美元/月的价格租用一个相当不错的 VPS 解决方案。然而,这些 VPS 托管解决方案都不是完美的,我经历过超过 99.9% 的停机时间。
我不确定如何最好地配置这 3 台机器 - 最好将两个应用程序服务器放在不同的提供商上(最好使用不同的网络连接)并使用 HAProxy 互相监视。如果其中一个失败,它将更新 DNS 以将其从应用程序的 IP 地址池中删除。但是数据库服务器该怎么办呢?这仍然是单点故障。
我过去曾遇到过 DNS 问题,但这可以由外部专用提供商(如DNS Made Easy)以非常便宜的价格(15 美元/年)处理。这也支持在必要时动态修改 DNS 条目,如果您不打算在危机期间手动更新它们,这很方便。
每天至少应该对外部源(S3 或 FTP 站点)进行一次备份 - 每月最少一次。您需要一个自动部署和恢复脚本,以便从您的备份中获得超过 3 个 9。
由于数据库的可用性,我不太觉得这完全存在,但它会花费你大约 80x3 美元 + 磁盘空间 + DNS = 250 美元/月。
一个人能做得更好吗?
便宜,最小和强大?你刚刚击中了“好/快/便宜”的邪恶三角——选择 2,你不能拥有全部 3。:)
实际上,如果您可以以 250 美元/月的价格执行具有故障转移功能的地理冗余应用程序,那么您已经做得很好了。
我能想到的唯一替代方案是您已经拥有的 VPS 解决方案,或者 Microsoft Azure 可能符合要求。
我同意你在哪里做得很好。
确保您有可靠的恢复过程,以便您遇到的任何故障都可以快速解决。
“三个九”的可用性相当于一年中大约 8 小时的停机时间。如果您不计算维护窗口,那么对于主流托管公司来说,这并不是一个特别苛刻的标准。我怀疑您在两个备受推崇的托管服务上看到的情况更糟。
请记住,就主机而言,一旦他们为您提供工作服务器,您就可以备份。如果您出现故障,并且 90 分钟后他们为您提供了另一台服务器,那么您的停机时间为 90 分钟。如果你需要三天才能让它工作,那额外的三天不是他们的问题。
数据库服务器显然是单点故障......您必须确定您对这种风险的容忍度以及减轻风险的成本。我对使数据库服务器冗余的了解不多,只是对于小型系统来说确实很难。如果这让您担心,您最好的选择是签订合同来托管数据库本身,而不是使用 VPS 并管理您自己的数据库服务器。一个例子(来自谷歌,不是推荐)可以在这里找到;它不是特别贵。
http://www.linode.com/index.cfm对我的一些朋友来说非常可靠。它们有多个位置,您可以轻松扩展。
我认为您在这里面临2-3个问题:
正常运行时间定义
三个九包括或不包括已宣布的维护窗口?你们会提前多久宣布维护窗口?
硬件正常运行时间
这只会随着冗余而扩展。你永远不知道它什么时候会坏,三个九意味着每年只有大约 9 小时的停机时间。因此,即使是 4 小时的合同也只会给您一次停机时间(如果确实在 4 小时内修复,则为 2 次——但这并不便宜)。恕我直言,您必须为此拥有 2 台服务器
软件/服务正常运行时间
您是否要通过 ping 可达性、HTTP 答案来定义正常运行时间,如何?- 您可以通过预先定义您认为“向上”的内容来轻松解决这个问题(或者如果这更容易,您认为“向下” - 但那将是不良枚举)
就便宜而言,我不知道你所说的便宜是指初始成本还是运行成本。您几乎可以在任何地方获得一些便宜的服务器,但您可能需要更多的服务器来排除硬件损坏,或者从 HP、Dell、IBM 购买一些不错的硬件,初始成本较高,但硬件损坏的可能性要低得多,因此会有较低的运行成本。只需计算一生中哪一个会更便宜。
如果您只想要一些网址:
server4you 对我来说非常好 具有地理冗余位置(欧盟和美国)的 EC2 也可能非常有趣
编辑:要清楚,当我说 2 台机器时,我的意思是每个用例的冗余机器(冗余 DB、冗余 Web、冗余 DNS、冗余
$whatever
根据您的确切流量、需求和要求,我在 1 和 1 上托管了许多较小的 Web 应用程序,根本没有太多麻烦。
除此之外......几乎所有流行的托管服务提供商都有不错的(阅读:已发布)正常运行时间。
99.9% 的正常运行时间意味着您可以在一年内接受 8 小时 45 分钟 35 秒的停机时间。
大多数体面的托管公司很容易做到这一点。
我会推荐折扣 ASP.net。我喜欢你可以获得免费的沙盒服务器这一事实,而且我不记得我见过任何停机时间。