Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

地址池管理器简介

总结 使用本指南配置和管理地址池管理器。

地址池管理器简介

瞻博网络地址池管理器 (APM) 是一个基于容器的云原生应用程序,运行在管理网络中 IPv4 地址池的 Kubernetes 群集上。在 BNG 耗尽其地址池之前,它会自动将前缀从集中式地址池预配到宽带网络网关 (BNG)。BNG 将 APM 提供的前缀作为新池添加到链接地址池中。链接地址池和池的关联属性(利用率、阈值等)称为 池域

BNG 根据域的阈值持续监控域的空闲地址,如下所示:

  • 当域中的可用地址数达到或低于域的分配阈值时,BNG 会向 APM 发送警报,请求其他地址。

  • APM 分配与请求的前缀长度匹配的请求池前缀数量,并在警报响应中返回地址。

  • 当域中的可用地址数达到或超过域的回收阈值时,BNG 会选择要删除的池前缀。它还会向请求回收的 APM 发出警报。

  • APM 通过指示 BNG 在池中放置主动排水管来响应回收警报。池完全耗尽(无分配地址)后,BNG 会引发池已耗尽警报。

  • APM 通知 BNG 前缀已返回到域的源分区,并且 BNG 可以安全地从域中删除池前缀。

  • 回收的前缀现在可供另一个 BNG 请求。

注意:

本文档中的术语 BNG 也适用于 BNG CUPS 控制器。

图 1 显示了 APM 操作的高级视图,用于监控 BNG 并在需要时为其配置所需的地址。

图 1:基本 APM 操作 Basic APM Operations

APM 提供的地址管理解决方案可帮助网络运营商高效分配 IPv4 地址。典型的地址分配方案很复杂,效率不如网络运营商需要的。提供商通常会在网络设备上预先预配地址以处理最坏情况下的负载,以防止设备用完地址。这意味着设备的大部分运行时间都会过度配置。

APM 不会预先配置地址,因为这些地址可能永远不需要,可以在其他地方使用。APM 不是预先配置,而是仅在 BNG 需要时才分配前缀。可能影响及时有效地分配地址的具体网络注意事项包括:

  • 使用地址的网络设备数

  • VPN 的存在

  • 系统冗余方案

  • 网络元素的地理分布

APM 回收前缀以不断调整前缀的分布并最大化地址空间利用率。前缀回收发生在 APM 上,而地址回收发生在 BNG 上。当 BNG 具有多余的 IP 地址时,会发生前缀回收。BNG 会向 APM 发送回收警报,并提供建议的回收池前缀。APM 在池上启动清空请求,以确保在 APM 回收池前缀之前,池没有任何地址分配。然后,当这些 BNG 接近地址耗尽并需要更多地址时,APM 可以将前缀重新分配给其托管 BNG 中的其他池。

地址池管理器的优点

  • 效率 — 提高地址利用率。APM 为网络中的多个 BNG 集中并自动分配地址。APM 使用实时前缀分配,因此仅当 BNG 需要其他 IP 地址时才配置前缀。

    APM 仅提供 BNG 需要的任意数量的前缀。将 APM 全局池划分为前缀组后,APM 会进一步细分前缀以匹配 BNG 的请求。此细分使 APM 能够优化其分配的前缀的大小。

  • 简单性 — 避免手动监控和调配单个 BNG 的开销和复杂性。

  • 可部署性 — 在满足要求的任何硬件上安装和运行。

  • 可回收性 - 将未使用的前缀从使用很少 IP 地址的池中回收到中央池,并将这些前缀重新分发到需要它们的其他池。

寻址术语

您应该充分了解 IP 寻址、无类别域间路由 (CIDR)、可变长度子网掩码 (VLSM) 以及如何将 IP 前缀细分为子网(子网)。当您设计寻址策略(本文档范围之外)或使用手动地址回收时,您可能会发现查看 IP 子网计算器会很有帮助。您可以在网上找到许多这样的计算器。

我们在本文档中使用以下术语:

  • 前缀 — 使用 CIDR 表示法表示的 32 位 IPv4 网络地址和前缀长度;例如,198.51.100.0/24。前缀定义 IP 地址的网络部分。前缀表示子网。

  • 前缀长度 — 确定前缀长度和 IP 地址网络部分大小的位数。/24 前缀长度表示地址的网络部分长度为 24 位。其余位(共 32 位)表示网络地址的主机部分。对于前缀长度为 /24 的前缀,主机部分为 8 位:32 – 24 = 8。

  • 网络大小 - 此术语有时用于表示几种不同的内容,具体取决于上下文,这可能会导致歧义。我们描述前缀长度及其如何与子网中的主机地址数量相对应,如下所示:

    • 较长的前缀(由较长的前缀长度决定)对应于更多的子网,每个子网要分配的主机地址更少。

    • 较短的前缀(由较短的前缀长度决定)对应于较少的子网,并且要为每个子网分配更多的主机地址。

  • 免费地址是可用且尚未分配给订阅者的 IP 地址。

APM 的工作原理

APM 为网络中的一组 BNG 维护一个集中的 IP 前缀集合。APM CLI 将托管 BNG 称为实体。本文档通常使用术语 BNG,但在某些情况下,本文档使用术语 实体

APM 使用 BNG 协调池域的创建。每个池域对应于 BNG 上给定路由实例组合的链接地址池。此外,在 BNG CUPS 控制器上,池域对应于给定订阅者组和路由实例组合的链接地址池。由于池域是动态创建的,因此 BNG 和 APM 都会维护包含实例化池域所需属性的配置文件或模板。APM 配置文件包含分配、回收阈值和自动回收行为等属性。国行。配置文件包含前缀大小和丢弃路由安装行为等属性。

APMi 版本 1(与 Junos OS 22.1R1 版及更高版本兼容)。您可以通过运行 show apm 实体 命令来检查 APMi 版本。

阈值和警报

BNG 创建池域并监视池域中的可用地址数。当可用地址数超过阈值时,BNG 会向 APM 发送告警消息。BNG 根据以下阈值监控可用地址的数量:

  • 分配阈值 — 当可用地址数达到或低于此值时,BNG 将面临地址不足的风险。BNG 向 APM 发送分配告警,请求更多地址。APM 选择要分配的可用前缀并将前缀分配给 BNG,BNG 在池域中添加一个或多个前缀作为新池。未能分配前缀(例如;空分区)会导致否定响应。重试时间设置为从收到请求之日起 15 分钟的时间戳。如果 BNG 仍需要域的前缀,它将在提供的时间戳值处重试。
  • 回收阈值 — 当可用地址数达到或高于此值时,BNG 具有多余的地址。BNG 向 APM 发送回收警报,并建议排出一个池。根据配置,APM 可能会启动池中的耗尽。已排出的池在订阅者使用的池中没有 IP 地址。

    在耗尽期间,BNG 路由器停止从池中分配地址,并等待订阅者注销以释放这些地址。

    排空池后,BNG 会将池已排空告警发送给 APM。APM 向 BNG 路由器发送消息,要求从池域中删除池。

    注意:

    在以下情况下,APM 会在池上启动回收过程:

    • 为池域启用了自动回收。
    • 允许在当前时间段进行回收。

    如果 APM 由于自动回收位于窗口外而无法处理回收警报,则 APM 将使用 和 ALARM_NACK/NOOP 重试时间进行响应,该重试时间设置为自动回收窗口开始的那一秒。

您可以在池域配置文件中配置分配阈值和回收阈值。阈值确定 BNG 是否有足够的可用地址,以及 APM 应何时分配或回收前缀。请考虑 图 2 中的以下虚构时间线。BNG 在订阅者登录时为其分配地址,并在用户注销时回收地址。时间线显示 BNG 在一段时间内跟踪的可用地址数。 表 1 描述了当可用地址数超过不同阈值时,BNG 和 APM 针对不同场景采取的措施。

图 2:BNG Free Addresses on a BNG 上的可用地址
表 1:APM 针对不同警报采取的措施
BNG发送的时间警报 说明
t0 从填充池域开始时间线。
T1 分配报警 当订阅者登录时,BNG 上的可用地址数量低于分配阈值。BNG 会发送分配警报。APM 接收分配告警并将前缀分配给池域。BNG 从池域的池前缀分配地址。
T2 分配报警

APM 收到分配告警,但分区没有可用的前缀。警报为 NACKed,重试时间戳设置为 15 分钟后。BNG 在此时间戳重试分配警报,除非它不再需要这些地址。

T3 分配报警 在重试时间戳处,BNG 会重新发送分配警报,因为可用地址数仍低于分配阈值。
T4 回收报警 订阅者继续注销,直到可用地址数超过回收阈值。BNG 会发送回收警报,其中包含要回收的建议池。APM 在建议的池上放置一个清空,BNG 在池上启动清空过程。
T5 泳池排水报警器 当地址池的订阅者为零时,池中没有分配的地址。BNG 将池已排空告警发送到 APM。APM 通过删除请求响应池已排空警报。BNG 将从池域的池列表中删除池。APM 将相应的前缀移回分区进行重新分配。

删除池后,可用地址的数量会下降。

T6 回收报警 APM 接收回收警报,但不采取任何操作,因为警报发生在回收窗口之外。APM 返回一个警报 NACK,其重试时间戳设置为回收窗口开始的时间。如果仍有多余的空闲地址,BNG 此时会重试回收警报。

APM 的一般操作

以下步骤说明了 APM 的一般操作:

  1. BNG 和 APM 使用 APMi(瞻博网络定义的基于 gRPC 的协议)进行通信。Google RPC (gRPC) 是用于构建可扩展和可互操作通信协议的通用框架。初始连接时,BNG 会启动池域同步。池域同步过程同步活动池域集。APM 将活动池域列表与 BNG 的池域列表对齐。池域同步后,BNG 将为每个池域运行池同步(发现)。APM 将每个域的池列表与 BNG 的列表对齐。如果 APM 保留了任何其他池(不在 BNG 的域池列表中),则池前缀将释放到分区。如果 APM 缺少池,APM 会尝试分配池。
  2. APM 监控 BNG 发送的报警消息。

  3. APM 评估警报并据此采取行动。例如,如果 BNG 的地址用完了,BNG 会向 APM 发送分配告警。APM 从域的源分区分配请求的前缀数,并在告警响应中返回这些前缀。BNG 将这些池前缀添加到池域。

图 1 显示了单个 APM 实例的各个功能组件之间关系的更详细视图。每个管理器块都显示它使用的数据库表。

图 3:APM Functional Components of APM 的功能组件
注意:

您可以在网络中的多个不同集群上同时运行多个 APM 实例。这些 APM 实例是独立的,彼此不知道。实例不共享状态或配置。

每个 APM 实例都包含以下微服务作为应用程序的功能组件:

  • 实体管理器 — 为所管理的 BNG 编排池管理活动。这些活动包括处理警报以及分配和回收池前缀。

  • 地址管理器 - 将中央地址池组织到分区中,并管理每个分区中配置的根前缀的分配。它将根前缀细分为较小的前缀,并根据为 BNG 配置的标准分配前缀。

  • 供应管理器 - 与 BNG 接口以调配池域及其关联的地址池。供应管理器可确保域和关联的已分配池前缀在 APM 和 BNG 之间保持同步。

    APM 供应管理器使用 APMi 与受管 BNG 通信。预配管理器发送 gRPC 消息以直接预配和取消预配 BNG 上的前缀,以响应 BNG 启动的域警报。

  • MGMT 微服务提供基于文本的配置架构和 CLI,以便您可以配置全局前缀池、托管 BNG 及其关联的池域属性。您可以使用 CLI 显示各种功能组件的统计信息和状态。输出提供有关系统负载、效率、利用率以及错误或异常情况的信息。
  • 宽带边缘 (BBE) 事件收集和可视化(基于云的集中式实用程序)— 提供了一种捕获跨越 APM 微服务生命周期的 APM 日志的方法。该实用程序跨 APM 微服务实例收集和存储日志。

  • Fluentd —从地址管理器、实体管理器和供应管理器收集日志,也可以将其导出到远程系统日志收集器,例如宽带边缘事件收集和可视化。
  • 数据库实例 (DB) — 提供对 APM 的每个功能组件使用的数据库表的共享访问。该数据库包括地址、BNG 和池域信息的表。该数据库为配置信息和操作状态提供持久存储。

    APM 使用一个数据库,其中包含有关实体、池域、池、前缀、分配、配置等的状态信息。两个数据库实例(一个主实例和一个备用实例)以热备用模式部署。数据库实例由数据库哨兵服务监视,该服务检测主数据库中的故障。主数据库发生故障时,辅助数据库将承担主数据库的角色,同时恢复新的备用数据库。

    注意:

    除了主节点之外,冗余至少需要三个工作器节点。工作器节点必须全部位于单独的物理服务器上。但是,节点可以是物理机,也可以是虚拟机。

APM 的功能组件

CLI 和配置管理

用户界面 (MGMT) 是 Junos OS 管理过程的容器化版本。通过此接口,您可以使用与 Junos OS 相同的 CLI 结构进行配置和监控。管理还提供了一个界面,使您能够远程管理 APM。

APM 执行以下任务:

  • 将初始 APM 配置从 MGMT 服务加载到数据库中,然后其他 APM 组件才能进入其运行时状态。

  • 将命令和配置转换为 APM 微服务可理解的操作和参数。

  • 记录数据库中的初始配置和后续更改以实现持久性。它会通知 APM 组件任何更改。

实体经理

实体管理器协调影响实体状态的其他功能组件的操作。

对于管理的每个 BNG,实体经理跟踪以下信息:

  • BNG 地址,它是托管托管池的 BNG 的传输地址。

  • 正在管理的池域的列表。

池域表示 BNG 上的链接地址池。对于每个池域,实体管理器跟踪以下信息:

  • 池域名 - 标识 BNG 托管池的用户定义字符串。对于该 BNG,每个池域名必须是唯一的。这意味着池域名有效地充当了密钥;它有时称为池域密钥。由实体构造的用户定义字符串。对于 BNG,该字符串由与路由实例名称链接的域配置文件名称组成。对于 BNG CUPS 控制器,该字符串由与订阅者组名称和路由实例名称链接的域配置文件名称组成。

  • APM 使用格式 pool-domain-name-sequence-number 来命名它创建的池。至少 sequence-number 为 4 位数字;如果值小于 1,000,则序列号用前导 0 填充。因此,0001、0999、1000 213339是有效的序列号。例如,如果池域的名称是 test-pd,则 APM 会将第一个池命名为 test-pd。它将后续池命名为 test-pd-0000、test-pd-0001 等。

  • 前缀 - 组成池域的前缀的有序列表。

实体管理器收集池域上各种操作(上次发现、上次分配、上次回收等)的大量易失性统计信息。统计信息包括警报计数、池数、其关联的前缀和时间戳。您可以使用 APM show 命令显示这些统计信息,例如 show apm entity

当供应管理器将分配警报从 BNG 中继到实体管理器时,实体管理器会从地址管理器请求池域的新前缀。

前缀请求包括以下信息:

  • 地址族 — 当前支持 IPv4

  • 分配键 - 托管 BNG 的 IP 地址和池域

  • 请求的前缀长度 - 要从分区分配到池域的前缀的大小。

随后,实体管理器尝试将分配的前缀置备到 BNG 的地址池。

当置备管理器通知实体管理器可以访问 BNG 时,实体管理器将开始一个过程来发现和协调所管理的 BNG 池域(同步)。每当可访问性状态更改时,预配管理器都会向实体管理器发送可访问性报告。实体管理器请求发现为该 BNG 管理的所有池域。

发现过程使用预配接口来查找池域和 BNG 已知的关联池信息。在发现过程结束时,APM 和 BNG 具有相同的池域和分配的池前缀。

如果发现的信息与现有信息不匹配,则 APM 使用池域的分区信息更新其数据库(以匹配 BNG)。如果 APM 在更新过程中发现冲突,它会在日志中将该冲突标记为警告。

地址管理器

地址管理器使用 VLSM 算法将地址池分区中的根前缀细分为较小的子前缀,最高可达 max-prefix-len 您为每个根前缀配置的值。在分配期间,地址管理器将对适当大小的前缀的请求与分区和根前缀进行匹配。APM 从根前缀分配一个空闲的子前缀以满足分配事件。

如果分区中的可用地址百分比降至阈值 free-prefix-utilization 以下,地址管理器将记录一条警告消息。超过该阈值表示分区有地址耗尽的危险,因为它分配了太多地址。

配置 APM 时,需要为分区分配根前缀。地址管理器仅从任何域的单个分区中分配前缀。每个分区代表一个分配上下文。地址管理器使用您为域配置的偏差来选择从中细分前缀以分配给域的分区。

将根前缀添加到分区时,请确保它符合该分区指定的最小和最大前缀长度限制:

  • min-prefix-len值是最短的有效根前缀。

  • max-prefix-len值是最长的有效根前缀。

因此, min-prefix-len <= 根前缀长度 <= max-prefix-len

例如,如果 20 且max-prefix-len为 24,则可以min-prefix-len添加前缀长度为 /20、/21、/22、/23 或 /24 的根前缀。

前缀长度越小,子网中可用的单个主机地址就越多。前缀长度越大,子网中可用的单个主机地址就越少。例如:

  • 前缀长度 /20 提供 4,094 个可用主机地址。

  • 前缀长度 /24 提供 254 个可用主机地址。

注意:

如果配置的根前缀超出指定限制,APM 不会将其添加到分区。

前缀细分

前缀细分的目标使 APM 能够在多个域之间共享根前缀,并允许域以较小的增量增长。地址管理器使用 VLSM 算法在配置期间细分分区中的根前缀。每个细分都是一个子网(子网)。

您可以通过指定允许的最大前缀长度来控制地址管理器细分根前缀的深度。的值 max-prefix-length 是子网允许的最长前缀。因此,此配置确定分配的前缀必须提供的最小主机地址数。

前缀分配

地址管理器只能将任何特定前缀分配给一个域。前缀分配取决于域的偏差信息和请求的前缀大小。

地址管理器在分配前缀时会尽力尝试匹配请求的前缀大小 (preferred-prefix-len)。分区可能没有任何与请求的长度匹配的前缀。例如,当地址管理器为池分配高级前缀时,它还会将其所有从属前缀分配给池。

VLSM

VLSM 从根前缀创建子网层次结构。它通过向前缀长度添加位来细分根前缀。添加到前缀长度的每个位都会创建具有以下属性的另一个从属子网级别:

  • 每个级别具有的子网数是下一个更高级别子网的两倍。

  • 每个级别每个子网的主机地址数量仅为下一个更高级别主机地址的一半。

每个根前缀及其关联的子网层次结构构成一个前缀树。因此,分区由前缀树的集合组成。地址管理器只能分配适合这些前缀树之一的前缀。

前缀可能处于以下状态之一:

  • 可用 - 前缀可用于分配给域。

  • 已分配 - 前缀已分配给域和实体。

  • 保留 — 前缀在管理上随语句保留 reserved-prefix 。APM 无法将前缀分配给与请求域不匹配的域。

VLSM 示例

图 4 显示了分区 test-1 中根前缀 192.0.2.0/24 的层次结构。您可以看到,添加到前缀长度的每个位的子网数翻了一番,从 /24 的一个子网增加到 /27 的八个子网。对于每个额外的前缀长度位,每个子网的可用地址数减半,从 /24 的 254 个地址到 /27 的 30 个地址。

注意:

图中的每个前缀块都显示了 可用的 地址:

可用地址 = 地址总数 – 2

两个排除的地址对应于最低地址(网络地址)和最高地址(组播地址)。

图 4:VLSM 子网层次结构示例 VLSM Subnet Hierarchy Example

请考虑使用此根前缀树的以下方案:

  1. 地址管理器接收首选前缀长度为 25 的分配请求。

  2. 地址管理器查找包含地址的 /25 前缀。192.0.2.0/25 匹配,如果可用,则选择。

如果 192.0.2.0/25 不可用,会发生什么情况?这意味着 192.0.2.0/24 也不可用。地址管理器查找另一个 /25 前缀。

地址管理器选择 192.0.2.128/25(如果可用)。如果该前缀不可用,则地址管理器会尝试从不同的根前缀分配 /25 前缀。

预配管理器

预配管理器由管理以下预配操作的工作进程组成:

  • 发现 — 在 APM 和 BNG 之间同步池域和关联的池信息。在发现过程结束时,APM 和 BNG 就池域列表和分配的池前缀达成一致。

    APM 行为 — APM 将其池域与 BNG 的列表进行协调,以便 APM 列表与 BNG 的列表匹配。在协调期间删除的域的池前缀会将其关联的池前缀返回到其原始分区。

    每当 APM 与托管 BNG 建立连接时,供应管理器都会执行发现,包括在连接失败后重新建立的连接。连接关闭时,管理员可以更改 BNG 上的配置。如果 APM 在后续发现过程中检测到更改,则会做出相应调整。

  • 置备 — 在托管 BNG 上置备和取消置备前缀。当地址管理器管理前缀的分配时,设置管理器与 BNG 通信以设置地址池。

恢复连接后,供应管理器会通知实体管理器 BNG 可访问。实体管理器请求供应管理器启动同步过程。

前缀回收的工作原理

BNG 上的地址回收从设备地址池中恢复未充分利用的预置前缀,并将前缀返回到 APM 的集中式池中。然后,APM 可以根据需要将这些前缀重新分配给地址即将耗尽的其他池。这意味着前缀的分布会不断调整,以最大限度地提高地址空间利用率和效率。

回收是在 BNG 具有剩余可用地址时从 BNG 的池域中回收池前缀的过程。您可以在池域配置文件配置中设置回收阈值。然后,您可以在 APM 上的实体配置中引用池域配置文件。

BNG 监视其每个池域的可用地址计数。当可用地址计数达到回收阈值时,BNG 被视为具有多余的地址。BNG 会向 APM 发送回收警报,其中包含标识建议回收池的信息。回收警报驱动自动回收过程。或者,您可以启动手动回收过程。

回收包括清空池,然后从池中恢复前缀,如下所述:

  • 当 APM 启动清空时,它会向设备发送一条消息,以开始主动清空池。这意味着不会从此池中分配任何新订阅者。对于基于连接的访问模型订阅者(例如 PPP),活动排出会触发立即注销并重新连接。对于基于租约的用户,活动耗尽会导致租约续订被拒绝。对于这两种模型,最终结果是订阅者重新连接,但从域中的另一个池分配一个地址。

  • 当池中没有使用地址的订阅者时,池将完全耗尽。该池中的所有地址都是免费的。BNG 向 APM 发送池已耗尽的警报消息。

APM 可以通过以下任一方式进行地址回收:

  • 自动 — 您可以将回收配置为在 APM 收到回收或池已耗尽警报时发生的完全自动过程。您可以将该过程指定为立即开始,或仅在特定时间窗口内进行,或者等待一段时间后再对警报采取措施。

  • 手动 - 您可以使用 show 命令显示 BNG 上各个池的警报。然后,发出 request apm 命令以从池中清空地址、取消预配已清空的池并恢复其地址。

自动回收前缀

您可以启用 APM 自动处理回收任务。您可以按照语句中的entity-match配置在分配给实体的中pool-domain-profile配置自动回收。

启用自动回收后,将执行以下操作:

  • APM 响应实体发送的域回收告警。回收警报包含要回收的建议池名称。

  • APM 通过指示实体在池中放置活动排水管来响应回收警报。当池完全耗尽(池中没有未完成的地址分配)时,实体会引发域池已耗尽警报。

  • APM 通过指示实体删除池来响应池已耗尽警报;APM 将池前缀返回到分配它的分区。

  • 一旦前缀返回到分区,其他实体就可以使用它来引发域分配警报。

自动回收允许您限制在实体上维护的未使用地址的数量。由于自动回收过程涉及可能影响主动排水的服务,因此您可以将 APM 配置为仅在配置的维护时段内启动自动回收。

释放为实体分配的前缀

如果网络实体发生故障,并且无法与 APM 重新连接以允许将任何已分配的池前缀回收到其源分区,您可以使用命令 request apm release entity system-id 。此命令解除分配与网络实体关联的所有池前缀和池域。 request apm release entity system-id 如果实体的 APMi 状态为 reachable

使用以下步骤从无法访问的实体释放前缀。

  1. 使用该 show apm entity system id 命令显示实体的可访问性状态及其池域持有的池前缀。 输出显示实体可访问,并且已分配 3 个池前缀。
  2. 当实体可访问时, request apm release entity system id 命令不成功。

  3. 输入 以查看 show apm entity 实体是否无法访问。

  4. 由于无法访问步骤 3 中的实体,因此您可以输入 request apm release entity system-id 命令开始回收。APM 取消配置池并将地址返回到源分区以进行重新分配。将释放步骤 1 中报告的所有池前缀。

手动回收地址

手动回收为您提供了细粒度控制。手动回收要求您密切监视托管 BNG 上的池域和地址池。

  1. 使用 show apm alarms 命令显示从 BNG 收到的所有待处理警报。输出显示具有警报状态的 reclaim 池的名称。

    警报意味着 reclaim 池域有多余的地址。该 Info 字段包含 BNG 建议回收的池的名称。回收警报并不意味着池具有活动的排水设置。如果池上没有排水,池仍然可以分配地址。

  2. 发出命令以 request apm drain 开始清空池。
    注意:

    您可以通过发出 request apm activate 命令来移除已启动的清空。

  3. 使用 show apm alarms 命令查看池是否已清空。报警状态显示状态 pool-drained
  4. request apm reclaim发出命令以开始回收。APM 取消配置池并将地址返回到源分区以进行重新分配。

选择手动回收时,请谨慎选择要回收的池。下面是选择要回收的池的一些注意事项。

  • 清空池时,必须在池域中的其他池中容纳使用这些地址的订阅者。其他池(域中)中必须有足够的空闲地址来吸收这些订阅者。因此,池域中的可用地址数必须大于池中已耗尽的已用地址数:

    (池域空闲地址)–(排出池空闲地址)>(使用排出池地址)

  • 清空池时,不得使池域面临耗尽可用地址的直接危险。如果域中的可用地址计数低于分配阈值,则会触发分配警报,从而导致 APM 为池预配更多地址。换句话说,尽量不要在池上启动消耗,除非以下不等式成立:

    (池域空闲地址)–(排出池总地址)>(分配阈值)

时间 戳

您可以使用命令 show apm entity 监控 APM 的回收操作。当您显示路由器或特定池域的统计信息时,命令输出会显示上次发现、上次分配和上次回收事件的时间戳。时间戳采用 ISO-8601 格式,时钟为 24 小时制:

YYYY--MMDDThh::ssmmZ

  • T 是日期和时间之间的分隔符。

  • Z 表示时间采用 UTC 时区。如果路由器时间使用不同的时区,则格式将显示与 UTC 的偏移量以标识时区。

  • UTC 以西的时区有一个负偏移量,由 –hhmm 指定。

  • UTC 以东的时区具有由 +hhmm 指定的正偏移量。

例如,以下时间戳都显示相同的时间(假设标准时间):

  • 2020–03–20T15:10:25Z(伦敦)

  • 2020–03–20T10:10:25-05:00(纽约)

  • 2020–03–20T16:10:25+01:00(巴黎)

  • 2020–03–20T23:10:25+08:00(北京)

APM 和 Kubernetes

APM 在 Kubernetes 集群环境中运行。APM 是与 Docker 一起打包的容器化应用程序。Kubernetes 是容器的编排器。它将容器分组到逻辑单元 (Pod) 中,从而简化管理。APM 命令和 CLI 简化了与 Kubernetes 的交互。

借助 Kubernetes,您可以自动重启 APM 微服务。由于 Kubernetes 将微服务部署为副本集,因此它可以确保在 Pod 发生故障时,具有微服务的 Pod 重新启动。在初始部署和重新启动时,服务 Pod 会检查配置是否已完成加载。Service Pod 还会验证它是否可以连接到数据库和消息代理。成功确认后,APM 服务将启动。

Kubernetes 为 APM 功能提供了冗余,因为它在由多台节点机器(一台主机器和多台工作线程)组成的集群中分发和管理应用程序容器:

  • 主节点控制工作线程。它为决策制定和群集管理提供了控制平面。与群集交互时,可与主节点通信。在主节点上运行一组进程,用于实现主节点功能。

  • 工作器节点执行 APM 应用程序的工作。每个工作器节点必须位于与其他工作器节点物理上分开的平台上。如果使用虚拟机 (VM) 来托管节点,则 VM 必须位于不同的物理服务器上。

    如果工作节点发生故障,则在主节点上运行的 Kubernetes 服务会检测到故障。它会将故障节点上运行的服务重新计划到群集中的其他工作器节点。

    注意:

    APM 使用的数据库服务至少需要三个物理工作节点才能为应用程序提供高可用性。

复制提供数据库冗余。主数据库实例复制到一个副本数据库实例。每个实例都是一个单独的 Pod。奇数个数据库哨兵实例监视主数据库实例和副本数据库实例。当哨兵检测到主实例失败时,大多数哨兵必须同意。然后,大多数哨兵必须选择副本实例以提升为主角色。如果以前的主实例恢复,它将承担副本实例的角色。

APM 配置的 Kubernetes 对象

APM 在启动或推出期间创建以下 Kubernetes 对象。APM 在其整个生命周期中使用这些对象。对象将在 上 apm stop移除。

  • 命名空间 - 运行 APM 的节点计算机的虚拟群集。所有 APM 对象都在 jnpr-apm 中被隔离。

  • 外部服务 — 在设置时创建对象,以获取集群的负载均衡器(入口控制器)分配的外部 IP 地址。群集外部的外部服务使用这些外部 IP 地址来启动与 APM 的通信。如果群集不支持网络负载均衡器,群集将使用主节点作为外部 IP 地址。

  • 配置映射 — 存储数据库服务器的配置文件 (redis.conf) 和 MGMT 的初始配置文件 (juniper.conf)。

  • PersistentVolumeClaims - 适用于具有动态数据存储要求的容器。此对象包括 MGMT 和数据库部署。

  • 机密 — 存储保护 APMi 所需的密钥和证书。