azure 最佳实践 -- 保持冗余
保持冗余
确保你的应用的部署体系是有冗余的,以避免单一节点失败的情况。
一个弹性良好的系统可以灵活的绕过系统故障。找出应用中(请求执行)的关键路径。路径中的每个节点是否都有冗余?子系统失败时,系统能否有效的转移故障?
也要考虑到业务需求。每个(节点的)冗余都会导致额外的开销和复杂度。你的架构应该考虑到业务需求的标准,例如,目标恢复时间(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 最佳实践 -- 保持冗余的更多相关文章
- azure最佳实践系列1-自我修复的设计
如何设计你的应用,能够在系统错误时做到自我修复?在分布式系统中,会经常遇到错误.硬件也会遇到异常情况.网络有时会出现短暂的错误.整个地区出现了服务中断.即便如此,关于这些问题的方案也是要提前规划的.因 ...
- 最佳实践:Windows Azure 网站 (WAWS)
编辑人员注释:本文章由 Windows Azure 网站团队的项目经理Sunitha Muthukrishna 撰写. Windows Azure 网站 (WAWS) 允许您在 Windows ...
- Windows Azure 安全最佳实践 - 第 2 部分:Azure 提供哪些现成可用的安全机制
在WindowsAzure安全最佳实践 - 部分:深度解析挑战防御对策中,我介绍了威胁形势以及在您的应用程序中采用深度防御的计划. 在本部分中,我将说明 Windows Azure的安全是一项共同责任 ...
- Windows Azure 安全最佳实践 - 第 1 部分:深度解析挑战防御对策
我每次与开发人员讨论将应用程序迁移到云时都围绕着两个主要问题. 1. 首先是业务.将应用程序迁移到云可以带来怎样的规模经济? 2. 其次是安全问题."云的安全性如何,尤其是Windows A ...
- [转]在 Azure 云服务上设计大规模服务的最佳实践
本文转自:http://technet.microsoft.com/zh-cn/magazine/jj717232.aspx 英文版:http://msdn.microsoft.com/library ...
- 基于开源软件在Azure平台建立大规模系统的最佳实践
作者 王枫 发布于2014年5月28日 前言 Microsoft Azure 是微软公有云的唯一解决方案.借助这一平台,用户可以以多种方式部署和发布自己的应用. 这是一个开放的平台,除了对于Windo ...
- Windows Azure 安全最佳实践 - 第 7 部分:提示、工具和编码最佳实践
在撰写这一系列文章的过程中,我总结出了很多最佳实践.在这篇文章中,我介绍了在保护您的WindowsAzure应用程序时需要考虑的更多事项. 下面是一些工具和编码提示与最佳实践: · 在操作系统上运行 ...
- Windows Azure 安全最佳实践 - 第 6 部分:Azure 服务如何扩展应用程序安全性
多种Windows Azure服务可以帮助您将应用程序安全性扩展到云. 有三种服务可提供多个提供程序之间的身份标识映射.内部部署数据中心间的连接和相互发送消息的应用程序功能(无论应用程序位于何处). ...
- Windows Azure 安全最佳实践 - 第 5 部分:基于Claim 的标识,单点登录
基于Claim的身份标识是处理网站与 Web 服务的身份认证和访问一种简单而强大的方式,无论您是在本地工作还是面向云工作.您可以通过减少自定义实施和使用基于Claim的单一简化标识模型,创建更安全的应 ...
随机推荐
- Linux相关知识总结
查看CPU使用情况 查看内存 ps命令显示所有运行中的进程等命令 top 命令用来显示CPU的使用情况free命令用来显示内存的使用情况 select和epoll区别select,poll,epoll ...
- centOS下升级python版本,详细步骤
1.可利用linux自带下载工具wget下载,如下所示:( 笔者安装的是最小centos系统,所以使用编译命令前,必须安装wget服务,读者如果安装的是界面centos系统,或者使用过编译工具则可跳 ...
- 20145322 何志威《网络对抗》shellcode注入&Return-to-libc攻击深入
基础知识 Shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并将堆栈的返回地址利用缓冲区溢出,覆盖成为指向 shellcode的地址. execstack - ...
- 20155201 实验五《Java面向对象程序设计》实验报告
20155201 实验五<Java面向对象程序设计>实验报告 一.实验内容 1. 数据结构应用 2. 结对编程:利用IDEA完成网络编程任务,1人负责客户端,1人负责服务器 3. 密码结对 ...
- HDU 6315 Naive Operations(线段树+区间维护)多校题解
题意:a数组初始全为0,b数组题目给你,有两种操作: 思路:dls的思路很妙啊,我们可以将a初始化为b,加一操作改为减一,然后我们维护一个最小值,一旦最小值为0,说明至少有一个ai > bi,那 ...
- 云主机搭建Kubernetes 1.10集群
一.基础环境 云主机 下载软件包 将所有软件下载至/data目录 # 链接:https://pan.baidu.com/s/13DlR1akNBCjib5VFaIjGTQ 密码:1l69 # 链接:h ...
- Codeforces Round #417 (Div. 2) B. Sagheer, the Hausmeister
http://codeforces.com/contest/812/problem/B 题意: 有n层楼,每层楼有m个房间,1表示灯开着,0表示灯关了.最两侧的是楼梯. 现在每从一个房间移动到另一个房 ...
- HDU 3572 Task Schedule(最大流判断满流)
https://vjudge.net/problem/HDU-3572 题意: 有N个作业和M台机器,每个作业都有一个持续时间P,工作的日期为S~E.作业可以断断续续的在不同机器上做,每台机器每次只可 ...
- R语言包相关命令
R的包(package)通常有两种:1 binary package:这种包属于即得即用型(ready-to-use),但是依赖与平台,即Win和Linux平台下不同.2 Source package ...
- JQuery 实现下拉列表选中
html代码如下: <select id="category" name="category"> <option value="&q ...