2009-12-19 121 views
7

我打算将我的web应用程序部署到EC2。我有几个Web服务器实例。我有1个主数据库实例。我有1个故障转移数据库实例。当主数据库实例失败时,我需要一种策略将Web服务器重定向到故障切换数据库实例IP。EC2数据库服务器故障转移策略

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

我使用的是.Net和SQL Server。我的连接字符串被加密。

有没有人有策略使用某种形式的自动化或DNS配置故障转移到EC2中的数据库实例?

请让我知道。

回答

0

没有使用EC2,但肯定你需要:

(一)把你的前端到一些自定义的维护模式,您所定义的,当你切换IP上;并使前端执行必要的步骤来管理潜在的数据完整性和与先前服务器关闭有关的数据丢失问题,并且新服务器在进入和离开您的定制维护模式时即将到来

或者,对于零降(b)从零开始设计目标/关系和事务级别的系统,以支持零停机故障切换。这不是你可以用任何应用程序快速锁定的东西。 (c)使用某些数据库支持进行自动故障转移。我不知道SQL Server是否支持适用于您的应用程序的故障转移,或者在此处适用。我建议在问题中添加一个“sql-server”标签以开始搜索合适的受众。

如果弹性IP不起作用(听起来很奇怪,至少可以说 - 你不应该跟EC2谈谈),你可能需要指导你的前端使用哪个新的数据库IP同时告诉它从维护模式转到正常模式。

+0

可能值得在姐妹网站serverfault.com和/或superuser.com上提问...... – martinr

+0

感谢您的回复。我问EC2 ..但他们有非常糟糕的形式。非常浪费时间。 (b)我已经在那里与应用程序。我有一个接口来获取/设置连接字符串的IP。所以,我可以随时改变它......我只是希望有人有一个聪明的DNS解决方案。我会在serverfault.com上问这个问题,看看我得到了什么。 – Dave

0

如果你愿意掏出一点额外的钱,看看Rightscale's工具;他们已经构建了自定义服务器映像和支持数据库故障转移(在其他许多事情中)的支持工具。 This link解释了如何使用MySQL,因此尽管它不使用SQL Server,但希望能够向您展示一些原则。

0

我一直认为有这种可能性在connnection串

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

如果使用ADO.NET或者SQL 本机客户端连接到 被镜像的数据库中,您的应用程序可以利用 的驱动程序能力 自动重定向连接 当数据库镜像故障转移 发生时。您必须在 连接字符串和故障转移 伙伴服务器中指定初始的 主体服务器和数据库。

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

有ofcourse许多其他方式来 编写使用 数据库镜像连接字符串中,这仅仅是一个例子 指出故障转移 功能。您可以将此 与其他连接字符串 选项结合使用。

0

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

  • 备份:您可以安排包含数据
  • 容错数据库EBS卷的自动快照:在失败的情况下,奴隶被提升主并安装存储将如果发生故障的主,新主人是在同一AZ进行切换,或采取体积

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

  • 在同一个AZ中有奴隶吗?如果是,则将其升级,切换EBS 卷(限于单个AZ),切换您可能具有的任何ElasticIP,重新配置其余从节点的复制。
  • 如果没有,是否有一个从另一个AZ完全复制的奴隶?如果是这样,推广它, 然后做到上述。
  • 如果在同一AZ中没有从站,并且在另一个AZ中没有完全复制从站,则从主站的 卷创建一个快照,然后使用此快照在正在运行从站的AZ中创建一个新卷。然后执行上述操作。
相关问题