在现代云计算环境中,构建一个具有弹性的存储架构是至关重要的。本文将探讨如何设计一个能够应对各种故障情况的存储系统。首先,需要了解服务等级协议(SLA)对于存储系统的重要性。目前,如果使用的是本地冗余存储(LRS),SLA为99.9%,这对于许多应用程序来说可能不够理想。但如果使用读访问地理冗余存储(RA-GRS),SLA可以提高到99.99%。
对于刚刚接触Blob存储的人来说,了解不同类型的存储选项是必要的:
基于上述信息,推荐使用RA-GRS,这是Azure独有的特性。RA-GRS允许拥有一个次要端点,可以从中以只读方式访问保存在次要区域的备份副本。
根据这个建议,如果存储账户名为:
storagexyz.blob.core.windows.net
那么次要只读访问端点将是:
storagexyz-secondary.blob.core.windows.net
接下来的问题可能是:“这很好,但需要能够读写。” 为此,推荐一个架构模式:
上述架构虽然简化,但专注于存储账户配置以实现更高的可用性。在上述架构中,有一个部署在流量管理器后面的Web应用程序,它在主区域和次区域都有实例。此外,有一个AzureSQL数据库,它被异步复制到备份区域。
假设在上述情况下:
对于存储,执行以下操作:
让看看区域A的情况:
对于区域B的情况:
在数据库中,建议为每个保存的Blob推荐以下字段:
这允许轻松实现在需要时使用“-secondary”。
基于上述,让模拟一系列事件: