EC2数据库服务器故障转移策略

时间:2009-12-19 13:46:09

标签: amazon-ec2 failover

我计划将我的网络应用程序部署到EC2。我有几个webserver实例。我有1个主数据库实例。我有1个故障转移数据库实例。我需要一种策略,在主数据库实例失败时将Web服务器重定向到故障转移数据库实例IP。

我希望我可以在连接字符串中使用弹性IP。但是,Web服务器无法访问/ ping弹性IP。我有几个蛮力的想法来解决这个问题。但是,我试图找到最优雅的解决方案。

我正在使用所有.Net和SQL Server。我的连接字符串已加密。

是否有人采用某种形式的自动化或DNS配置来对EC2中的数据库实例进行故障排除?

请告诉我。

5 个答案:

答案 0 :(得分:1)

http://alestic.com/2009/06/ec2-elastic-ip-internal

告诉您如何使用弹性IP公共DNS。

答案 1 :(得分:0)

没有使用过EC2,但你必须要么:

(a)将您的前端置于您定义的某个自定义维护模式,同时切换IP;并让前端执行必要的步骤来管理与先前服务器关闭相关的潜在数据完整性和数据丢失问题,以及当新服务器进入和离开自定义维护模式时出现的新服务器

OR,对于零停机时间系统:

(b)从头开始在对象/关系和事务级别设计系统,以支持零停机故障转移。对于任何应用程序来说,这都不是一件好事。

(c)使用一些数据库支持进行自动故障转移。我不知道SQL Server支持适合您的应用程序的故障转移是否存在或适用于此处。我建议在问题中添加“sql-server”标签,以便开始搜索合适的受众群体。

如果弹性IP不起作用(这听起来很奇怪 - 不应该与EC2谈论这个问题),您可能需要能够指示您的前端使用哪个新的数据库IP告诉它从维护模式进入正常模式的时间。

答案 2 :(得分:0)

如果您愿意支付一些额外的钱,请查看Rightscale's工具;他们构建了自定义服务器映像和支持数据库故障转移的支持工具(以及许多其他事情)。 This link解释了如何使用MySQL,因此即使它不使用SQL Server,也希望能向您展示一些原则。

答案 3 :(得分:0)

我一直认为连接字符串中存在这种可能性

这是从How to add Failover Partner to a connection string in VB.NET开始的(但尚未测试):

  

如果您使用ADO.NET或SQL连接   Native Client到数据库是   镜像,您的应用程序可以   利用司机的能力   自动重定向连接   当数据库镜像故障转移时   发生。您必须指定初始值   主服务器和数据库   连接字符串和故障转移   合作伙伴服务器。

Data Source=myServerAddress;Failover Partner=myMirrorServerAddress;
Initial Catalog=myDataBase;Integrated Security=True;
     

还有其他许多方法可供选择   使用编写连接字符串   数据库镜像,这只是一个   示例指出故障转移   功能。你可以结合这个   与其他连接字符串   可用的选项。

答案 4 :(得分:0)

为了扩大gareth的答案,云管理软件通常会解决这类问题。 RightScale就是其中之一,但您可以尝试使用enStratus或Scalr(免责声明:我在Scalr工作)。这些工具提供了以下故障转移解决方案:

  • 备份:您可以安排包含数据的EBS卷的自动快照
  • 容错数据库:如果发生故障,如果发生故障的主服务器和新主服务器位于同一个AZ中,或者从卷中获取快照,则会将从服务器提升为主服务器并挂载已存储的存储

如果您想构建自己的解决方案,可以复制下面我们在Scalr中使用的详细过程:

  • 同一个AZ中有奴隶吗?如果是这样,推广它,切换EBS 卷(仅限于单个AZ),切换任何ElasticIP你 可能有,重新配置其余奴隶的复制。
  • 如果没有,是否在另一个AZ中完全复制了一个奴隶?如果是这样,推广它, 然后做上面的事情。
  • 如果同一个AZ中没有从站,则没有完全从站 在另一个AZ中复制,然后从master创建快照 卷,并使用此快照在AZ中创建新卷,其中a 奴隶正在运行。然后做上面的事。