上次复盘数据保护策略还是在《数据需要找回怎么办?我们如何选择正确的恢复/退回方式?》探讨了在application&DB层面上,不同level的数据保护有不同策略。而它也恰好是今天HA&DR版图的一角(RDBMS部分),同时今天在cloud上同样会根据不同level的资源进行相应的保护策略复盘。
开篇灵魂6问:(亚运期间,摸着胸口的国旗,沉思片刻)
1. HA 与 DR 在Azure里是如何实现的,它们在架构版图中的哪个位置?
2. 你的场景里具体是哪部分需要HA or DR?
3. Geo,Region,AZ,DC 真的分清楚了吗?
4. 众多资源中,最需要被保护的对象是什么?
5. Azure中如何衡量HA与DR的指标?
6. 如果是Aliyun或者AWS,在HA或者DR的特性上,它们类似吗?
众所周知,Azure能提供的数据完整性与安全性功能,与通常各种cloud产品白皮书所提到的一样,连邻居的叔叔阿姨都能说上一二,这里不再赘述。
但是作为工程师需要知道,Azure之所以能提供数据高可用与灾难恢复的能力,不仅是因为产品自身架构的“可靠性 Reliability”,同时需要管理员进行“弹性 Resilience”逻辑的设计与实施。
有时候过多的言语不如一张图来地直观:
ps:家里小娃评价这张图颜色还不错,如果能加上一只可爱的🐤就好了,所以满足一下:)
1. DR一般指的是跨Region (几百公里)的灾难恢复,实际上是尽可能远。
Region内会有多个AZ,通常是做HA (也可以是Availability Set),AZ之间延迟小于2ms
注意:两region三个AZ 并非传统说法的“两地三中心”,原因是“三中心”里的只有一个DC是处于不同的地域(或者城市)。切勿套用!(见图左上部分)
2. 业务场景中最需要保护的是stateful的对象,即用户DB数据,其余stateless的资源大多都可重建或者一次性部署(见图右上部分)
3. Azure已经做好了Region Pair (见图左上部分)
4. 确认DR为目的之后,再看需要被保护的是IAAS 还是 PAAS,有多个层级 (见图右上部分)
5. 常规可选策略:(见图右上部分)
a. 重建Infra ARM, IaC. 但是不包括上层服务
b. 逻辑或者物理备份定期转移(费时费力)
c. replication 针对data。 例如MSSQL的跨region的always on. AzureSiteRecovery
stoageaccount也是可以被自动同步到不同region的 (见图左下部分)
6. Azure有小部分服务并不是仅部署再一个region内的,称作Global服务。通常这类服务已经具备DR能力. 例如Azure AD,CDN,AzureFrontDoor(七层用于负载多个不同地区网络流量的LB),TrafficManager(基于DNS的LB)
7. 针对不同服务的DR方式 从上至下,金额成本递减;同时RPO/RTO指标也递减. 所以使用DB原生的PaaS服务进行保护指标最好 (见图右上部分)
a.APP层内的数据, 利用app本身具备的DR,例如MSSQL alwayson, 主读写节点,向从只读节点同步或者异步复制,异地通常都是async方式。 (除了存储,网络费用,还需要计算资源)
b.OS内的站点 可以利用siterecover(ASR)服务 (至少需要存储,网络费用)
c.resource层
storage account利用GRS服务(GeoredundantService);
AzureBackup中的CRR(CrossRegionRestore)将主region的数据进行备份并发送至辅助region (至少需要存储,网络费用)
重建Infra ARM, IaC (灾难发生前几乎没有辅助站点资源消耗)
8. 重要的HA,DR指标 (见图右下部分)
9. 方案规模从小到大:(前三为HA,第四位DR)
当使用single VM时,针对disk,可以选择Premium SSD (SLA 99.9%)来提高SLA指标,因为数据是默认被存储为3份的; Standard SSD (SLA 99.5%); Standard HDD (SLA 95%)
当使用Datacenter时,某一个机架坏掉,导致多台server不可用. 可以将VM放在Availability Set中,这样Azure会将他们放进不同Azure Fault Domain的机架上 (SLA 99.95%)
当一个Datacenter坏掉,一般是电源或者网络导致。可以放在不同的AZ上 (SLA 99.99%)
整个Region因为天灾(洪水或者地震)变得不可用,需要启用DR。 例如ASR
10. 如果是Aliyun,也是大同小异。它同样有Region的布局,通过CEN去连接不同的VPC实现跨区域通信,在应用与DB层面也会利用主从复制,读写分离,前面LB分流+DNS,后端ESS+OSS的方式实现各种HA或者DR的需求。后面打算更新一期“Transform Your Azure Knowledge to Aliyun”。
今天没有白话,言语见拙,若影响了阅读或者未能详尽之处,还请见谅,可参考官方文档,例如且不限于下面:
What are Azure availability zones? | Microsoft LearnLearn about availability zones and how they work to help you achieve reliabilityhttps://learn.microsoft.com/en-us/azure/reliability/availability-zones-overview?tabs=azure-cli
Azure cross-region replication | Microsoft LearnLearn about Azure cross-region replicationhttps://learn.microsoft.com/en-us/azure/reliability/cross-region-replication-azure#azure-paired-regionsData redundancy - Azure Storage | Microsoft LarnUnderstand data redundancy in Azure Storage. Data in your Microsoft Azure Storage account is replicated for durability and high availability.https://learn.microsoft.com/en-us/azure/storage/common/storage-redundancy
后记:HA或者DR的思想是伟大的,但是若生活里在同城有HA或者大洋的彼岸还有一个DR的肯定是不对的哦:)