什么时候该为网站引入高可用性?


16

什么时候该为网站引入高可用性?

关于高可用性选项有很多文章。并不是很明显,但是何时才是从单服务器切换到高可用性配置的最佳时机。

请考虑我的情况:
http : //www.postjobfree.com是24/7的网站,访问量很大:http :
//www.similarweb.com/website/postjobfree.com

当前,我在单个服务器上运行它:IIS 7.0 Web服务器和SQL Server 2008都在同一硬件盒上运行。

偶尔(约一个月)〜5分钟的停机时间通常是由某些Windows Server更新所需的重新启动引起的。通常,停机时间是有计划的,发生在晚上。仍然令人不快,因为Google Bot和某些用户在夜间仍然活跃。

当前的网站收入约为每月$ 8K。

我考虑切换到两台服务器的配置(两台Web服务器的Web场和两台硬件服务器上托管的2台SQL Server的群集)。

优点:
1)高可用性(理论上没有停机时间)。即使其中一台服务器出现故障,另一台服务器也将接管。
2)没有数据丢失:如果没有SQL群集,则在硬件故障的情况下最多可能会丢失一天的数据(我们每天进行备份)。

缺点:
1)更加努力地设置和维护这种配置。
2)较高的托管成本。而不是每月约600美元,而是每月约1200美元。

您的建议是什么?


我的问题的答案可能会影响发展。例如,我可能考虑将数据库拆分为几个部分,并将需要高可靠性(用户输入)的数据与需要高性能(计算)的数据分开保存。

2
嗨,丹尼斯,这并不是真正的建议,因此我将其保留为评论,但是对于单个Windows服务器,您的托管成本似乎很高?我假设它是一台完全专用的服务器(不是VM),但是即使那样,您也应该花大约一半钱购买一台具有8GB RAM,大量磁盘空间等性能的规范服务器。值得一提的是您的托管公司关于获得更好的价格。
伊万·里斯

6
我认为应该从项目构想的第一刻就计划高可用性。
汤姆·奥康纳

Ewan,我希望我的网站能够快速运行,所以我有配备8 GB内存和SDD驱动器的Quad处理器。考虑软件许可(Windows,SQL Server),SSL和技术支持的成本。您是否有一个价格低廉的好解决方案?我目前使用服务器智力(由SoftLayer支持)进行托管。您会推荐一些更好的东西吗?
丹尼斯·戈列里克

2
Windows更新随附安全更新。如果我不修补服务器,则可能容易受到攻击。您将为Windows生产服务器推荐什么更新频率?
丹尼斯·戈列里克

Answers:


15

简短的答案:当停机或发生故障的风险使您付出的代价比拥有高可用性所付出的代价更大时。

从根本上讲,这是一个经济决定。举个例子。$ 8k /月意味着2个小时的停机将使您花费$ 22。如果您可以配置系统,以便在2小时内从头开始访问一个功能齐全的站点,那么高可用性仅会为您带来22美元以上的功能。

换句话说,您可以节省金钱,除非/直到给定一个月中有54个小时无法避免的停机时间为止。


16
您也必须考虑声誉风险
gbn

7
每小时停机的成本几乎可以肯定取决于服务器何时停机。这些交易不太可能在24小时内平均分配。通常只在几个高峰时段发生,这时损失会更大。
John Gardeniers

Slartibartfast,我以这种方式理解您的答案:确保灾难性故障后的恢复时间合理(几小时),数据丢失合理(几小时),并允许自己不定期(至少目前)安排较短的停机时间。这将意味着拥有每日备份,增量部分备份,以及可用于将所有配置还原到其中的服务器。听起来对吗?
丹尼斯·戈列里克

回应:gbn:同意;我本来想作一个简单的解释,但声誉很容易成为重要因素。John Gardeniers:可以,但是如果只在星期日的上午11点至下午1点之间使用该站点,则计划的停机时间并不是真正的问题,而计划外2小时停机的$ 2k价格标签right_then是。到那时,您必须找出针对addnl服务器每月600美元的特定费用,不合时宜的中断(以2k美元的收入成本)的可能性。提示:除非在关键时期内发生随机故障的频率超过每年4次,否则这是不值得的。
Slartibartfast

Dennis Gorelik:确定要防范的风险(例如,维护期间的业务损失,服务器丢失,数据中心的丢失,帐户/安全性/数据库漏洞),并采取措施防范这些风险。在这种情况下,您可以防止由于维护和意外故障(据我所知)而导致的停机时间。您所描述的应该可以解决问题,但是请记住,只要您可以确定可以购买并在还原期间进行设置,就不必拥有服务器。
Slartibartfast


2

我认为大多数用户可以处理一些计划内的停机时间。考虑到ebay在星期五晚上每周更新一次,因此有时出价无效。我的(澳大利亚主要银行)的网上银行每周安排几个小时的停机时间。Twitter一直离线。Heroku / EC2最近几天出现故障。

我会坚持这种观点,如果您真的每个月只讲5分钟,那么作为系统管理员,您的工作做得很好。


1

您已经提到过Google是索引编制方面的一个因素,但是也有必要考虑延迟/站点响应能力可能对SEO产生的影响。这是一个黑匣子,所有这些都很难量化-尽管就其价值而言,马特·卡茨Matt Cutts)认为这是一个单一的中心。正如其他人所说,我会更加关注声誉。


1

请记住,与安全性一样,高可用性不是产品,而是过程。

例如,数据库复制只会使您到达数据库的每个镜像都能够独立继续的地步,但是在更换了故障的组件之后,您还需要一种重新同步的策略。

以一个订购系统为例:客户提交订单,并且在处理过程中,与他交谈的物理系统在将订单信息存储在其本地数据库副本中后失败。顾客不耐烦,再次按下“提交”,然后被定向到另一个接受订单的服务器。如果您的数据库仅通过在另一侧重播丢失的INSERT语句来重新同步,则该命令将被重复,这可能不是您想要的。

正如@Slartibartfast所建议的那样,这全都归结为一项经济决定,但是我建议您也计划在此以后的几年。如果您期望需要适当的HA设置,那么现在将是为准备工作预留资源的好时机。


1

在考虑这一点时,我认为您会考虑设置“虎鲸”页面。

有很多方法可以做到这一点,但是route53和s3的aws组合在我的小型站点上效果很好。

我通过运行状况检查设置了域,以便在发生故障时DNS将用户发送到位于s3中的静态html页面上。成本几乎为零。

根据我的经验,让您的网站说“对不起,但是我们正在努力”,这给用户带来了很大的不同。一个甚至可以与用户交流的Twitter帐户。

这对于减轻“声誉损失”(可能是断电的最重要影响)要走很长时间。

请参阅:https//aws.amazon.com/blogs/aws/create-a-backup-website-using-route-53-dns-failover-and-s3-website-hosting/,以获取设置指南。

DynDns的社交故障转移http://dyn.com/managed-dns/social-failover/是一种类似的事情。

如果您的DNS记录的TTL较低,并且可以通过某种方式对其进行编程,则可以自己滚动并进行运行状况检查,然后编写DNS更改脚本。


是否必须从承载DNS的同一服务器上执行这些运行状况检查?我无法想象如何进行有条件的DNS更新。
丹尼斯·戈列里克

@DennisGorelik不一定是必需的,但是您的DNS记录需要短的TTL,无论您执行什么健康检查,都需要能够快速更改记录。更新了有关如何实现此目标的更多信息的答案。
2015年

DNS的短TTL加上对运行状况检查的依赖性可能会使整个系统不稳定(即使主服务器工作正常也可能会切换)。实际上,这可能会使最终用户的处境更糟,而不是更好。
Dennis Gorelik

短TTL本身对任何像样的DNS提供商都不应该成为问题,并且如果您在运行状况检查中设置了一个较低的标准(例如,如果10分钟内没有http 200,则进行故障转移),那么稳定性就不是问题。或者,您可以跳过运行状况检查部分,并进行手动转换。这将意味着您的用户遇到“连接超时”和其他难看的错误,但不会出现误报的机会较长。
2015年

0

您是否考虑过使用EC2之类的东西来灵活扩展并消除缺点?是否值得使用EC2最终是一项经济决策,但至少是要考虑的选择。


-2

为了避免数据丢失,您应该在群集之前研究Raid配置。您还应该配置故障转移IP,在发生灾难时可以将其从一台服务器切换到另一台服务器,而不必等待DNS传播。


这是哪里来的?是什么让您认为发布者尚未使用RAID?
Chopper3 2011年

斩波器3。我只说Raid可以解决他的数据丢失问题。
yqt 2011年

2
怎么样?如果一个磁盘肯定死了,但是如果他的控制器坏了
怎么办
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.