我们刚刚在Azure上遇到了SQL数据库连接问题。虽然非常快,大约1分钟,它确实踢出了所有用户,和/或提出了Elmah错误,例如:
The wait operation timed out ...
at System.Data.ProviderBase.DbConnectionPool.TryGetConnection
即便是这样的故障也会损害人们的信心。我试图了解面对这些短暂停电的好方法。想到的一些想法包括:
有一些代码在使用它们之前检查所有必需的服务是否正在运行,并继续检查提供友好的错误消息,直到它们为止。我认为有一种趋势是假设一切都可用并且有效,我想知道这是否是云世界的一个危险假设。我认为这更像是构建分布式应用程序时所采用的方法,尽管可能不适用于通常靠近Web应用程序的数据库。
使用TrafficManager等故障转移程序。但是它很昂贵,因为现在有一个实例,并且还需要处理> 1 DB等同步数据。Associated link on Failover procedure in Azure
确保使用自定义错误页面,因此未看到黄色死亡屏幕(YSOD):
<customErrors mode="RemoteOnly" defaultRedirect="~/Error/Error" />
虽然YSOD是由一位同事看到的,但不确定如何实施上述规定。一旦批评我对Azure的批评是,如果网站关闭,那么可以得到错误的错误页面,仅由Azure提供而不是可自定义的,尽管我被告知使用CloudFlare之类的东西可以解决这个问题。
我认为a)是最有趣的概念。我们是否应该将Azure Web Apps编码为WAN而不是LAN应用程序,并假设节点可能已关闭,因此请事先进行检查?
我真的很感激上面的想法。我们的感觉是Azure现在正在获得一些太多的中断,这可能是由于客户增加......不确定。虽然无疑在年度SLA的99。9%之内。
EDIT1
有用的MSDN Azure云架构文章: