保持冗余
确保你的应用的部署体系是有冗余的,以避免单一节点失败的情况。
一个弹性良好的系统可以灵活的绕过系统故障。找出应用中(请求执行)的关键路径。路径中的每个节点是否都有冗余?子系统失败时,系统能否有效的转移故障?
也要考虑到业务需求。每个(节点的)冗余都会导致额外的开销和复杂度。你的架构应该考虑到业务需求的标准,例如,目标恢复时间(Recovery time objective)。再如,多区域部署肯定比单区域部署开销大,并且更难管理。需要有相应的故障转移和故障恢复的方案。对于特殊业务需求,额外的开销是合理的。
把虚拟机部署在负载均衡器后面。不要使用单一节点来处理关键任务,要确保虚拟机的部署有负载均衡机制。如果任何一台虚拟机不可用,负载均衡器会把请求发送到现有的其他虚拟机上。关于部署的详细配置,可参见Multiple VMs for scalability and availability(https://docs.microsoft.com/en-us/azure/architecture/reference-architectures/virtual-machines-windows/multi-vm)


复制数据库。azure SQL数据库和Cosmos DB会自动对区域内的数据进行复制,你也可以选择开启地理区域复制选项。如果你正在使用IAAS(infrastructure as a service)数据库方案,可以选择支持复制和故障转移的数据库,例如SQL SERVER Always On Availability Groups(https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/always-on-availability-groups-sql-server).

启用地理复制。azure SQL数据库(https://docs.microsoft.com/en-us/azure/sql-database/sql-database-geo-replication-overview)和Cosmos DB(https://docs.microsoft.com/en-us/azure/cosmos-db/distribute-data-globally)的地理复制功能会在一个或多个备用区域中创建备用副本。在中断情况下,数据库会自动切换到备用区域写数据。

根据可用性进行分区。数据库分区经常用于提高可扩展性,但是它也用于提高可用性。如果一个(数据库)分片失败,其他分片可以使用。一个分片的失败只会影响到整个事务的一部分。


部署到多区域。对于要求极高可用的系统,需要进行多区域部署。这样一来,当这个区域出问题的时候(虽然很少见),就可以把应用切换到可用的区域。下图展示了一个多区域部署的应用是如何使用azure traffic manager进行故障转移的。

同步前后端的故障切换。使用azure traffic manager来转移前端故障。如果前端在一个区域不可达,traffic manager就会把请求转移到备用区域。对于不同的数据库方案,可能还需要对数据库故障进行转移。

自动故障转移,手动故障恢复。使用traffic manager进行自动故障转移,而不是自动故障恢复。自动复制恢复是有风险的,在确保主区域完全正常之前,可能被(自动故障恢复)进行了区域切换。在进行手动恢复之前,要确保所有应用的子系统都是正常的。针对不同数据库,在进行恢复之前,可能要验证数据一致性。
为traffic manager加入冗余。traffic manager是容易发生失败的节点。要审查traffic manager的SLA,并考虑使用单一节点traffic manager是否满足高可用的业务需求。如果否,考虑为traffic manager添加冗余节点以备故障恢复。如果azure traffic manager服务失败了,修改你的DNS中CNAME记录,指向其他的traffic management服务即可。

azure 最佳实践 -- 保持冗余的更多相关文章

  1. azure最佳实践系列1-自我修复的设计

    如何设计你的应用,能够在系统错误时做到自我修复?在分布式系统中,会经常遇到错误.硬件也会遇到异常情况.网络有时会出现短暂的错误.整个地区出现了服务中断.即便如此,关于这些问题的方案也是要提前规划的.因 ...

  2. 最佳实践:Windows Azure 网站 (WAWS)

     编辑人员注释:本文章由 Windows Azure 网站团队的项目经理Sunitha Muthukrishna 撰写. Windows Azure 网站 (WAWS) 允许您在 Windows ...

  3. Windows Azure 安全最佳实践 - 第 2 部分:Azure 提供哪些现成可用的安全机制

    在WindowsAzure安全最佳实践 - 部分:深度解析挑战防御对策中,我介绍了威胁形势以及在您的应用程序中采用深度防御的计划. 在本部分中,我将说明 Windows Azure的安全是一项共同责任 ...

  4. Windows Azure 安全最佳实践 - 第 1 部分:深度解析挑战防御对策

    我每次与开发人员讨论将应用程序迁移到云时都围绕着两个主要问题. 1. 首先是业务.将应用程序迁移到云可以带来怎样的规模经济? 2. 其次是安全问题."云的安全性如何,尤其是Windows A ...

  5. [转]在 Azure 云服务上设计大规模服务的最佳实践

    本文转自:http://technet.microsoft.com/zh-cn/magazine/jj717232.aspx 英文版:http://msdn.microsoft.com/library ...

  6. 基于开源软件在Azure平台建立大规模系统的最佳实践

    作者 王枫 发布于2014年5月28日 前言 Microsoft Azure 是微软公有云的唯一解决方案.借助这一平台,用户可以以多种方式部署和发布自己的应用. 这是一个开放的平台,除了对于Windo ...

  7. Windows Azure 安全最佳实践 - 第 7 部分:提示、工具和编码最佳实践

    在撰写这一系列文章的过程中,我总结出了很多最佳实践.在这篇文章中,我介绍了在保护您的WindowsAzure应用程序时需要考虑的更多事项. 下面是一些工具和编码提示与最佳实践: · 在操作系统上运行 ...

  8. Windows Azure 安全最佳实践 - 第 6 部分:Azure 服务如何扩展应用程序安全性

    多种Windows Azure服务可以帮助您将应用程序安全性扩展到云. 有三种服务可提供多个提供程序之间的身份标识映射.内部部署数据中心间的连接和相互发送消息的应用程序功能(无论应用程序位于何处). ...

  9. Windows Azure 安全最佳实践 - 第 5 部分:基于Claim 的标识,单点登录

    基于Claim的身份标识是处理网站与 Web 服务的身份认证和访问一种简单而强大的方式,无论您是在本地工作还是面向云工作.您可以通过减少自定义实施和使用基于Claim的单一简化标识模型,创建更安全的应 ...

随机推荐

  1. [LeetCode] 82. Remove Duplicates from Sorted List II_Medium tag: Linked List

    Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinctnumbe ...

  2. #C++初学记录(素数判断)

    练习题目二 素数判断 A prime number is a natural number which has exactly two distinct natural number divisors ...

  3. viewport 编写 iPhone Friendly 的 Web 应用程序

    在了解到iPhone的一些常见布局法后,我们就可以开始着手编写一个真正能在iPhone上跑的页面了.小声说一句,之前我说要布局讨论完了,要进入交互逻辑开发,后来细心一想发现不行,有些东西不讲的话将会对 ...

  4. eclipse如何设置编译后target目录不提交svn服务器

    eclipse设置 windows ->prefrences->team->Ignored Resource 点击Add Pattern  输入    */target/*    等 ...

  5. 20145325张梓靖 实验二"Java面向对象程序设计"

    20145325张梓靖 实验二"Java面向对象程序设计" 程序设计过程 实验内容 使用TDD的方式设计实现复数类 Complex 编写代码 设计实现复数类 Complex,复数类 ...

  6. MySQL的yum源

    http://repo.mysql.com/ 超链接: http://repo.mysql.com/

  7. MariaDB主从复制搭建

    我的github 安装MySQL服务器 安装数据库 yum install -y mariadb-server 初始化数据库 mysql_secure_installation #MySql初始化脚本 ...

  8. 重器--biomart

    biomart 重器 biomaRt工具包的作用在于它可以轻松地完成的在多个生物学数据库上繁琐地检索,获取相关数据在不同数据库间的关联.

  9. hdu 5701 中位数计数 思路题

    中位数计数 Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Subm ...

  10. Android res目录结构

    所有以drawable开头的文件夹都是用来放图片的 所有以values开头的文件夹都是用来放字符串的 layout 文件夹是用来放布局文件的 menu 文件夹是用来放菜单文件的.之所以有这么多 dra ...