Azure流量管理器六种路由方法详解
Azure流量管理器六种路由方法详解
Azure流量管理器提供六种流量路由方法,包括优先级、加权、性能、地理、多值和子网路由。每种方法都有其独特的工作原理和应用场景,可以帮助用户实现灵活的流量管理策略。
Azure流量管理器支持使用六种流量路由方法来确定如何将网络流量路由到不同的服务终结点。对于任何配置文件,流量管理器将关联到它的流量路由方法应用于它收到的每个DNS查询。流量路由方法确定要在DNS响应中返回哪个终结点。
流量管理器中提供了以下流量路由方法:
- 所有流量管理器配置文件都具有运行状况监视和终结点的自动故障转移。有关详细信息,请参阅流量管理器终结点监视。
- 在流量管理器配置文件中,一次只能配置一种流量路由方法。可以随时为配置文件选择其他流量路由方法。更改将在一分钟内应用,不会造成任何停机时间。
- 可使用嵌套的流量管理器配置文件来组合使用多种流量路由方法。使用嵌套配置文件,可以启用复杂的流量路由配置,以满足更大更复杂的应用程序需求。有关详细信息,请参阅嵌套式流量管理器配置文件。
优先级流量路由方法
组织通常希望为服务提供可靠性。为此,他们部署一个或多个备份服务,以防其主服务出故障。Azure客户可以通过“优先级”流量路由方法来轻松实现此故障转移模式。
流量管理器配置文件包含服务终结点的优先顺序列表。默认情况下,流量管理器将所有流量发送到主终结点(优先级最高)。如果主终结点不可用,流量管理器会将流量路由到第二个终结点。如果主终结点和辅助终结点都不可用,流量会转到第三个终结点,依此类推。终结点的可用性取决于配置的状态(已启用或已禁用)和正在进行的终结点监视。
配置终结点
在Azure资源管理器中,可以使用每个终结点的“priority”属性显式配置终结点优先级。此属性是一个介于1和1000之间的值。值越小,表示优先级越高。终结点不能共享优先级值。该属性的设置是可选的。如果省略该属性,会根据终结点顺序使用默认优先级。
加权流量路由方法
使用“加权”流量路由方法可以均匀分布流量,或使用预定义的权重。
在“加权”流量路由方法中,需要为流量管理器配置文件中的每个终结点分配一个权重。该权重是从1到1000的整数。此参数是可选的。如果省略此参数,流量管理器将使用默认权重“1”。权重越高,优先级就越高。
对于收到的每个DNS查询,流量管理器会随机选择一个可用终结点。选择哪个终结点取决于分配到所有可用终结点的权重。对所有终结点使用相同的权重会导致均匀分布流量。对特定的终结点使用较高或较低的权重会导致这些终结点在DNS响应中的返回次数较多或较少。
加权方法可以实现一些有用的方案:
- 应用程序逐步升级:给定要路由到新终结点的流量百分比,并随着时间的推移逐渐将流量增加到100%。
- 将应用程序迁移到Azure:创建包含Azure终结点和外部终结点的配置文件。调整终结点的权重,优先选择新终结点。
- 适用于更多容量的云突发:通过将本地部署放在流量管理器配置文件之后,快速将本地部署扩展到云中。当需要在云中获得额外的容量时,可以添加或启用更多终结点,并指定哪部分流量将流向每个终结点。
可以使用Azure门户、Azure PowerShell、CLI和REST API配置权重。
需要注意的一点是,DNS响应将由客户端缓存。还将由客户端用来解析DNS名称的递归DNS服务器缓存。这种缓存可能会影响到加权流量分布。如果客户端和递归DNS服务器的数目较大,流量分布将按预期工作。但是,如果客户端或递归DNS服务器的数目较小,缓存可能会严重影响流量分布。
常见用例包括:
- 开发和测试环境
- 应用程序间通信
- 目标用户群体较小、共享一个公用递归DNS基础结构的应用程序(例如,公司的员工通过代理进行连接)。
这些DNS缓存影响常见于所有基于DNS的流量路由系统,不只存在于Azure流量管理器上。在某些情况下,显式清除DNS缓存可能会解决问题。如果这不起作用,则可能更适合使用替代性流量路由方法。
性能流量路由方法
在全球两个或更多位置部署终结点可以提高应用程序的响应能力。使用性能流量路由方法,你可以将流量路由到最靠近你的位置。
最靠近的终结点不一定是地理距离最近的终结点。“性能”流量路由方法通过测试网络延迟来确定最靠近的终结点。流量管理器维护一份Internet延迟表,用于跟踪IP地址范围与每个Azure数据中心之间的往返时间。
流量管理器在Internet延迟表中查找传入DNS请求的源IP地址。然后,流量管理器在Azure数据中心内(该位置处理该IP地址范围的请求时具有最低延迟)选择一个可用终结点。然后流量管理器在DNS响应中返回该终结点。
如流量管理器工作原理中所述,流量管理器不会直接从客户端接收DNS查询。相反,DNS查询来自客户端配置使用的递归DNS服务。因此,用于确定最靠近终结点的IP地址不是客户端的IP地址,而是递归DNS服务的IP地址。此IP地址是客户端的适当代理。
流量管理器定期更新Internet延迟表,反映全球Internet的变化以及新的Azure区域。但是,由于Internet上的负载会实时变化,应用程序性能也会随之变化。性能流量路由不会监视给定服务终结点上的负载。如果某个终结点变得不可用,则流量管理器不会在DNS查询响应中包括该终结点。
需要注意的要点:
- 如果配置文件包含同一Azure区域中的多个终结点,流量管理器会在该区域中的可用终结点之间均匀分布流量。如果想要在某个区域中采用不同的流量分布,可以使用嵌套式流量管理器配置文件。
- 如果最靠近的Azure区域中的所有已启用终结点已降级,流量管理器会将流量转移到下一个最靠近的Azure区域中的终结点。如果想要定义首选故障转移顺序,请使用嵌套式流量管理器配置文件。
- 对外部终结点或嵌套式终结点使用“性能”流量路由方法时,需要指定这些终结点的位置。请选择离部署最近的Azure区域。这些位置是Internet延迟表支持的值。
- 选择终结点的算法是确定性的。同一个客户端重复发出的DNS查询会定向到同一个终结点。通常,客户端在遍历时使用不同的递归DNS服务器。客户端可以路由到不同的终结点。更新Internet延迟表也可能会影响路由。这就是性能流量路由方法不保证始终将客户端路由到同一个终结点的原因。
- 更改Internet延迟表时,可能会注意到某些客户端被定向到其他终结点。这种路由更改基于当前延迟数据,因此更加精确。进行这些更新很重要,可以确保在Internet持续发展的情况下“性能”流量路由的准确性。
地理流量路由方法
流量管理器配置文件可以配置为使用地理路由方法,以便将用户定向到特定终结点:“Azure”、“外部”或“嵌套”。匹配基于DNS查询所源自的地理位置。使用此路由方法,可确保遵守数据主权授权、内容本地化和用户体验以及测量来自不同地区的流量。
为地理路由分配配置文件时,与该配置文件关联的每个终结点都需要有一组分配给它的地理区域。地理区域的粒度可以是以下级别:
- 世界 - 任何区域
- 区域分组 - 例如,非洲、中东、澳大利亚/太平洋等。
- 国家/地区 - 例如,爱尔兰、秘鲁、香港特别行政区等。
- 省/自治区/直辖市 - 例如,美国加利福尼亚州、澳大利亚昆士兰州、加拿大阿尔伯达省等(注意:只有澳大利亚、加拿大和美国中的省/自治区/直辖市才支持此粒度级别)。
将一个或一组区域分配到某个终结点后,来自这些区域的任何请求都只路由到该终结点。流量管理器使用DNS查询的源IP地址来确定用户查询的区域。通常是作为本地DNS解析器的IP地址为用户进行查询。
流量管理器读取DNS查询的源IP地址,并确定它所源自的地理区域。随后,它会查找并查看是否存在此地理区域所映射到的终结点。此查找从最低粒度级别(先是“省/自治区/直辖市”(如果支持的话),然后是“国家/地区”级别)开始,一直向上查找,直到最高级别(即“世界”)。使用此遍历找到的第一个匹配项将被选定为要在查询响应中返回的终结点。当查询与“嵌套”类型终结点匹配时,将基于其路由方法返回该子配置文件中的终结点。
以下几点适用于此行为:
- 当路由类型是“地理路由”时,只能将一个地理区域映射到流量管理器配置文件中的一个终结点。此限制确保用户的路由是确定性的,并且客户可以启用需要明确地理边界的方案。
- 如果用户区域列在两个不同的终结点的地理映射下,则流量管理器会选择粒度最低的终结点。流量管理器不会考虑将请求从该区域路由到另一终结点。例如,考虑包含两个终结点(终结点1和终结点2)的“地理路由”类型配置文件。终结点1配置为接收来自爱尔兰的流量,终结点2配置为接收来自欧洲的流量。如果请求来自爱尔兰,则始终会将它路由到Endpoint1。
- 由于一个区域只能映射到一个终结点,因此流量管理器不管该终结点是否处于正常状态都将返回响应。
- 强烈建议客户使用地理路由方法将其与具有子配置文件(每个子配置文件中至少包含两个终结点)的“嵌套”类型终结点关联。
- 如果找到终结点匹配项,但该终结点处于“已停止”状态,则流量管理器会返回NODATA响应。在这种情况下,将不在地理区域层次结构中的更高位置进一步查找。当子配置文件处于“已停止”或“已禁用”状态时,此行为也适用于嵌套终结点类型。
- 如果终结点显示“已禁用”状态,则它不会包含在区域匹配过程中。当终结点处于“已禁用”状态时,此行为也适用于嵌套终结点类型。
- 如果查询来自该配置文件中没有映射的地理区域,流量管理器将返回NODATA响应。这就是我们强烈建议你使用带有一个终结点的地理路由的原因。理想情况下,嵌套类型在子配置文件中至少有两个终结点,并分配有“世界”区域。此配置还可以确保处理任何不会映射到区域的IP地址。
如流量管理器工作原理中所述,流量管理器不会直接从客户端接收DNS查询。DNS查询来自客户端配置使用的递归DNS服务。这就是用于确定区域的IP地址不是客户端的IP地址,而是递归DNS服务的IP地址的原因。此IP地址是客户端的适当代理。
多值流量路由方法
多值流量路由方法允许你在单个DNS查询响应中获得多个正常运行的终结点。此配置使得调用方在返回的某个终结点无法响应时能够通过其他终结点进行客户端重试。此模式可以提高服务可用性,并降低与新DNS查询获取正常运行的终结点相关的延迟。只有当所有终结点的类型都是“外部”并且指定为IPv4或IPv6地址时,多值路由方法才有效。当收到对此配置文件的查询时,会根据可配置的最大返回计数返回所有正常运行的终结点。
子网流量路由方法
“子网”流量路由方法可以将一个最终用户IP地址范围集映射到配置文件中的特定终结点。如果流量管理器收到该配置文件的DNS查询,它将检查该请求的源IP地址。然后,它将确定映射到哪个终结点,并将在查询响应中返回该终结点。在大多数情况下,源IP地址是调用方使用的DNS解析程序。
可以将要映射到终结点的IP地址指定为CIDR范围(例如1.2.3.0/24)或地址范围(例如1.2.3.4-5.6.7.8)。与终结点关联的IP范围在该配置文件中必须唯一。地址范围不能与同一配置文件中不同终结点的IP地址集重叠。如果定义一个没有地址范围的终结点,则该终结点将用作回退终结点并从任何剩余的子网获取流量。如果未包含回退终结点,则流量管理器会针对任何未定义的范围发送NODATA响应。强烈建议你定义一个回退终结点,以确保在终结点上指定所有可能的IP范围。
子网路由可以用来为从特定IP空间进行连接的用户提供不同的体验。例如,你可以将公司办公室的所有请求都路由到不同的终结点。如果你尝试测试应用的内部唯一版本,此路由方法会特别有用。另一种情况是,你可能希望为从特定ISP进行连接的用户提供不同的体验(例如,阻止来自给定ISP的用户)。
后续步骤
了解如何使用流量管理器终结点监视开发高可用性应用程序。
本文原文来自Microsoft Azure官方文档