设置高可用性虚拟化环境


9

对于一个项目,我的任务是为网络商店和CMS系统规划高可用性设置。但是,当然,该项目的预算很紧张。因此,高端解决方案可能不在预算之内。

将有两台运行Web服务器(CMS,车间)的计算机,一台运行数据库的计算机,以及一台运行传真服务器的计算机,该传真服务器用于向合作伙伴下达订单。所有系统都运行Linux。所有这些组件都必须具有高可用性,并应支持透明的故障转移。

为了降低硬件成本,我考虑使用虚拟化环境。那里有很多信息,但我不知道确切要开始。显然,至少需要将服务器作为虚拟机的主机,这样就不会出现单点故障。

哪种方法可以支持高可用性?

第一个问题是在这种情况下哪种虚拟化解决方案最佳。需要某种管理界面。需要一种将正在运行的虚拟机从一台主机移到另一台主机的方法,以便可以对主机进行维护。需要某种机制,以便在一台主机发生故障时虚拟机仍然可用。您能在这里提出有效的解决方案吗?

在大多数情况下,共享文件存储似乎是高可用性的先决条件(预计VMware vSphere会非常昂贵)。但是,与其将另外两个服务器添加到设置中以提供冗余的NFS文件存储,不如将更多的钱投入虚拟机主机中。是否有可能仅与两个虚拟机主机相处?一个解决方案可能是两个同时使用这两个作为NFS主机。为此会有很多性能损失吗?

编辑:我的目标是99.9%的可用性。但是,由于有正常的工作时间,因此不需要24/7的可用性,因此有一定的操作空间。必须以某种方式保证的可用性时间是从上午10点到午夜。


2
“高可用性”有多高?您是在拍摄1到9或6到9的可用性,还是介于两者之间?除非您有具体的要求,否则无法说出您想要做什么在给定的预算下是可以实现的。
2012年

是的,你是对的。我的目标是99.9%的可用性。
spa

“ 99.9%”不仅仅是我们抛出的一个短语。这相当于每年停机约8.8个小时。这使您脱离了预算紧张而无法正常使用的系统范围。如果预算有限,您能否负担得起该级别的可用性?
罗伯·摩尔

1
@RobMoir-我认为如果您满足我在回答中概述的标准,那么在这8个小时内您将无法解决很多问题(而且预算可能仍然很小)。如果您确保非工作时间的提前警告,计划的停机时间不计入您的SLA(对于非24/7软件)。
马克·亨德森

@MarkHenderson我知道您是对的,我只是说这个过程需要一些思考和计划,并且不会“立即发生”(您需要确保在8小时内可以在​​现场很好地获取备件,对于例如,因此您不想损失7个小时的“窗口”到邮局,或者发现您最喜欢的供应商选择了当日因某些琐碎的电缆而缺货,而这些电缆通常会成千上万库存) 。
罗伯·摩尔

Answers:


13

总的来说,要实现高可用性,您需要:

  1. 多台服务器
  2. 数据的多个一致副本
  3. 可以在多个服务器之间访问的一致数据
  4. 一种自动启动备用服务器上的第二个实例的方法

1号听起来很简单-买两个相同的服务器。

可以通过复制SAN(昂贵,非常快速,非常可靠)或在每台服务器上复制文件系统来实现2号(便宜,速度和可靠性取决于您对所选技术的了解)。

可以通过SAN(一个存储LUN,由两个服务器访问)或一个复制的文件系统(两个独立的存储区域,每个服务器只能看到自己的区域)来实现第3个。

数字4可以通过心跳应用程序来实现。

要用少量预算(例如VMWare vSphere)来完成此任务,您可以使用SAN VMWare现在提供的自复制存储设备,该设备在两台服务器上提供两个不同的数据存储,可用于高可用性。vSphere还提供内置的心跳和高可用性配置。

要在没有预算的情况下执行此操作,可以沿Xen路径移动,并使用DRBD在两个节点之间复制存储。然后,您可以设置心跳来切换活动的DRBD存储节点和Xen实例,以便在第一个主机关闭时在第二个主机上启动VM。

使用这些基本建议,您将不会获得5-9(99.999%)的正常运行时间,但是如果您知道自己在做什么,则可以使用最便宜的方法轻松获得3-nines(99.9%)。


9

在讨论共享存储时,您用“将花费多少现金来购买”来谈论“费用”。当然,这是完全正确的一点,到处都是钱紧。

但是,如果您在谈论高可用性,那么您还需要问“ 为什么我们要高可用性?” 例如,如果答案是“由于企业每小时在线销售收入超过2000美元,那么如果我们休息一个小时,那么我们就损失了2000美元”,那么费用和负担能力的问题就变成了“买得起买东西,使或极大地提高了我们的高可用性部署?”

这是一个重要的细节,它会引起您对预算的评论-IT“尾巴”一定不要为解决小问题坚持过于复杂和昂贵的解决方案,而要“摇摇欲坠”,但与此同时, IT基础架构的某些要求,则必须准备好对其适当的预算或调整其要求。

我认为虚拟化在提高系统可用性方面具有很大的潜力,但这并不是魔杖。硬件方面虽然很重要,但在软件需求方面却是次要的-如果一个SQL Server群集如果前端应用程序进行通信而崩溃,那么如果其中一台SQL服务器崩溃,则SQL数据库群集不会崩溃就没有任何好处。到数据库阻塞,因为它无法处理故障转移。

而且,两个“高可用性”服务器在数据中心中彼此相邻仍然容易受到电源故障,盗窃等的影响。同样,根据“ 我们为什么这样做?” 的答案,您可能需要充分考虑这一方面小心,因为这会增加项目的相当多部分的费用和复杂性。


3
...no good having a SQL database cluster that falls over with no trouble in the event of one of the SQL servers crashing if the front-end application that talks to the database chokes because it can't handle the failover.-我对此强调不够。我们有一个客户,让我们在大型SAN上实现了HA SQL Server群集,并且在故障转移的情况下,由于无法处理通信中断,最终不得不重启其软件。当SQL Mirror和NLB足够时,这是一项昂贵的工作,徒劳无功。
马克·亨德森

听起来我们两个人在旧项目中都有类似的伤疤
Rob Moir 2012年

@MarkHenderson为什么通讯中断(顺便说一句-SAN还是网络)?
尼尔斯

5

建议您在不知道使用哪个数据库和应用程序服务器的情况下:

  • 在VM模式下,以PV模式使用XEN> 3.2(这是我个人最喜欢的)-隔室或其他轻量级虚拟化解决方案也可能适用(OpenVZ仅举一例)。
  • 在每个物理节点上构建四台VM机器
  • 将本地RAID 5与SAS 3,5“磁盘一起使用-尽可能多地在本地使用磁盘(5个为好)
  • 使用15k RPM磁盘(您的数据库将需要它)
  • 使用DRBD和OCFS2提供廉价的“共享”存储,并使用快速,安全,可靠的本地网络进行此连接(直接互连的绑定非常快速且良好)。
  • 在应用程序级别执行HA
  • 在两台机器之间使用负载平衡,因此您可以获得8台机器执行并发任务

HA-示例:

  • 应用程序服务器:以集群活动/活动模式使用Tomcat
  • LVS:使用并发从属和主复制lvs
  • Oracle-DB:使用RAC(我不知道是否有等效的开源DB解决方案)

如果在应用程序层上进行HA,则该层最了解如何复制会话。如果一个节点发生故障(计划内或计划外),则存活的节点将接管包括会话在内的所有任务。


“ Oracle-DB:使用RAC”-OCFS2不许可或不支持Standard Edition。除此之外,这是一个非常有用的答案。
kubanczyk

@kubanczyk Oracle-RAC不仅仅是ocfs2。但是ocfs2是免费的。因此,您可以随时使用它。
尼尔斯

2

为什么要购买自己的主机?您为什么找不到像BlueLockTerremark这样的企业云/ IaaS提供程序,它将提供所需的基础架构。他们将提供以下服务,例如vSphere HA(比服务HA更像是减少停机时间,但这是一种经济高效的解决方案),防火墙,LTM / SSL卸载程序,SAN(具有冗余架子),监视/警报等。请注意,我们不是在这里谈论消费者云解决方案,因此要做好付出代价的准备。


是的,你是对的。但是,设置包括用于传真传送的自定义硬件。因此,云解决方案不会令人遗憾。
spa

@spa,您仍然可以在其物理环境上配置自定义硬件,其余的在虚拟环境上并桥接VLAN。
HTTP500 2012年

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.