公共云中的高可用性故障转移

本章介绍如何配置主用/备份故障转移,以在公共云环境(如 Microsoft Azure)中实现 ASA virtual 的高可用性。

关于公共云中的故障转移

为确保冗余,您可以在公共云环境中部署采用主用/备份高可用性 (HA) 配置的 ASA virtual 。公共云中的高可用性实施无状态主用/备份解决方案,允许主用 ASA virtual 故障触发系统自动执行故障转移以切换到备份 ASA virtual

以下列表介绍高可用性公共云解决方案中的主要组件:

  • 主用 ASA Virtual - 高可用性对中设置为处理高可用性对等体的防火墙流量的 ASA virtual

  • 备份 ASA Virtual- ASA virtual HA 对中未在处理防火墙流量并在主用 ASA virtual 发生故障的情况下接管作为主用 ASA virtual 的 。它之所以被称为备份而不是备用 ASAv,是因为它在发生故障转移时不会获取其对等体的身份。

  • HA 代理- 在 ASA virtual 上运行并确定 ASA virtual的 HA 角色,检测其 HA 对等体的故障以及根据其 HA 角色执行操作的轻量级进程。

在物理 ASA 和非公共云虚拟 ASA 上,系统使用免费 ARP 请求处理故障转移条件,在此请求中,备份 ASA 发出免费 ARP,指示其现在与主用 IP 和 MAC 地址相关联。大多数公共云环境不允许此性质的广播流量。因此,公共云中的高可用性配置要求在发生故障转移时重新启动持续连接。

备份设备会对主用设备的运行状况进行监控,以便确定是否符合特定的故障转移条件。如果符合这些条件,将执行故障转移。故障转移时间可能在几秒到一分多钟之间变化,具体取决于公共云基础设施的响应能力。

关于主用/备份故障转移

在主用/备份故障转移中,一台设备是主用设备。它会传送流量。备份设备不会主动与主用设备传递流量或交换任何配置信息。主用/备份故障转移允许您使用备份 ASA virtual 设备接管故障设备的功能。主用设备出现故障时将变为备份状态,同时备份设备变为主用状态。

主/辅助角色和主用/备份状态

当设置主用/备份故障转移时,需要将一台设备配置为主设备,将另一台配置为辅助设备。此时,两台设备作为两个单独的设备,进行设备和策略配置,以及用于事件、控制面板、报告和运行状况监控。

故障转移对中两台设备之间的主要差别与哪一设备为主用设备,哪一设备为备份设备(即,哪一台设备会主动传送流量)有关。虽然两台设备都能传递流量,但只有主设备会响应负载均衡器的探测,并设定任何已配置的路由将其用作路由目标。备份设备的主要功能是监控主设备的运行状况。如果两台设备同一时间启动(并且运行状况相同),则主设备总是会成为主用设备。

故障转移连接

备份 ASA virtual 使用在 TCP 上建立的故障转移连接来监控主用 ASA virtual 的运行状况:

  • 主用 ASA virtual 通过打开一个 侦听端口来充当连接服务器。

  • 备份 ASA virtual 使用 连接端口连接到主用 ASA virtual

  • 通常情况下, 侦听端口连接端口 相同,除非您的配置要求在 ASA virtual 设备之间进行某种类型的网络地址转换。

故障转移连接的状态可用于检测主用 ASA virtual的故障。当备份 ASA virtual 看到故障转移连接断开时,它会将主用 ASA virtual 视为 出现故障。同样,如果备份 ASA virtual 没有收到发送至主用设备的保持连接消息的响应,它也会将主用 ASA virtual 视为 出现故障

相关主题

轮询和 Hello 消息

备份 ASA virtual 通过故障转移连接发送 Hello 消息到主用 ASA virtual ,并预期在回复中收到 Hello 响应。消息定时使用轮询间隔,即备份 ASA virtual 设备收到 Hello 响应与发送下一条 Hello 消息之间的时段。接收响应由被称为保持时间的接收超时来执行。如果接收 Hello 响应发生超时,则主用 ASA virtual 被视为出现故障。

轮询间隔和保持时间间隔均为可配置参数;请参阅配置主用/备份故障转移

启动时的主用设备确定

主用设备按以下方式确定:

  • 如果某台设备启动,并检测到对等体已作为主用设备运行,则该设备将成为备份设备。

  • 如果某台设备启动,并且未检测到对等体,则该设备会成为主用设备。

  • 如果两台设备同时启动,则主设备成为主用设备,辅助设备成为备份设备。

故障转移事件

在主用/备份故障转移中,故障转移会在设备级别进行。下表显示了每个故障事件的故障转移操作。对于每种故障事件,该表显示了故障转移策略(故障转移或禁用故障转移)、主用设备执行的操作、备份设备执行的操作,以及有关故障转移条件和操作的所有特别说明。

表 1. 故障转移事件

故障事件

策略

主用设备操作

备份操作

说明

备份设备看到故障转移连接关闭

故障转移

不适用

成为主用设备

将主用设备标记为发生故障

这是标准的故障转移使用案例。

主用设备看到故障转移连接关闭

禁用故障转移

将备份设备标记为发生故障

n/a

到非主用设备的故障转移永远不会发生。

主用设备在故障转移链路上看到 TCP 超时

禁用故障转移

将备份设备标记为发生故障

无需操作

如果主用设备未从备份设备获取响应,则不应发生故障转移。

备份设备在故障转移链路上看到 TCP 超时

故障转移

不适用

成为主用设备

将主用设备标记为发生故障

尝试向主用设备发送故障转移命令

备份设备假定主用设备无法继续操作并接管控制权。

如果主用设备仍处于正常运行状态,但无法及时发送响应,备份设备将会发送故障转移命令到主用设备。

主用身份验证失败

禁用故障转移

无需操作

无需操作

由于备份设备正在更改路由表,因此它是唯一需要向 Azure 进行身份验证的设备。

主用设备是否已向 Azure 进行身份验证无关紧要。

备份身份验证失败

禁用故障转移

将备份设备标记为未进行身份验证

无需操作

如果备份设备未向 Azure 进行身份验证,则无法进行故障转移。

主用设备有意启动故障转移

故障转移

变为备份设备

成为主用设备

主用设备通过关闭故障转移链路连接来启动故障转移。

备份设备看到连接关闭,并成为主用设备。

备份设备有意启动故障转移

故障转移

变为备份设备

成为主用设备

备份设备通过发送故障转移消息到主用设备来启动故障转移。

当主用设备看到此消息时关闭连接并将成为备份设备。

备份设备看到连接关闭,并成为主用设备。

以前的主用设备恢复

禁用故障转移

变为备份设备

将伙伴设备标记为备份设备

除非绝对必要,否则不应发生故障转移。

主用设备看到发自备份设备的故障转移消息

故障转移

变为备份设备

成为主用设备

由用户启动手动故障转移时,或者当备份设备看到 TCP 超时,但主用设备能够从备份设备接收消息时可能发生。

准则和限制

本节包括此功能的准则和限制。

公共云中的高可用性ASA Virtual 故障转移

为确保冗余,您可以在公共云环境中部署采用主用/备份高可用性 (HA) 配置的 ASA virtual

  • 仅在 Microsoft Azure 公共云上受支持;配置 ASA virtual VM 时,支持的最大数量 Vcpu 为 8;支持的最大内存为 64GB RAM。有关受支持实例的详细列表,请参阅 ASA virtual 入门指南

  • 实施无状态主用/备份解决方案,允许主用 ASA virtual 故障触发系统自动执行故障转移以切换到备份 ASA virtual

限制

  • 故障转移按秒级别而不是毫秒级别执行。

  • 高可用性角色的确定和以高可用性设备角色参与部署的能力取决于高可用性对等体之间以及高可用性设备与 Azure 基础设施之间的 TCP 连接。有几种情况下, ASA virtual 将无法以高可用性设备角色参与部署:

    • 无法建立到其高可用性对等体的故障转移连接。

    • 无法从 Azure 检索身份验证令牌。

    • 无法与 Azure 进行身份验证。

  • 没有从主用设备到备份设备的配置同步。每台设备必须单独配置相似的配置,用于处理故障转移流量。

  • 故障转移路由表限制

    关于公共云中 HA 的路由表:

    • 您最多可以配置 16 个路由表。

    • 在路由表中,最多可以配置 64 个路由。

    在每种情况下,系统都会在达到限制时向您发出警报,并建议删除路由表或路由并重试。

  • 无 ASDM 支持

  • 没有 IPSec 远程访问 VPN 支持。



    有关公共云中受支持的 VPN 拓扑的信息,请参阅《思科自适应安全虚拟设备 (ASAv) 快速入门指南 》


  • ASA Virtual 虚拟机实例必须在同一可用性集中。如果您是 Azure 中的当前 ASA virtual 用户,您将无法从现有部署升级到高可用性部署。您必须删除您的实例,然后部署 Azure 市场提供的 ASA virtual 4 NIC 高可用性产品。

公共云中的故障转移许可

ASA virtual 使用思科智能软件许可。需要安装智能许可证才能正常运行。每个 ASA virtual 必须使用 ASA virtual 平台许可证单独进行许可。在安装许可证之前,吞吐量限制为 100 kbps,以便您可以执行初步连接测试。请参阅 思科 ASA 系列功能许可证 页面,查找 ASA virtual的精确许可要求。

公共云中的故障转移默认值

默认情况下,故障转移策略包含以下内容:

  • 仅无状态故障转移。

  • 每台设备必须单独配置相似的配置,用于处理故障转移流量。

  • 故障转移 TCP 控制端口号是 44442。

  • Azure 负载均衡器运行状况探测端口号是 44441。

  • 设备轮询时间为 5 秒。

  • 设备保持时间为 15 秒。

  • ASA virtual 响应主接口 (Management 0/0) 上的运行状况探测。

  • 在主接口 (Management 0/0) 上执行 Azure 服务主体 ASA virtual 身份验证。



如需获取更改故障转移端口号、运行状况探测端口号、轮询时间和主接口的选项,请参阅 配置可选故障转移参数


关于 Microsoft Azure 中的 ASA Virtual 高可用性

下图简要显示了 Azure 中的 ASA virtual 高可用性部署的情况。受保护的工作负载位于主用/备份故障转移配置中的两个 ASA virtual 实例后面。Azure 负载均衡器使用三次 TCP 握手来探测这两个 ASA virtual 设备。主用 ASA virtual 完成三次握手,指示其处于正常运行状态,而备份 ASA virtual 则特意不响应。由于未对负载均衡器做出响应,在负载均衡器看来,备份 ASA virtual 处于非正常运行状况,进而导致负载均衡器不会向其发送流量。

发生故障转移时,主用 ASA virtual 停止响应负载均衡器探测,备份 ASA virtual 则开始响应,从而导致所有新连接被发送到备份 ASA virtual。备份 ASA virtual 发送 API 请求至 Azure 交换矩阵以修改路由表,将流量从主用设备重定向至备份设备。此时,备份 ASA virtual 成为主用设备,主用设备则成为备份设备或离线,具体取决于发生故障转移的原因。

图 1. Azure 中的ASA Virtual 高可用性部署
Azure 中的 ASAv 虚拟高可用性部署

为了能够自动进行 API 调用以修改 Azure 路由表, ASA virtual 高可用性设备需要具有 Azure Active Directory 凭证。Azure 采用服务主体的概念,简单来说,就是服务帐户。服务主体允许您调配帐户,前提是该帐户仅具有在预定义的 Azure 资源集内运行任务所需的足够权限和范围。

通过两个步骤可启用 ASA virtual 高可用性部署,以使用服务主体管理您的 Azure 订用:

  1. 创建 Azure Active Directory 应用和服务主体;请参阅关于 Azure 服务主体

  2. 配置 ASA virtual 实例以使用服务主体向 Azure 进行身份验证;请参阅 配置主用/备份故障转移

相关主题

有关负载均衡器的更多信息,请参阅 Azure 文档。

关于 Azure 服务主体

当您的应用需要访问或修改 Azure 资源,例如路由表时,您必须设置 Azure Active Directory (AD) 应用并为其分配所需的权限。这是在您自己的凭证下运行应用的首选方法,因为:

  • 您可以向应用身份分配不同于您自己权限的其他权限。通常,这些权限严格局限于应用需要执行的任务。

  • 如果您的责任发生变化,您无需更改应用的凭证。

  • 您可以使用证书,在执行无人值守的脚本时自动进行身份验证。

在 Azure 门户注册 Azure AD 应用时,将在您的 Azure AD 租户中创建两个对象:一个应用对象和一个服务主体对象。

  • 应用对象 - Azure AD 应用由其仅有的一个应用对象定义,该应用对象位于在其中注册应用的 Azure AD 租户中,此租户也称为应用的“主”租户。

  • 服务主体对象 - 服务主体对象定义在特定租户中使用应用的策略和权限,从而为安全主体在运行时代表该应用提供基础。

Azure 在 Azure 资源管理器文档中提供了关于如何创建 Azure AD 应用和服务主体的说明。有关完整的说明,请参阅以下主题:



设置服务主体后,获取目录 ID应用 ID密钥 。配置 Azure 身份验证需要这些信息;请参阅配置主用/备份故障转移


Azure 中的 ASA Virtual 高可用性配置要求

要部署与#id_53743__中所述配置相似的配置,您需要以下信息:



在主设备和辅助设备上配置基本故障转移设置。没有主设备到辅助设备的配置同步。每台设备必须单独配置相似的配置,用于处理故障转移流量。


配置主用/备份故障转移

要配置主用/备份故障转移,请在主设备和辅助设备上配置基本故障转移设置。没有主设备到辅助设备的配置同步。每台设备必须单独配置相似的配置,用于处理故障转移流量。

开始之前

  • 在 Azure 可用性集中部署您的 ASA virtual 高可用性对。

  • 提供您的 Azure 环境信息,包括您的 Azure 订用 ID 和服务主体的 Azure 身份验证凭证。

过程


步骤 1

依次选择配置 > 设备管理 > 高可用性和可扩展性 > 故障转移

步骤 2

选项卡上,选中设备复选框,以展开故障转移设备下拉选项。

步骤 3

故障转移设备下拉菜单中,选择主设备

当两台高可用性设备同时启动时,主设备将承担主用高可用性角色。

步骤 4

(可选)选中端口复选框,以展开控制探测字段。

  1. 控制字段中输入有效的 TCP 控制端口;或保留默认值,即端口 44442。

    控制端口将会在主用 ASA virtual 和备份 ASA virtual之间建立 TCP 故障转移连接。

  2. 探测字段中输入有效的 TCP 探测端口;或保留默认值,即端口 44441。

    探测端口是用作 Azure 负载均衡器探测的目标端口的 TCP 端口。

步骤 5

(可选)选中时间复选框,以展开轮询时间保持时间字段。

  1. 轮询时间字段中输入有效的时间(以秒为单位);或保留默认值,即 5 秒。

    轮询时间范围为 1 到 15 秒之间。设置的轮询时间越快,ASA 便可越快检测到故障并触发故障转移。但是,当网络临时堵塞时,更快的检测会导致不必要的切换。

  2. 保持时间字段中输入有效的时间(以秒为单位);或保留默认值,即 15 秒。

    保持时间确定从一个呼叫数据包丢失到将设备标记为发生故障的时长。保持时间范围介于 3 到 60 秒之间。输入的保持时间值不能小于设备轮询时间的 3 倍。

步骤 6

选中对等体复选框,以展开对等体 IP 地址对等体端口字段。

  1. 对等体 IP 地址字段中,输入用于建立到高可用性对等体的 TCP 故障转移控制连接的 IP 地址。

  2. 对等体端口字段中输入有效的 TCP 控制端口;或保留默认值,即端口 44442。

    对等体端口将会在主用 ASA virtual 和备份 ASA virtual之间建立 TCP 故障转移连接。

步骤 7

选中身份验证复选框,以展开应用 id目录 id密钥字段。

您可以配置 Azure 服务主体的身份验证凭证,以允许您的 ASA virtual 高可用性对等体访问或修改 Azure 资源,例如路由表。服务主体允许您调配拥有在预定义 Azure 资源集内执行任务所需的最低权限的 Azure 帐户。对于 ASA virtual 高可用性,它仅限于修改用户定义的路由所需的权限;请参阅 关于 Azure 服务主体

  1. 应用 id 字段中输入 Azure 服务主体的 Azure 应用 ID。

    当您从 Azure 基础设施请求访问密钥时,需要此应用 ID。

  2. 目录 id 字段中输入 Azure 服务主体的 Azure 目录 ID。

    当您从 Azure 基础设施请求访问密钥时,需要此目录 ID。

  3. 密钥 字段中输入 Azure 服务主体的 Azure 密钥。

    在从 Azure 基础设施请求访问密钥时,您需要此密钥。如果选中了加密字段,则将在运行配置中加密密钥。

步骤 8

选中订用复选框,以展开子 id 字段。

这是需要更新的路由表所属帐户的订用 ID。

步骤 9

选中启用云故障转移复选框。

步骤 10

点击 Apply

故障转移实际上并未启用,直到您将更改应用到设备。

步骤 11

如果您知道辅助设备尚未启用故障转移,请连接到 设备列表中的辅助 ASA virtual ,或使用 ASA virtual的 IP 地址启动新的 ASDM 会话: https://asa_ip_address/admin

步骤 12

重复步骤 1 至 10,在辅助设备上配置主用/备份故障转移。

没有主设备到辅助设备的配置同步。每台设备必须单独配置相似的配置,用于处理故障转移流量。

故障转移实际上并未启用,直到您将更改应用到设备。


下一步做什么

根据需要配置其他参数:

配置可选故障转移参数

您可以在必要时自定义故障转移设置。

配置 Azure 路由表

路由表配置包含在 ASA virtual 承担主用角色时需要更新的用户定义的 Azure 路由的相关信息。在故障转移时,您需要将内部路由定向至主用设备,主用设备则使用配置的路由表信息将路由自动定向至自身。



您需要同时在主用和备份设备上配置任何 Azure 路由表信息。

开始之前

  • 在主设备和辅助设备上配置这些设置。配置未从主设备同步到辅助设备。

  • 提供您的 Azure 环境信息,包括您的 Azure 订用 ID 和服务主体的 Azure 身份验证凭证。

过程


步骤 1

依次选择配置 > 设备管理 > 高可用性和可扩展性 > 故障转移

步骤 2

点击路由表选项卡,然后点击添加

  1. 路由表名称字段中,输入路由表的名称。

    您最多可以配置 16 个路由表。或者,您可以编辑或删除路由表列表的条目。

  2. (可选)在子 id 字段中,输入一个 Azure 订用 ID。

    您可以通过在这里指定对应的 Azure 订用 ID,来更新多个 Azure 订用中用户定义的路由。如果您输入路由表名称而未指定 Azure 订用 ID,则将使用全局参数。

     
    在从配置 > 设备管理 > 高可用性和可扩展性 > 故障转移配置主用/备份故障转移时,输入 Azure 订用 ID;请参阅配置主用/备份故障转移

步骤 3

点击路由表模式。您可以添加、编辑或删除路由表中的路由条目。

步骤 4

点击添加

为 Azure 用户定义的路由输入以下值:

  1. 路由表下拉列表中,选择一个路由表。

  2. Azure 资源组字段中,输入包含 Azure 路由表的 Azure 资源组的名称。

  3. 路由名称字段中,输入唯一的路由名称。

  4. 前缀地址/掩码字段中,输入采用 CIDR 表示法的 IP 地址。

  5. 下一跳地址字段中,输入下一跳地址。这是 ASA virtual上的接口 IP 地址。

 
您最多可以配置 64 个路由。

步骤 5

点击 Apply 保存更改。


管理公共云中的故障转移

本节介绍在启用故障转移后,如何管理云中的故障转移设备,包括如何更改为强制从一台设备故障转移到另一台设备。

强制故障转移

要强制要求备用设备成为主用设备,请执行以下命令。

开始之前

在单情景模式下的系统执行空间中使用此命令。

过程


步骤 1

依次选择监控 > 属性 > 故障转移 > 状态

步骤 2

要在设备级别强制进行故障转移,请点击以下按钮之一:

  • 点击设为主用,使此设备成为主用设备。

  • 点击设为备用,使此设备成为备用设备。


更新路由

如果 Azure 中的路由状态与处于 主用 角色的 ASA virtual 状态不一致,您可以在 ASA virtual上强制进行路由更新:

开始之前

在单情景模式下的系统执行空间中使用此命令。

过程


步骤 1

依次选择监控 > 属性 > 故障转移 > 状态

步骤 2

点击更新路由

此命令仅在处于 主用 角色的 ASA virtual 上有效。如果身份验证失败,输出将是 Route changes failed


验证 Azure 身份验证

要在 Azure 中成功完成 ASA virtual 高可用性部署,服务主体配置必须完整、准确。没有适当的 Azure 授权, ASA virtual 设备将无法访问处理故障转移和执行路由更新的资源。您可以测试您的故障转移配置,以检测与以下 Azure 服务主体元素相关的错误:

  • 目录 ID

  • 应用 ID

  • 身份验证密钥

开始之前

在单情景模式下的系统执行空间中使用此命令。

过程


步骤 1

依次选择监控 > 属性 > 故障转移 > 状态

步骤 2

点击测试身份验证 (Test Authentication)

如果身份验证失败,命令输出将是 Authentication Failed

如果未正确配置目录 ID 或应用 ID,Azure 将无法识别 REST 请求中所述的资源,以获取身份验证令牌。此条件条目的事件历史记录将显示:

Error Connection - Unexpected status in response to access token request: Bad Request

如果目录 ID 或应用 ID 正确,但未正确配置身份验证密钥,Azure 将不会授予生成身份验证令牌的权限。此条件条目的事件历史记录将显示:

Error Connection - Unexpected status in response to access token request: Unauthorized

监控公共云中的故障转移

本节介绍如何监控故障转移状态。

故障转移状态



在故障转移事件后,您应重新启动 ASDM 或切换到 Devices 窗格中的另一台设备,以返回原始 ASA 并继续监控设备。必须执行此操作,因为当 ASDM 从设备断开然后重新连接设备时,不会重新建立监控连接。


  • 依次选择监控 > 属性 > 故障转移 > 状态,然后点击故障转移状态以监控主用/备份故障转移状态。

  • 依次选择监控 > 属性 > 故障转移 > 历史记录,以显示故障转移事件历史记录与时间戳、严重性级别、事件类型和事件文本。

故障转移消息

故障转移系统日志消息

ASA 在优先级别 2 发出大量与故障转移有关的系统日志消息,级别 2 表示一种关键情况。要查看这些消息,请参阅系统日志消息指南。系统日志消息的范围是 1045xx 到 1055xx 之间。



故障转移期间,ASA 按照逻辑先关闭接口,再启动接口,从而生成系统日志消息。这是正常活动。


以下是在切换期间生成的系统日志示例:

%ASA-3-105509: (Primary) Error sending Hello message to peer unit 10.22.3.5, error: Unknown error
%ASA-1-104500: (Primary) Switching to ACTIVE - switch reason: Unable to send message to Active unit
%ASA-5-105522: (Primary) Updating route-table wc-rt-inside
%ASA-5-105523: (Primary) Updated route-table wc-rt-inside
%ASA-5-105522: (Primary) Updating route-table wc-rt-outside
%ASA-5-105523: (Primary) Updated route-table wc-rt-outside
%ASA-5-105542: (Primary) Enabling load balancer probe responses
%ASA-5-105503: (Primary) Internal state changed from Backup to Active no peer
%ASA-5-105520: (Primary) Responding to Azure Load Balancer probes

每个与公共云部署相关的系统日志均以设备角色:(Primary) 或 (Secondary) 作为前缀。

故障转移调试消息

要查看调试消息,请输入 debug fover 命令。有关更多信息,请参阅命令参考。



由于调试输出在 CPU 进程中分配的高优先级,它可能会极大地影响系统性能。为此,应仅在对特定问题进行故障排除或与思科 TAC 进行故障排除会话过程中使用 debug fover 命令。


SNMP 故障转移陷阱

要接收故障转移的 SNMP 系统日志陷阱,请将 SNMP 代理配置为发送 SNMP 陷阱到 SNMP 管理站、定义系统日志主机,并将思科系统日志 MIB 汇集到 SNMP 管理站中。

公共云中的故障转移历史记录

功能名称

版本

功能信息

Microsoft Azure 上的主用/备份故障转移

7.9(1)

引入了此功能。