设计地理分布式网络体系结构
- 6 分钟
在分布式应用中,必须确保组件能够可靠地通信,并且当发生故障时,请求可以路由到其他组件或区域。
我们决定在 Azure 中重新架构我们的发货门户,以减少其区域故障的漏洞。 我们希望确保在主要区域不可用时,应用程序会故障转移到次要区域中的组件。 故障转移应几乎不影响向用户交付服务。
在这里,我们将了解 Azure DNS、流量管理器、Front Door 和 Azure CDN 如何支持我们的航运公司应用体系结构。
Azure DNS
回想一下,我们不需要对 Azure DNS 实现进行任何更改。 我们使用 Azure DNS 托管标识应用的域名记录。
Azure DNS 完全通过 Azure 基础结构提供名称解析。 此服务本质上是多区域服务,因此无需修改现有的 Azure DNS 配置以支持新体系结构设计中的功能。
Azure DNS SLA 还具有 100% 保证,保证有效的 DNS 请求始终收到至少一个 Azure DNS 名称服务器的响应。
选择流量路由器
我们需要一个服务,可以使用分布式 Web 应用程序跨多个区域对流量进行负载均衡和重定向。
Azure 提供了多个不同的服务,可在前端组件之间路由流量。 回想一下,我们需要替换 Azure 应用程序网关,因为它绑定到单一区域。 如果该区域发生故障,则无法进行路由。
Azure 中有两个流量路由器可以在多个区域之间执行全局路由,并且不会容易受到单个区域中断的影响:
- Azure 流量管理器
- Azure 前端入口 (Azure Front Door)
让我们更详细地检查这些服务,以便我们可以为应用程序选择正确的路由器。
什么是 Azure 流量管理器?
Azure 流量管理器是一个全局负载均衡器,它使用 DNS 记录将流量路由到多个 Azure 区域中的目标。
我们可以将流量管理器配置为将所有请求路由到主要区域,并监视该区域中的应用服务的响应能力。 如果主要区域中的应用服务失败,流量管理器会自动将用户请求重新路由到次要区域中的应用服务。 这种重新路由会执行可确保连续服务的故障转移。 我们将这种安排称为 优先级路由模式。
由于流量管理器使用 DNS 系统路由流量,因此它会路由任何协议,而不仅仅是 HTTP 流量。 但是,流量管理器无法基于 HTTP 属性(例如客户端国家/地区代码或用户代理标头)路由或筛选流量。 它也不能执行传输层安全性(TLS)协议终止,其中路由器解密请求并加密响应以从应用服务虚拟服务器中卸载该负载。 如果需要其中任一功能,则必须使用 Azure Front Door。
流量管理器使用高度可配置的终结点监视功能。 例如,我们可以定义协议、端口、路径、自定义标头设置、预期状态代码范围以及允许的失败次数。 终结点监视让我们持续了解应用程序的所有部分的整体运行状况。
什么是 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 存储帐户的注意事项,我们将在下一单元中介绍。