在对一天早上无法启动的服务器感到害怕之后,高层决定业务需要高可用性/故障转移设置。
我们有 5 台主要服务器(4 个 Linux,1 个 OpenBSD),所有这些服务器都需要运行才能让公司运营。其中三台服务器相当标准(文件/Web/数据库),第四台处理大多数网络路由和网络代理,而第五台支持我们的电话系统并具有非标准硬件。
我的老板说服务器故障的周转时间应该在 30 分钟以内。
我在这个领域的经验是不存在的(我只是一个被“提拔”的程序员),所以我想我的问题真的可以归结为:
- 这是否应该由具有平均服务器管理技能的人尝试。如果是这样,我应该读什么,我应该和谁谈谈?
谢谢。
我认为你应该首先收集数字来描述与满足所述“要求”相关的成本,看看它是否在预算范围内。如果您对用于满足要求的所有“正常”方法(故障转移集群、具有“热迁移”功能的虚拟机管理程序等)不满意,那么您最好找一位可以帮忙。
可行性研究会产生一些成本,但发现一个好的解决方案不符合规定的要求(这意味着管理层需要更现实地设定期望——或者他们需要花更多的钱)而不是做一些半途而废的事情,最终根本无法满足要求并在此过程中浪费大量资金。
听起来你的老板刚刚把这个数字从空中拉了出来。也许他做了一些分析,并且知道与各种系统停机时间相关的每小时成本是多少,但我对此表示怀疑。这听起来像是一些与现实无关的天上掉馅饼的数字。如果您的所有系统都需要这种可用性,我会感到惊讶。在研究业务的过程中,您可能会发现只有一部分功能需要具有如此程度的正常运行时间和容错能力(因此,这样的解决方案最终成本会更低)。我确信电话和业务线应用程序都在那里,但您可能对其他一些系统的停机时间有一定的容忍度。
我的直觉告诉您,您可能会在使用虚拟化技术创建基于虚拟机在冗余硬件之间迁移的故障转移系统方面取得成功。它是否符合您的预算将取决于您的业务,因为您肯定需要某种类型的 SAN 才能有效地工作。
不过,不要忽视“传统”故障转移集群。如果您的应用程序非常适合这种配置,那么肯定也会有“胜利”。
我想知道你的老板是否考虑过灾难性的故障场景(建筑物烧伤、洪水、龙卷风、盗窃等)。如果这还没有计划好,这将是在一些一般业务连续性计划和灾难恢复应急中工作的黄金机会。
从可以进来研究您的业务并提出建议的人那里获得一些帮助。你不会后悔的。
“这条路会带来很多痛苦和伤害……”
那么,您的业务连续性计划是什么?你有灾难恢复计划吗?
你讨论过吗?写下来?测试过吗?
您需要与“高层”进行适当的对话,并真正深入了解高可用性的要求,因为不同的服务是不同的。
那么他们那天早上真正感受到的“痛点”是什么?
是吗?
我假设您已经为您的主要系统购买了高质量的硬件?很好,因为在硬件上廉价是一种虚假的经济,因为这些服务器带有“双重”的一切。
我还假设您知道如何重建服务器、更换风扇、电源、机架服务器、将双路径网络配置为冗余交换机?你已经做了足够多的时间来理解什么有效,什么无效,什么是正常的,什么是错误的?如果没有,那么获得帮助和培训(或至少练习和经验)。
也许很多问题是恐惧。他们不知道会发生这样的问题(以及服务器对他们的业务有多重要),而且您真的不知道自己在做什么(?)信心问题?
在走上非常昂贵的 HA 路线之前,您需要获得所有上述权利。企业能否负担得起这种昂贵的设备(根据定义,其中大部分设备只会在故障时使用,而且通常从未使用过!)
Evan 提出了一些好的观点,但这里可能有一些特定的成本效益方法,可以在面对故障时获得不到 1 小时的恢复时间。
小型企业可能意味着小型硬件,因此做一些简单的事情可能不会花费太多成本,这些事情实际上在面对问题时会增加大量的弹性。主要想法是准备好额外的硬件。
首先,对虚拟 IP 的想法感到满意。这是用户将与之交谈的 IP 地址,但可以驻留在您提供给它的任何服务器上。这是您作为用户的 IP 地址,应用程序将要与之通信。最终,它对您寻求的任何解决方案都是最有帮助的。拥有 VIP 意味着您在故障转移时不必重新配置任何应用程序。此外,请记住,拥有冗余硬件也会增加管理开销,执行两次配置更新而不是 1 次。
如果我们从您的路由/网络代理服务器开始,这可能是最简单的,因为它们不会是任何需要存储在盒子本身上的真实状态。因此,只需获取同一个盒子的副本,并对其进行相同的配置。我会将两者都插入 LAN 网段,并假设您的互联网在另一个接口上,如果它们出现故障,请交换电缆。从路由的角度来看,您将所有局域网客户端设置为针对其默认路由的 .1 地址(VIP),代理服务器为服务器 A 提供 .2 地址,为服务器 B 提供 .3 地址。通过这种方式,它们都可以被管理以进行配置更新(适用于两者)。故障转移所需要做的就是从 .2 中删除 .1 IP 分配并将其移至 .3,然后将 Internet 连接移至另一个接口。它不是很复杂,易于操作和理解,并花费第二个盒子的额外硬件。如果您可以在 Internet 端获得冗余,则可以增加一些复杂性,并使用 VRRP 之类的东西进行自动故障转移。
没有具体细节,很难说,但你的网络服务器可能同样简单。添加具有相同配置的第二台服务器,在两者之间创建一个 vIP,并在遇到故障时将 VIP 移动到备份中。我通常不介意故障转移时会话状态是否丢失(导致故障转移是一个关键问题)。因此,如果用户必须再次登录,没什么大不了的。同样,vrrp 可以用于自动故障转移。
转到您的数据库,这要复杂得多。大多数数据库都有某种主要/辅助模型,您可以将原始数据库备份到辅助数据库,然后将所有事务日志或数据库更改复制到辅助数据库。同样,您可以将其与实际访问数据库的应用程序/用户的 VIP 结合使用。但是,故障转移更加复杂。根据主服务器的故障,您可能需要实际启动并运行驱动器以复制和剩余的事务日志。然后将次级激活。如果您可以容忍一些丢失的数据,那么您可以立即将辅助激活。故障转移后,服务器 B 现在是您的主服务器,您的工作是恢复服务器 A,并将其转换为新的备份,以便在服务器 b 最终出现问题时做好故障准备。
文件服务器始终是最难的部分,因为与 DB 不同,要获得文件系统的内置功能要困难得多。但是,可以通过拥有第二台服务器来实现某种程度的弹性,并且只需编写一个脚本来扫描文件系统以查找更改,然后将任何新文件复制到您的辅助服务器。您基本上可以在我相信的 cron 上运行 rsync 来执行此操作。同样,您使用您提供给用户的 VIP,如果您进行故障转移,您将转移该 VIP。在您的脚本中,我强烈建议您在传输文件之前检查以确保系统是 VIP 的所有者。您真的真的真的不希望 rsync 以错误的方向执行并覆盖您用户所做的任何更改。如果文件失败,这可能会丢失一些文件,
我不知道你能对你的电话系统做些什么......这真的取决于供应商及其设置方式。供应商可能有一些现成的弹性解决方案。
最后的一些警告。确保彻底测试要使用的任何设置。确保您知道如何在不丢失关键信息的情况下进行故障转移。测试测试测试以确保它可以在您需要时工作。确保您有适当的流程,可以将配置更改、软件更新等正确应用于主备份和备份。好消息是,当您想要关闭服务器以进行升级等时,您可能可以进行受控故障转移。这不是主动-主动设置,因此您不知道辅助服务器是否会在您需要时工作。
我在电信工作,我们的设备非常冗余,在大多数情况下包括地理冗余。我们的第一个故障点是冗余在更改后没有经过测试,并且用户进行更改时不知道冗余模型是如何工作的。但是,我们还有一个额外的问题,即我们所有的设备都需要在不超过几秒钟的时间内支持自动故障转移。如果您只需要在 30 到 60 分钟内启动并运行,您可以容忍手动干预故障转移。你只需要做好准备。祝你好运。
其他人的观点都很棒,所以只有几个评论。
30 分钟是不可能保证的,尤其是对于所有事情。你可以说它是一个目标,但它不可能是一个保证,因为总是有 X 因素。您可能有 2 条 ISP 线路,而一辆卡车撞上建筑物并将它们都带走,因为您认为让它们从建筑物的两端布线并不重要就是一个例子。
作为成本核算的开始,将所有内容翻倍。你有 5 台服务器,所以你需要加倍。它不需要全部都在硬件上,你可以虚拟化,但你明白我的意思。最重要的是,一切都必须是 HA 意识,这也会增加成本,您可能会发现您将不得不用新的路由器替换您的路由器,哦,您需要其中的 2 个。不要忘记加倍供电并获得发电机,因为您不能保证电力公司会在 30 分钟内恢复供电。
这些示例或多或少认为它是一种热备用设置,我怀疑您的老板正在考虑这种设置。
我发现对小型企业更好的是设计一个恢复和分类所有东西的计划。
找出哪些服务是
关键(业务停止)
重要(业务放缓)
例行公事(企业可以暂时不用它)。
例如,您的呼叫中心电话非常重要,因此也许值得购买第二台服务器和第二个 ISP,而您的平均停电时间约为 15 分钟,因此我们将获得一个持续 60 分钟的 UPS(不要忘记工作站)。现在让我们说 ERP 很重要,这意味着你可以在没有它的情况下运行一段时间。也许您的呼叫中心人员使用它,但如果它出现故障,他们可以恢复为笔和纸或记事本,然后更新 ERP。如果它出现故障,那么执行此操作的过程可能会比尝试使其成为一项关键服务更便宜。常规的可能是打印机之类的东西,好吧,这很痛苦,但如果它们都坏了,我们可以在几天内到期。
如果 s**t 有一天真的击中了粉丝,那也给了你修理东西的命令:)
可能吗?当然。它负担得起吗?可能不适用于“小企业”,尤其是如果您的老板给您任意工作编号,并且他要求由代理程序员组成的 IT 部门提供高可用性(在其他地方见过很多次,但从来没有如果您的情况与他们的情况一样,那么您的压力水平非常好)。
故障转移是可能的,但通常需要冗余硬件、SAN 以在服务器之间共享数据等......换句话说,如果他们不聘请专门的管理员来处理它,那么祝你好运。
您提到的呼叫系统硬件是专用硬件,并且您提到了呼叫中心。您应该与供应商讨论使该选项变得多余的选项。对此一无所知可能会首先使支持无效。
其他系统很可能通过投资 VMWare 类型的解决方案(或 Hyper-V 或 XenServer,但我会先看看 VMware 和 XenServer)来获得一些冗余。然后,您可以考虑获得一个 SAN,几台具有快速网络交换机的强大服务器,并在出现故障时使用 LiveMotion 在硬件服务器之间迁移虚拟化服务器,并在需要时平衡服务器之间的一些负载。
您提到您在这些系统上运行 Linux。如果有钱购买多台服务器,您可以考虑使用心跳程序和 STONITH 设置 DRBD,以便在服务器之间复制数据,并在其中一个不可用时接管;您会考虑设置一个系统,在该系统中您实际上复制了每台服务器,并且服务器机房的功耗和散热量增加了一倍(如果您有服务器机房)。这可以通过硬件成本和您的理智来完成。另外,您必须对其进行测试,在配置它时会停机,并且您仍然有可能有时它无法工作,因为仍然有可能出现需要处理的问题(拆分例如大脑)。
最后一个计划是让几个系统充当空白系统,并制定一个非常好的备份计划,以便在服务器死机时将数据恢复到其中一个“空白”系统。如果/当服务器死机时,在现场拥有硬件将为您提供一些选择;但是您在恢复数据时仍然会有一些停机时间,并且您需要有关如何将应用程序正确安装到新服务器的说明。根据您的工作速度和数据量,您的停机时间可能会持续几个小时到一两天。您确实有一个有效的、已知良好的服务器备份,并制定了恢复计划,是吗?
你应该尝试一下吗?我的第一反应是,如果你对任何建议都摸不着头脑,或者在试图想出这些东西时感到胃里有一个坑,那么你不应该这样做。您需要一家咨询公司来查看问题并计算成本并实施它,或者您需要聘请专门的系统管理员为您的公司做这件事。
他们告诉你这样做,而你说你“只是一个被“提升”的程序员,你有一个 PHB 告诉你提供冗余,最大故障时间为 30 分钟,这是你很善良的事实一条小溪。