地址池管理器简介
使用本指南配置和管理地址池管理器。
地址池管理器简介
瞻博网络地址池管理器 (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 并在需要时为它们配置所需的地址。
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 配置文件包含分配、回收阈值和自动回收行为等属性。BNG配置文件包含前缀大小和丢弃路由安装行为等属性。
APMi 版本 1(与 Junos OS 22.1R1 及更高版本兼容)。您可以通过运行 show apm entity 命令来检查 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 在不同场景下,当可用地址数量超过不同阈值时所采取的操作。
上的免费地址
| 时间 | 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 的一般操作:
- BNG 和 APM 使用瞻博网络定义的基于 gRPC 的 APMi 协议进行通信。Google RPC (gRPC) 是用于构建可扩展和可互操作通信协议的通用框架。初始连接时,BNG 会启动池域同步。池域同步过程同步活动的池域集。APM 将活动池域列表与 BNG 的池域列表对齐。池域同步后,BNG 会为每个池域运行池同步(发现)。APM 将每个域的池列表与 BNG 的列表对齐。如果 APM 保留了任何其他池(不在 BNG 的域池列表中),则池前缀将释放到分区。如果 APM 缺少池,APM 会尝试分配池。
-
APM 监控 BNG 发送的告警消息。
-
APM 评估告警并采取行动。例如,如果 BNG 的地址不足,BNG 会向 APM 发送分配告警。APM 从域的源分区分配请求数量的前缀,并在告警响应中返回这些前缀。BNG 会将这些池前缀添加到池域中。
图 1 显示了单个 APM 实例的各个功能组件之间关系的更详细视图。每个管理器块都显示它使用的数据库表。
的功能组件
您可以在网络中的多个不同集群上同时运行多个 APM 实例。这些 APM 实例是独立的,彼此不知情。这些实例不会共享状态或配置。
每个 APM 实例都包含以下微服务作为应用程序的功能组件:
-
实体管理器 — 编排所管理的 BNG 的池管理活动。这些活动包括处理告警以及分配和回收池前缀。
-
地址管理器 — 将中央地址池组织到分区中,并管理每个分区中配置的根前缀的分配。它将根前缀细分为更小的前缀,并根据为 BNG 配置的标准分配前缀。
-
配置管理器 — 与 BNG 接口以配置池域及其关联的地址池。配置管理器可确保域和关联的分配池前缀在 APM 和 BNG 之间保持同步。
APM 配置管理器使用 APMi 与托管 BNG 进行通信。配置管理器发送 gRPC 消息以直接配置和取消配置 BNG 上的前缀,以响应 BNG 发起的域报警。
- 管理微服务提供基于文本的配置架构和 CLI,以便您可以配置全局前缀池、托管 BNG 及其关联的池域属性。您可以使用 CLI 显示各种功能组件的统计信息和状态。输出提供有关系统负载、效率、利用率以及错误或异常情况的信息。
-
APM 操作员 — 协调多个地理位置切换(角色更改)并报告 APM 组件的运行状况。
-
数据库实例 (DB) — 提供对 APM 的每个功能组件使用的数据库表的共享访问。该数据库包括地址、BNG 和池域信息表。该数据库可为配置信息和操作状态提供持久存储。
-
数据库同步 — 跨地理位置同步相关数据库内容。
-
APM 使用一个数据库,其中包含有关实体、池域、池、前缀、分配、配置等的状态信息。两个数据库实例(一个主实例和一个备用数据库)以热备用模式部署。数据库实例由数据库哨兵服务监控,该服务检测主数据库中的故障。主数据库发生故障后,辅助数据库在还原新的备用数据库时担任主数据库的角色。
注意:除了主节点之外,冗余还需要至少三个工作节点。工作节点必须全部位于单独的物理服务器上。但是,节点可以是物理节点,也可以是虚拟机。
APM 的功能组件
APM 由每个工作负载群集上存在的微服务组成。APM 微服务既是在多地理位置部署中的每个群集上都处于活动状态的基础架构微服务,也是一次仅在一个群集上处于活动状态的核心服务。基础架构微服务由数据库微服务 (Redis)、dbSync 和 APM Operator 组成。核心微服务包括 APM 管理、地址管理器、实体管理器和配置管理器。可以使用实用程序的平滑切换命令转换工作负载群集上核心微服务的角色(活动或备份/休眠)。
CLI 和配置管理
用户界面 (MGMT) 是 Junos OS 管理流程的容器化版本。借助此接口,您可以使用与 Junos OS 相同的 CLI 结构进行配置和监控。MGMT 还提供了一个接口,使您能够远程管理 APM。
APM 执行以下任务:
-
在其他 APM 组件可以进入其运行时状态之前,将初始 APM 配置从 MGMT 服务加载到数据库中。
-
将命令和配置转换为 APM 微服务可以理解的操作和参数。
-
将初始配置和后续更改记录在数据库中以进行持久化。它会通知 APM 组件有关任何更改的信息。
-
将提交的配置更改同步到对等工作负载群集中的管理实例(仅用于多个地理位置设置)。
APM 运算符
APM 运营商微服务定期收集 APM 微服务的运行状况数据。在多地理位置环境中,APM Operator 协调每个工作负载群集上核心服务的角色(活动或备份/休眠)。APM 操作员(每个工作负载群集上都有一个)通过群集间网络和备份(带外网络)相互通信,以协调核心服务的角色,并从每个工作负载群集中继 Pod 运行状况。APM Operator 微服务由状态管理器 Pod 和控制器 Pod 组成。
DBSync
DBSync 微服务在存储在每个工作负载群集数据库中的某些持久状态的工作负载集群之间保持同步。DBSync 微服务通过群集间网络相互通信。
实体管理器
实体管理器协调影响实体状态的其他功能组件的操作。
对于管理的每个 BNG,实体管理器将跟踪以下信息:
-
BNG 地址,即托管托管池的 BNG 的传输地址。
-
正在管理的池域的列表。
池域表示 BNG 上的链接地址池。对于每个池域,实体管理器将跟踪以下信息:
-
池域名 — 用户定义的字符串,用于标识 BNG 的托管池。对于该 BNG,每个池域名必须是唯一的。这意味着池域名有效地充当密钥;它有时称为池域密钥。由实体构造的用户定义字符串。对于 BNG,字符串由与路由实例名称关联的域配置文件名称组成。对于 BNG CUPS 控制器,字符串由与订阅者组名称和路由实例名称关联的域配置文件名称组成。
-
APM 使用 -sequence-number 格式pool-domain-name来命名它创建的池。至少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 从根前缀创建子网层次结构。它通过向前缀长度添加位来细分根前缀。添加到前缀长度的每个位都会创建另一个具有以下属性的子网从属级别:
-
每个级别的子网数量是下一个更高级别的两倍。
-
每个级别每个子网的主机地址数仅为下一个更高级别的一半。
每个根前缀及其关联的子网层次结构构成一个前缀树。因此,分区由前缀树的集合组成。地址管理器只能分配适合这些前缀树之一中的某个位置的前缀。
前缀可能处于以下状态之一:
-
可用 - 前缀可用于分配给域。
-
已分配 - 前缀已分配给域和实体。
VLSM 示例
图 4 显示了分区 test-1 中根前缀 192.0.2.0/24 的层次结构。您可以看到,每添加到前缀长度一个位,子网数量就会翻倍,从 /24 的一个子网增加到 /27 的八个子网。每增加一个前缀长度位,每个子网的可用地址数就会减半,从 /24 的 254 个地址减少到 /27 的 30 个地址。
图中的每个前缀块都显示 可用 地址:
可用地址 = 地址总数 – 2两个排除的地址对应于最低地址(网络地址)和最高地址(组播地址)。
请考虑以下使用此根前缀树的方案:
-
地址管理器收到首选前缀长度为 25 的分配请求。
-
地址管理器查找包含该地址的 /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命令。此命令将解除分配与网络实体关联的所有池前缀和池域。如果实体的 APMi 状态为 reachable,则无法使用该request apm release entity system-id命令。
使用这些步骤从无法访问的实体释放前缀。
- 使用此
命令显示实体的可访问性状态及其池域持有的池前缀。输出显示实体可访问,并已分配 3 个池前缀。show apm entity system idroot@jnpr-apm-mgmt> show apm entity id yarmouth pool-domain iroh-default Entity Statistics: Entity ID: yarmouth APMi Ver : 1 Name : yarmouth Status : reachable Pool Domain Statistics: Pool Domain : iroh-default Source Partition: westford Free Addresses : 253 Pools : 3 Thresholds: Apportion : 200 Reclamation: 457 Events: Last Discovery : 2023-09-22T12:55:08Z Last Allocation : 2023-09-22T12:55:15Z Last Reclamation: - Allocations : 3 Reclamations : 0 Alarms: Apportion : 3 Reclamation : 0 Pool-drained: 0 Abatement : 0 Pool Prefix Total Addrs Used Addrs iroh-default 192.168.0.0/24 255 255 iroh-default-0000 192.168.1.0/24 255 255 iroh-default-0001 192.168.2.0/24 255 2 -
当实体可访问时,命令
request apm release entity system id不成功。root@jnpr-apm-mgmt> request apm release entity yarmouth Response error: Entity yarmouth is still connected..release request is ignored
-
输入 以
show apm entity查看实体是否无法访问。root@jnpr-apm-mgmt> show apm entity Entity ID APMi Ver Name Status Pool Domains yarmouth 1 yarmouth unreachable 1
- 由于无法访问步骤 3 中的实体,您可以输入
命令开始回收。APM 取消配置池并将地址返回到源分区进行重新分配。将释放步骤 1 中报告的所有池前缀。request apm release entity system-idroot@jnpr-apm-mgmt> request apm release entity yarmouth Released Prefix Destination Partition 192.168.0.0/24 westford 192.168.1.0/24 westford 192.168.2.0/24 westford
手动回收地址
手动回收为您提供细粒度控制。手动回收需要您密切监控托管 BNG 上的池域和地址池。
- 使用此
show apm alarms命令可显示从 BNG 接收的所有挂起告警。输出显示具有告警状态的reclaim池名称。root@jnpr-apm-mgmt> show apm alarms Entity Pool Domain Alarm Info Age 10.4.4.108 vks009-default reclaim vks009-default-0005 2:33:15 10.2.1.1 alpha-drop reclaim alpha-drop-0000 3 days, 15:20:01 10.3.23.10 feeder-default apportion - 0:0:10 152.13.5.5 azimuth-ri2 pool-drained azimuth-ri2-0007 0:0:21
告警表示
reclaim池域地址过剩。该Info字段包含 BNG 建议回收的池的名称。回收告警并不意味着池具有活动的排水集。如果池上没有清空,池仍然可以分配地址。 - 发出命令
request apm drain开始清空池。root@jnpr-apm-mgmt> request apm drain entity 10.2.1.1 pool-domain alpha-drop pool alpha-drop-0000
注意:您可以通过发出
request apm activate命令来移除已启动的清空。 - 使用该
show apm alarms命令查看池是否已清空。报警状态会显示状态pool-drained。 - 发出命令
request apm reclaim以开始回收。APM 取消配置池并将地址返回到源分区进行重新分配。root@jnpr-apm-mgmt> request apm reclaim entity 10.2.1.1 pool-domain pool alpha-drop-0000
选择手册回收时,请谨慎选择要回收的池。以下是选择要回收的池的一些注意事项。
-
清空池时,必须容纳使用池域中其他池中的这些地址的订阅者。其他池(域中)中必须有足够的可用地址来吸收这些订阅者。因此,池域中的可用地址数必须大于清空池中已用地址数:
(池域可用地址)–(清空池可用地址)>(清空池已用地址)
-
清空池时,不得使池域面临可用地址耗尽的直接危险。如果域中的可用地址计数低于分配阈值,则会触发分配告警,导致 APM 为池配置更多地址。换句话说,除非以下不等式成立,否则尽量不要在池上启动排空:
(池域空闲地址)–(清空池总地址)>(分配阈值)
时间戳
您可以使用该 show apm entity 命令监控 APM 的回收操作。当您显示路由器或特定池域的统计信息时,命令输出显示上次发现、上次分配和上次回收事件的时间戳。时间戳采用 ISO-8601 格式,采用 24 小时制:
YYYY-MM-DDThh:mm:ssZ
-
T 是日期和时间之间的分隔符。
-
Z 表示时间在 UTC 时区。如果路由器时间使用不同的时区,则格式显示与 UTC 的偏移量以标识时区。
-
UTC 以西的时区具有负偏移量,由 –hh:mm 指定。
-
UTC 以东的时区具有用 +hh:mm 指定的正偏移量。
例如,以下时间戳都显示相同的时间(假设标准时间):
-
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 是一个容器化应用程序,其中 Kubernetes 是容器的编排器。它将容器分组到逻辑单元 (Pod) 中,以简化管理。APM 实用程序和 CLI 简化了与 Kubernetes 的交互。
使用 Kubernetes,您可以自动重启 APM 微服务。由于 Kubernetes 将微服务部署为副本集,因此如果发生微服务 Pod 故障,Pod 会自动重启。
复制提供数据库冗余。主数据库实例复制到一个副本数据库实例。每个实例都是一个单独的 pod。奇数个数据库哨兵实例监视主数据库实例和副本数据库实例。当哨兵检测到主实例出现故障时,大多数哨兵必须同意。然后,大多数哨兵必须选择副本实例才能提升为主要角色。如果前一个主实例恢复,它将承担副本实例的角色。
APM 配置的 Kubernetes 对象
APM 在启动或部署期间创建以下 Kubernetes 对象。APM 在其整个生命周期中使用这些对象。这些 apm stop对象将在 上移除。
-
Namespace - 运行 APM 的节点机的虚拟群集。所有 APM 对象都在 jnpr-apm 中隔离。
-
负载均衡服务 — 在设置时创建对象,以获取由群集的负载均衡器分配的外部 IP 地址。群集外的外部服务使用这些外部 IP 地址来发起与 APM 的通信。群集必须支持 MetalLB 作为网络负载均衡器。
-
ConfigMap — 存储数据库服务器的配置文件 (redis.conf) 和管理的初始配置文件 (juniper.conf)。
-
PersistentVolumeClaims — 对于具有动态数据存储要求的容器,此对象包括 MGMT。
-
机密 — 存储保护 APMi 所需的密钥和证书。
-
CustomResources — APM 使用自定义资源 (OperatingRole) 来管理每个工作负载群集上核心微服务的角色。
自动存档 APM 配置
APM 在首次启动和推出时使用初始配置文件。配置文件可以是出厂默认配置文件,也可以是您在设置过程中提供的配置文件。此初始配置文件存储在跳转主机的群集存储库中。对配置进行更改后,当您执行 APM save-config 实用程序脚本命令时,可以更新启动和推出期间使用的初始配置文件。
使用自动存档功能,可以将 APM 设置为自动将已提交配置的副本存档到外部文件服务器。每次更改和提交配置时,APM 都会将提交的配置文件的副本传输到外部文件服务器。
您可以通过命令配置 setup 配置文件的自动存档。这与您最初设置 APM 时使用的命令相同 setup 。
如果在设置过程中最初没有配置自动存档,并且希望自动将配置更改保存到外部配置文件中,请执行以下操作:
-
运行
setup命令(有关详细信息,请参阅 地址池管理器安装指南)。在设置过程中,请配置以下内容:-
配置存档副本回滚配置 — 输入以 True 存档回滚配置文件。
-
配置存档保留源文件名 - 输入以使用True存储在管理微服务文件系统中的文件名(例如 juniper.conf.gz)复制配置文件。如果输入 False,则存档的配置文件名称将前置前缀 apm_<date-stamp>_<time-stamp>_。
-
配置存档密钥 — 在包含 SSH 私钥数据的 APM 命名空间中输入 Kubernetes 密钥的名称。
如果未提供密钥,系统将提示您输入 SSH 密钥文件:
-
配置存档 ssh-key — 输入 SSH 私钥文件的名称。
-
-
配置存档 scp URL — 输入要存档配置文件的服务器的安全复制协议 (SCP) URL。URL 的格式
scp://user-login@server-fqdn:server-port/absolute-file-path必须为 。注意:服务器端口号 (
server-port) 可选。
-
-
如果 APM 已经在运行,请运行
rollout命令来更新 管理 微服务。
将 APM 与多地理位置冗余结合使用
APM 可以设置为在多个地理位置环境中运行。多地理位置设置提高了 APM 的可用性。在这种类型的设置中,如果一个地理位置的数据中心发生全面故障,APM 可以保留其状态并恢复另一个地理位置的运营。
Kubernetes 提高了解决方案的可扩展性、运维效率和可靠性。Kubernetes 云的模块化使群集架构具有无与伦比的冗余。即使是最冗余的群集架构也容易受到自然灾害或网络攻击等可能针对特定位置或地理位置的事件的影响。多地理位置设置可以缓解这些敏感性。
图 5 展示了多地理位置设置中地理位置之间的连接性。
在多地理位置双群集部署中,每个地理位置中都存在一个 Kubernetes 群集。每个群集都充当能够调度应用程序工作负载的工作负载群集。每个工作负载群集的群集内部(叠加)网络通过使用 Submariner 通过 IPSec 隧道连接。互连工作负载群集的叠加网络支持跨地理区域的服务发现,这使应用程序能够将两个工作负载群集的通信域视为一个大型通信域。这消除了公开外部可路由地址和保护应用微服务之间连接的复杂性。
APM 以微服务对的形式部署到两个工作负载集群。一个工作负载群集上的每个微服务在另一个工作负载群集上都有一个孪生。参与状态复制或群集监控和控制的微服务部署为主动/主动对(例如,dbsync、redis 和 apm-operator 微服务)。其他微服务部署为主动/备份(休眠)对(例如,管理微服务、Addrman微服务、Entman微服务和Provman微服务)。通过将微服务部署到每个工作负载群集,可以保证保留群集资源,并且备份微服务拥有过渡到活动状态所需的一切。APM 核心服务(管理、addrman、entman 和 provman 微服务)在工作负载群集上以原子方式激活。在初始部署时,核心服务会在首选群集(在设置过程中建立)上激活。实用程序命令用于切换核心服务。在切换期间,系统会尝试将活动核心服务转换为备份(休眠)状态,然后再在其他工作负载群集上激活核心服务。
核心服务将其状态存档到本地 Redis 数据库实例。使用安全隧道,dbsync 微服务将其相关数据库状态复制到远程地理位置中的对等 dbsync 微服务。对等 dbsync 微服务更新远程地理位置中的 Redis 数据库实例。
系统配置在 APM 管理微服务 Pod 之间复制。对活动 APM 管理 Pod 上的配置所做的提交将通过 scp 复制到备份 APM 管理 Pod。
图 6 显示了多地理位置设置中的 APM。
中的 APM
如果工作负载群集发生故障,您可以运行该实用程序的切换命令来激活其他地理位置中的休眠核心服务。在任何工作负载群集故障场景中,您必须确保工作负载群集确实发生故障,并且在正在运行的工作负载群集上激活备份/休眠核心服务之前,该群集上没有任何 APM 核心服务运行。在某些情况下,核心服务在两个工作负载群集上都处于活动状态。为了缓解这些情况,为每组核心服务保留一个代号。每次核心服务从备份/休眠过渡到活动时,代号都会递增。
apm-operator 微服务协调系统中的所有切换活动,并在其本地群集上维护核心服务的代号。所有核心服务都在备份/休眠状态下初始化。apm 运营商微服务是将核心服务提升为主动角色的最终仲裁者。apm-operator 微服务使用代号来解决有关要激活哪一组核心服务的任何歧义。
考虑这样一个场景:工作负载群集发生故障(例如,数据中心断电),而您在幸存的工作负载群集上激活了核心服务。然后,一段时间后,故障数据中心将恢复供电,核心服务将重新初始化到备份/休眠状态。apm-运营商微服务对交换其代号,以确认当前活动的核心服务应保持活动状态。
APM 备份分区
作为集中式前缀资源,APM 可以为 BNG 的多个地区或数据中心获取池前缀。如果一个区域发生故障,订阅者流量将重定向到其指定的备份区域。指定备份区域的 BNG 或 BNG 用户平面以及分配的 APM 分区的用户负载都将增加。假设分区的大小适合其区域的订阅者负载,则备份订阅者的突然涌入可能会耗尽区域的分区,从而导致登录失败。您可以配置备份分区来缓解此问题。
备份分区可以与一个或多个源分区相关联。源分区是从实体角度来看的源分区。来自实体的所有分配和回收请求都是相对于源分区发出的。源分区将根据命令配置 system services subscriber-management location 在 BNG 上。在瞻博网络 BNG CUPS 中,源配置在 BNG CUPS 控制器配置中的 BNG 用户平面的节下 dynamic-address-pools 。APM 将配置了备份分区的源分区视为扩展源分区。一个源分区只能有一个备份分区。
首先在源分区中尝试前缀分配。如果源分区已耗尽并配置了备份分区,则尝试在备份分区中进行分配。备份分区中的分配遵循与源分区中的相同行为。
对于回收,APM 必须通过检查根前缀来确定回收的前缀属于哪个分区。由于 APM 必须识别正确的根前缀进行回收,因此源及其备份分区中不能有任何重叠的根前缀。通过提交检查严格实施重叠防止。
从备份分区分配前缀并且源分区不再耗尽后,从备份分区手动回收使用前缀分配的池。在清空期间从备份池中移出的订阅者将重新登录,并从源分区中带有前缀的池中分配地址。