多区域主主架构
使用 Azure Traffic Manager 将 Web 应用分布到两个 Azure 区域的主主配置中,并将用户路由到最近的正常运行终结点。
多区域主主架构 是 CoddyKit 上的免费 Azure Fundamentals 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Azure Fundamentals 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Azure Fundamentals 课程共包含 4 节课。
超越单一区域
即使使用了可用性区域,部署在单个 Azure 区域中的工作负载仍可能受到区域性中断的影响。这种情况虽然罕见,但可能由重大灾害、严重风暴或大规模基础设施故障引起。为实现最高级别的可用性,企业会跨两个或更多 Azure 区域部署工作负载,即使整个区域离线,应用程序仍可继续为用户提供服务。
主动-主动与主动-被动
多区域架构主要有两种模式:
- 主动-主动 — 两个区域中的资源同时处理实时流量。这种模式可最大限度地提高可用性,还可以通过将用户路由到最近的区域来降低延迟。
- 主动-被动 — 次要区域中的资源处于待机状态,只有在发生故障转移后才接收流量。这种模式成本更低,但恢复时间更长。
若要实现最高可用性,建议采用主动-主动模式。
Azure Traffic Manager 概述
Azure Traffic Manager 是一种基于 DNS 的全局负载均衡器,可在不同 Azure 区域(或本地环境)的终结点之间分配流量。它使用运行状况探测监视每个终结点,并使用路由方法(性能、加权、优先级、地理位置、多值)决定将流量发送到何处。对于主动-主动设置,请使用性能路由方法,将用户发送到距离最近且运行正常的区域。
# Create a Traffic Manager profile:
az network traffic-manager profile create \
--resource-group myRG \
--name myTMProfile \
--routing-method Performance \
--unique-dns-name myapp-global
# Add endpoints for each region:
az network traffic-manager endpoint create \
--resource-group myRG \
--profile-name myTMProfile \
--name eastus-endpoint \
--type azureEndpoints \
--target-resource-id /subscriptions/.../publicIPAddresses/eastus-pipTraffic Manager 路由方法
Traffic Manager 支持多种针对不同场景的路由方法:
- 性能 — 将流量路由到延迟最低的终结点(最适合主动-主动模式)
- 加权 — 按权重百分比分配流量(适用于逐步推出)
- 优先级 — 将所有流量发送到主要终结点,发生故障时备用到次要终结点(主动-被动模式)
- 地理位置 — 根据用户的地理位置进行路由(数据主权)
跨区域数据复制
在主动-主动架构中,必须在区域之间复制数据,这样任一区域中的用户都能读取一致的数据。可选方案包括:
- 具有异地复制功能的 Azure SQL Database — 在另一个区域提供可读的次要副本
- 支持多区域写入的 Azure Cosmos DB — 所有区域可同时接受写入
- 具有 GRS 的 Azure Storage — 异步复制到次要区域
具体选择取决于您对一致性和写入可用性的要求。
用于多区域写入的 Cosmos DB
Azure Cosmos DB 非常适合主动-主动架构,因为它支持多区域写入,所有已配置的区域都可以同时接受写入操作。Cosmos DB 使用可配置的一致性级别(从强一致性到最终一致性)来管理副本的同步方式。对于主动-主动场景,通常选择会话一致性或有界过时,以平衡性能和正确性。
# Enable multi-region writes on a Cosmos DB account:
az cosmosdb update \
--resource-group myRG \
--name myCosmosAccount \
--enable-multiple-write-locations trueFront Door 与 Traffic Manager
Traffic Manager 和 Azure Front Door 都提供全局负载均衡,但工作层级不同:
- Traffic Manager 基于 DNS:它会将客户端重定向到正确的区域终结点,但连接会直接到达该终结点。它在 DNS 层运行。
- Azure Front Door 是一种任播代理:它在全球接入点终止客户端连接,然后将请求转发到源站。除路由外,它还提供 WAF、SSL 卸载和缓存功能。
区域对意识
Microsoft 会为每个 Azure 区域指定区域对,其中的次要区域位于同一地理范围内,并且地理位置足够遥远,能够抵御区域性灾害。在设计多区域架构时,请尽可能将配对区域用作次要区域。在计划内平台维护期间,区域对中的两个区域不会同时更新,从而减少同时中断的影响。
# View Azure region pairs:
az account list-locations --query '[].{Name:name,Pair:metadata.pairedRegion[0].name}' --output table主动-主动模式下的会话状态
在主动-主动部署中,同一用户的不同请求可能由不同区域提供服务。如果应用程序将会话状态存储在 Web 服务器内存中,用户切换区域时就会出现问题。解决方案是使用分布式会话存储,例如支持异地复制的 Azure Cache for Redis,使任意区域都能访问会话数据。
主动-主动模式的成本考量
主动-主动架构比单区域部署更昂贵,因为您需要在至少两个区域运行一份完整的基础设施副本。其他成本包括区域间数据传输、数据库异地复制,以及 Traffic Manager 或 Front Door 的费用。请进行成本效益分析:对于任务关键型工作负载,停机成本通常远高于第二个区域的成本。
测试多区域故障转移
必须定期测试主动-主动架构,以确保在需要时能够正常工作。Azure Chaos Studio 等混沌工程工具可以注入故障,例如停止某个区域中的所有 VM,并观察系统的响应方式。定期测试可以确认 Traffic Manager 的运行状况探测能够检测到故障、故障转移能在您的 RTO 内完成,并且数据在各区域之间保持一致。
快速检查
请测试您对本课程中 Microsoft Azure Fundamentals (AZ-900) 概念的理解。
课程回顾
在本课程中,您学习了:主动-主动架构会同时在多个区域部署实时资源,以实现最高可用性;Azure Traffic Manager 使用性能、优先级、加权或地理位置方法路由流量;数据复制(Cosmos DB 多区域写入、SQL 异地复制)对于确保跨区域一致性至关重要。接下来,我们将学习运行状况探测和优雅降级模式。
常见问题解答
「多区域主主架构」课时是免费的吗?
是的 — 「多区域主主架构」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Azure Fundamentals 课程的其余内容,请升级到 CoddyKit PRO。 Azure Fundamentals 课程共包含 4 节课。
「多区域主主架构」这节课中我会学到什么?
使用 Azure Traffic Manager 将 Web 应用分布到两个 Azure 区域的主主配置中,并将用户路由到最近的正常运行终结点。 你通过在浏览器中直接运行的动手代码来练习 Azure Fundamentals,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Azure Fundamentals 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Azure Fundamentals 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「多区域主主架构」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Azure Fundamentals 课中编写并运行代码吗?
能。每节 Azure Fundamentals 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。