设计地理分散式网络体系结构

已完成

在分散式应用中,必须确保组件能够可靠地通信,且在发生故障时能够将请求路由到不同的组件或区域。

我们决定在 Azure 中重新架构货运门户,以降低其易受区域故障影响的程度。 我们希望确保在主要区域不可用时,应用程序会故障转移到次要区域中的组件。 故障转移应几乎不影响向用户交付服务。

在这里,我们将了解 Azure DNS、流量管理器、Front Door 和 Azure CDN 如何支持运输公司的应用体系结构。

A diagram showing multi-region distributed application networking components.

Azure DNS

回忆一下,不需要对 Azure DNS 实现进行任何更改。 使用 Azure DNS 来托管可标识应用的域名记录。

Azure DNS 完全通过 Azure 基础结构提供名称解析。 此服务本身就是多区域分布的,因此无需修改现有 Azure DNS 配置来支持新体系结构设计中的这项特性。

Azure DNS SLA 还具有 100% 保证,保证有效的 DNS 请求始终收到至少一个 Azure DNS 名称服务器的响应。

选择流量路由器

我们需要这样一项服务,它能够跨分散式 Web 应用程序的多个区域进行负载均衡和流量重定向。

Azure 提供几种可在前端组件间路由流量的服务。 回忆一下,需要替换 Azure 应用程序网关,因为它绑定到单个区域。 如果该区域发生故障,则无法进行路由。

Azure 中有两个流量路由器,可在全球多个区域之间路由,不易受单个区域中断的影响:

  • Azure 流量管理器
  • Azure Front Door

让我们更详细地考察这些服务,以便为应用程序选择正确的路由器。

什么是 Azure 流量管理器?

Azure 流量管理器是一个全球负载均衡器,它使用 DNS 记录将流量路由到多个 Azure 区域中的目标。

可以将流量管理器配置为将所有请求路由到主要区域,并监视该区域中应用服务的响应能力。 如果主要区域中的应用服务发生故障,流量管理器会自动将用户请求重新路由到次要区域中的应用服务。 这种重新路由会执行可确保连续服务的故障转移。 这种安排称为“优先路由模式”。

由于流量管理器使用 DNS 系统路由流量,因此它可以路由任何协议,而不仅仅是 HTTP 流量。 但是,流量管理器无法根据 HTTP 属性(例如客户端国家/地区代码或用户代理标头)路由或筛选流量。 它也不能进行传输层安全性 (TLS) 协议终止,即路由器解密请求并加密响应以减轻应用服务虚拟服务器的负担。 如果需要以上任何功能,就必须使用 Azure Front Door。

流量管理器使用高度可配置的终结点监视。 例如,可以定义协议、端口、路径、自定义标头设置、预期的状态代码范围和容许的故障次数。 通过终结点监视,我们可以持续了解应用程序各部分的总体运行状况。

Azure Traffic Manager priority mode.

什么是 Azure Front Door?

与流量管理器一样,Azure Front Door 也是全球负载均衡器。 与流量管理器不同,它在网络应用程序层(第 7 层)上工作,且使用 HTTP 和 HTTPS 属性进行筛选和路由。

通过 Front Door,可以进行流量管理器不支持的多种类型的路由。 例如,可以根据浏览器的国家/地区代码来路由流量。 Front Door 还支持 TLS 协议终止。

但有一个例外。 如果要按 HTTP 和 HTTPS 以外的任何协议路由流量,必须使用流量管理器。

通过 Front Door,可以向组成跟踪门户的各种后端分配优先级。 这些优先级让 Front Door 能够根据需要路由请求。 为主要区域服务分配最高优先级,为次要区域服务分配低优先级。

Front Door 将实现运行状况探测,以监视服务的运行状况,如果出现故障,它可以正确路由流量。 Front Door 中的优先路由模式和终结点监视与流量管理器中的功能类似,不同之处在于,运行状况探测始终通过 HTTP 工作。

货运门户的 Web UI 及其 API 的所有流量都通过 HTTPS 完成,因此我们可以从 Azure 流量管理器切换到 Front Door。 还可以为 Front Door 配置优先级后端分配。

Azure CDN

在单区域体系结构中,我们使用 Azure CDN 缓存来自 Azure Blob 存储的静态内容。 Azure CDN 服务是一个全球服务器网络,可在靠近用户的位置缓存静态内容。 不需要为多区域体系结构修改此服务。 但是,下一单元中将介绍有关 Azure 存储帐户的注意事项。

知识检查

1.

什么时候应该完全故障转移到另一个区域?

2.

什么是 SLA for Azure DNS?