目录

简介

先决条件

要求

使用的组件

背景信息

ASR9k nV集群基础和注意事项

以太网带外通道(EOBC)

机架间链路(IRL)

拆分节点方案

IRL关闭

EOBC关闭

裂脑

捆绑包

L2域

单宿主服务

管理访问

ASR9000拆卸程序

初始状态

维护窗口(MW)前的检查列表

步骤1:登录到ASR9000集群并验证当前配置

第二步：配置备用机箱的最低IRL阈值

第三步：关闭所有IRL并验证机箱1上的错误禁用接口

第四步：关闭所有EOBC链路并检验其状态

第五步：登录机箱1的活动RSP并删除旧配置

第六步：将机箱1引导至ROMMON模式

步骤 7.在两个RSP的ROMMON中取消设置机箱1上的Cluster变量

步骤 8将机箱1引导为独立系统并相应地对其进行配置

步骤 9恢复机箱1上的核心服务

步骤 10故障转移 — 登录机箱0的活动RSP并使所有接口进入错误禁用状态

步骤 11恢复机箱1的南侧

步骤 12登录机箱0的活动RSP并删除配置

步骤 13将机箱0引导至ROMMON

步骤 14在两个RSP的ROMMON中取消设置机箱0上的集群变量

步骤 15将机箱0作为独立系统启动，并相应地对其进行配置

步骤 16恢复机箱0上的核心服务

步骤 17恢复机箱0的南侧

附录1：单机箱配置

常规配置更改

捆绑包概述

附录2：设置集群变量而不将系统引导至ROMMON

简介

本文档介绍了ASR 9000的一些nV集群功能以及如何取消集群。

该程序已在实际环境中与思科客户进行测试，思科客户已决定采用本文档中介绍的取消注册流程。

先决条件

要求

Cisco 建议您了解以下主题：

- IOS XP

- ASR 9000平台

- nV集群功能

使用的组件

本文档中的信息基于运行IOS XR 5.x的ASR 9000平台。

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您的网络处于活动状态，请确保您了解所有命令的潜在影响。

背景信息

产品业务部(BU)宣布在ASR 9000平台上停售nV集群(EOS): Cisco nV集群的销售终止和生命周期终止通知

正如您在通告中所读到的，订购此产品的最后一天是2018年1月15日，nV cluster的最后一个支持版本是IOS-XR 5.3.x。

下表列出了要了解的里程碑：

ASR9k nV集群基础和注意事项

本部分的目的是简要更新理解本文档的后续部分所需的群集设置和概念。

以太网带外通道(EOBC)

以太网带外通道扩展了两个ASR9k机箱之间的控制平面，并且理想地包括4个互联，用于在不同机箱的路由交换处理器(RSP)之间构建网状。此设置在EOBC链路出现故障时提供额外冗余。 单向链路检测协议(UDLD)可确保双向数据转发并快速检测链路故障。所有EOBC链路的故障都会严重影响集群系统，并可能产生严重的后果，这些后果将在后续的“分割节点场景”一节中介绍。

机架间链路(IRL)

机架间链路扩展两个ASR9k机箱之间的数据平面。理想情况下，只有协议分支和协议注入数据包通过IRL，单宿主服务或网络故障期间除外。理论上，所有终端系统都采用双宿主，通过链路连接到两个ASR9K机箱。与EOBC链路类似，UDLD在IRL上运行，并监控链路的双向转发运行状况。

例如，可以定义IRL阈值，以防止拥塞的IRL在LC出现故障时丢弃数据包。如果IRL链路的数量低于为该机箱配置的阈值，则机箱的所有接口都处于错误禁用状态并关闭。这基本上会隔离受影响的机箱，并确保所有流量都流经其他机箱。

注：默认配置相当于nv edge data minimum 1 backup-rack-interfaces，这表示如果没有IRL处于转发状态，则备份指定机架控制器(DSC)被隔离。

拆分节点方案

在本小节中，您可以找到在处理ASR9k集群时可能遇到的不同故障场景：

IRL关闭

这是唯一一个在解集期间可以预期到的分割节点场景，或者当其中一个机箱低于IRL阈值并因此被隔离时。

EOBC关闭

如果EOBC链路不提供扩展控制平面，则ASR9k的两个机箱无法作为一个机箱运行。存在通过IRL链路交换的定期信标，因此每个机箱都知道另一个机箱处于运行状态。因此，其中一个机箱（通常是带Backup-DSC的机箱）会自行停止服务并重新启动。只要在IRL上接收主DSC机箱的信标，Backup-DSC机箱就会保留在引导环路中。

裂脑

在Split Brain（拆分大脑）场景中，IRL和EOBC链路已断开，每个机箱都声明自己为Primary-DSC。相邻网络设备突然发现IGP和BGP的路由器ID重复，这可能会导致网络中的严重问题。

捆绑包

许多客户使用边缘和核心端的捆绑包来简化ASR9K集群设置，并促进未来带宽的增加。由于连接到不同机箱的捆绑成员不同，这可能会导致拆包时出现问题。可以采用以下方法：

- 为连接到机箱1(Backup-DSC)的所有接口创建新捆绑包。

- 引入多机箱链路聚合(MCLAG)。

L2域

如果接入层中没有交换机可以互连两个独立机箱，则拆分集群可能会分离L2域。为了不使流量成为黑洞，您需要扩展L2域，如果您在之前的IRL上配置了L2本地连接、机箱之间的伪线(PW)，或者使用任何其他第2层虚拟专用网络(L2VPN)技术，则可以这样做。随着网桥域拓扑随分组的改变，当您选择所选L2VPN技术时，请记住可能创建的环路。

对ASR9K集群上的网桥组虚拟接口(BVI)接口的访问中的静态路由可能会转变为基于热备份路由器协议(HSRP)的解决方案，使用以前的BVI IP地址作为虚拟IP。

单宿主服务

单宿主服务在解列过程中有延长的停机时间。

管理访问

在解集过程中，两个机箱都会在很短的时间内被隔离，至少在从静态路由(BVI)转换为静态路由(HSRP)时如此，这样不会出现意外和非对称路由。

您必须先验证控制台和带外管理访问的工作方式，然后才能将自己锁定。

ASR9000拆卸程序

初始状态

假设在初始状态下，机箱0处于活动状态，而机箱1处于备用状态（为简单起见）。在现实生活中，它可能反其道而行之，甚至机箱0中的RSP1也可能处于活动状态。

维护窗口(MW)前的检查列表

- 准备新的ASR9K机箱0和机箱1配置（管理配置+配置）。

- 准备新的终端系统配置(客户边缘(CE)、防火墙(FW)、交换机等)。

- 准备新的核心系统配置(P节点、提供商边缘(PE)节点、路由反射器(RR)等)。

- 检验新配置，将其存储在设备上，并远程存储在简单文件传输协议(TFTP)服务器上。

- 定义必须在MW之前/期间/之后运行的可达性测试。

- 收集内部网关协议(IGP)、边界网关协议(BGP)、多协议标签交换(MPLS)、标签分发协议(LDP)等的控制平面输出，以供比较前/后使用。

- 向思科提交主动服务请求。

步骤1:登录到ASR9000集群并验证当前配置

1.验证主 — 备用机箱的位置。在本示例中，主机箱为0:

RP/0/RSP0/CPU0:Cluster(admin)# show dsc

---------------------------------------------------------

Node        (     Seq)     Role     Serial# State

---------------------------------------------------------

0/RSP0/CPU0 ( 1279475)   ACTIVE FOX1441GPND PRIMARY-DSC <<< Primary DSC in Ch1

0/RSP1/CPU0 ( 1223769)  STANDBY FOX1432GU2Z NON-DSC

1/RSP0/CPU0 (       0)   ACTIVE FOX1432GU2Z BACKUP-DSC

1/RSP1/CPU0 ( 1279584)  STANDBY FOX1441GPND NON-DSC

2.检验所有线卡(LC)/RSP是否处于“IOS XR RUN”状态：

RP/0/RSP0/CPU0:Cluster# sh platform

Node            Type                      State            Config State

-----------------------------------------------------------------------------

0/RSP0/CPU0     A9K-RSP440-TR(Active)     IOS XR RUN       PWR,NSHUT,MON

0/RSP1/CPU0     A9K-RSP440-TR(Standby)    IOS XR RUN       PWR,NSHUT,MON

0/0/CPU0        A9K-MOD80-SE              IOS XR RUN       PWR,NSHUT,MON

0/0/0           A9K-MPA-4X10GE            OK               PWR,NSHUT,MON

0/0/1           A9K-MPA-20X1GE            OK               PWR,NSHUT,MON

0/1/CPU0        A9K-MOD80-TR              IOS XR RUN       PWR,NSHUT,MON

0/1/0           A9K-MPA-20X1GE            OK               PWR,NSHUT,MON

0/2/CPU0        A9K-40GE-E                IOS XR RUN       PWR,NSHUT,MON

1/RSP0/CPU0     A9K-RSP440-TR(Active)     IOS XR RUN       PWR,NSHUT,MON

1/RSP1/CPU0     A9K-RSP440-SE(Standby)    IOS XR RUN       PWR,NSHUT,MON

1/1/CPU0        A9K-MOD80-SE              IOS XR RUN       PWR,NSHUT,MON

1/1/1           A9K-MPA-2X10GE            OK               PWR,NSHUT,MON

1/2/CPU0        A9K-MOD80-SE              IOS XR RUN       PWR,NSHUT,MON

1/2/0           A9K-MPA-20X1GE            OK               PWR,NSHUT,MON

1/2/1           A9K-MPA-4X10GE            OK               PWR,NSHUT,MON

第二步：配置备用机箱的最低IRL阈值

备用机箱是具有BACKUP-DSC的机箱，将首先停止服务并取消群集。在本示例中，BACKUP-DSC位于机箱1中。

使用此配置时，如果IRL数量低于配置的最小阈值（本例中为1），则指定机架（备用机架 — 本例中机箱1）上的所有接口将关闭：

RP/0/RSP0/CPU0:Cluster(admin-config)# nv edge data min 1 spec rack 1

RP/0/RSP0/CPU0:Cluster(admin-config)# commit

第三步：关闭所有IRL并验证机箱1上的错误禁用接口

1.关闭所有现有IRL。 在本示例中，您可以看到两个机箱中的手动接口关闭(主用Ten0/x/x/x和备用Ten1/x/x/x):

RP/0/RSP0/CPU0:Cluster(config)#

interface Ten0/x/x/x

shut

interface Ten0/x/x/x

shut

[…]

interface Ten1/x/x/x

shut

interface Ten1/x/x/x

shut

[…]

commit

2.检验所有配置的IRL是否已关闭：

RP/0/RSP0/CPU0:Cluster# show nv edge data forwarding location

<location>的示例是0/RSP0/CPU0。

关闭所有IRL后，必须将机箱1与数据平面完全隔离，方法是将所有外部接口移至错误禁用状态。

3.验证机箱1上的所有外部接口都处于err-disabled状态，并且所有流量都流经机箱0:

RP/0/RSP0/CPU0:Cluster# show error-disable

第四步：关闭所有EOBC链路并检验其状态

1.关闭所有RSP上的EOBC链路：

RP/0/RSP0/CPU0:Cluster(admin-config)#

nv edge control control-link disable 0 loc 0/RSP0/CPU0

nv edge control control-link disable 1 loc 0/RSP0/CPU0

nv edge control control-link disable 0 loc 1/RSP0/CPU0

nv edge control control-link disable 1 loc 1/RSP0/CPU0

nv edge control control-link disable 0 loc 0/RSP1/CPU0

nv edge control control-link disable 1 loc 0/RSP1/CPU0

nv edge control control-link disable 0 loc 1/RSP1/CPU0

nv edge control control-link disable 1 loc 1/RSP1/CPU0

commit

2.检验所有EOBC链路是否已关闭：

RP/0/RSP0/CPU0:Cluster#

show nv edge control control-link-protocols location 0/RSP0/CPU0

完成此步骤后，集群机箱在控制层面和数据层面上完全彼此隔离。机箱1的所有链路都处于err-disable状态。

注意：从现在起，必须在机箱1上通过RSP控制台完成配置，并且仅影响本地机箱！

第五步：登录机箱1的活动RSP并删除旧配置

清除机箱1上的现有配置：

RP/1/RSP0/CPU0:Cluster(config)# commit replace

RP/1/RSP0/CPU0:Cluster(admin-config)# commit replace

注意：您需要先替换运行配置的配置，然后才清除管理员运行配置。这是因为删除admin running-configuration中的IRL阈值会使“no shut”所有外部接口。这会导致路由器ID重复等问题。

第六步：将机箱1引导至ROMMON模式

1.将配置寄存器设置为引导到ROMMON:

RP/1/RSP0/CPU0:Cluster(admin)# config-register boot-mode rom-monitor location all

2.检验引导变量：

RP/1/RSP0/CPU0:Cluster(admin)# show variables boot

3.重新加载机箱1的两个RSP:

RP/1/RSP0/CPU0:Cluster# admin reload location all

在此步骤之后，通常机箱1会引导至ROMMON。

步骤 7.在两个RSP的ROMMON中取消设置机箱1上的Cluster变量

警告：现场技术人员必须删除所有EOBC链接才能继续操作。

提示：也可以设置系统集群变量。检查附录2部分：设置集群变量而不将系统引导至rommon。

1.标准程序要求将控制台电缆连接到机箱1上的活动RSP，并取消设置和同步集群ROMMON变量：

unset CLUSTER_RACK_ID

sync

2.将配置寄存器重置为0x102:

confreg 0x102

reset

活动RSP已设置。

3.将控制台电缆连接到机箱1的备用RSP。理想情况下，集群的所有4个RSP在维护时段都能够访问控制台。

注：此步骤中所述的操作需要在机箱1的两个RSP上完成。必须首先引导活动RSP。

步骤 8将机箱1引导为独立系统并相应地对其进行配置

理想情况下，新的配置或几个配置片段存储在每个ASR9k机箱上，并在解列后加载。之前必须在实验中测试正确的配置语法。如果不是，请先配置控制台和管理接口，然后再通过复制并粘贴到Virtual Teletype(VTY)或从TFTP服务器远程加载配置，完成机箱1上的配置。

注意：load config和commit命令使所有接口保持关闭，这样可以控制服务升级。 load config和commit replace，完全替换配置并启用接口。因此，建议使用load config和commit。

将连接的终端系统（FW、交换机等）和核心设备（P、PE、RR等）的配置调整为机箱1。

步骤 9恢复机箱1上的核心服务

1. 首先手动取消关闭核心接口。

2. 验证LDP、中间系统到中间系统（IS-IS或ISIS）、BGP邻接关系/对等关系。

3. 检验路由表并确保已交换所有前缀。

警告：在进入故障切换之前，请注意计时器，例如ISIS过载(OL)位、HSRP延迟、BGP更新延迟等！

步骤 10故障转移 — 登录机箱0的活动RSP并使所有接口进入错误禁用状态

注意：后续步骤会导致服务中断。机箱1南向接口仍然禁用，而机箱0被隔离

默认保持时间等于180秒（3x60秒），代表BGP收敛的最坏情况。有多种设计选项和BGP功能可以大大缩短收敛时间，例如BGP下一跳跟踪。假设核心中存在与Cisco IOS XR行为不同的第三方供应商，您最终需要在触发故障切换之前通过软件关闭机箱0和RR之间的BGP邻居或相似之处来手动加快BGP融合：

RP/0/RSP0/CPU0:Cluster(admin-config)# nv edge data minimum 1 specific rack 0

RP/0/RSP0/CPU0:Cluster(admin-config)# commit

由于所有IRL都关闭，因此必须隔离机箱0，并将所有外部接口移至错误禁用状态。

验证机箱0上的所有外部接口都处于err-disabled状态：

RP/0/RSP0/CPU0:Cluster# show error-disable

机箱1已重新配置为独立机箱，因此不能存在任何错误禁用接口。机箱1上唯一需要做的就是启用边缘上的接口。

步骤 11恢复机箱1的南侧

1. no shut all access interfaces。

暂时将互连链路（上一个IRL）保持关闭。

2.检验IGP和BGP邻接关系/对等关系/数据库。当IGP和BGP融合时，您预期会看到从远程PE ping的一些流量丢失。

步骤 12登录机箱0的活动RSP并删除配置

清除活动机箱上的现有配置：

RP/0/RSP0/CPU0:Cluster(config)# commit replace

RP/0/RSP0/CPU0:Cluster(admin-config)# commit replace

注意：您必须先替换运行配置的配置，然后才清除管理员运行配置。这是因为删除admin running-configuration中的IRL阈值不会关闭所有外部接口。这会导致路由器ID重复等问题。

步骤 13将机箱0引导至ROMMON

1.将配置寄存器设置为引导到ROMMON:

RP/0/RSP0/CPU0:Cluster(admin)# config-register boot-mode rom-monitor location all

2.检验引导变量：

RP/0/RSP0/CPU0:Cluster# admin show variables boot

3.重新加载备用机箱的两个RSP:

RP/0/RSP0/CPU0:Cluster# admin reload location all

在此步骤之后，通常机箱0会引导至ROMMON模式。

步骤 14在两个RSP的ROMMON中取消设置机箱0上的集群变量

1.将控制台电缆连接到机箱0上的活动RSP。

2.取消设置并同步集群ROMMON变量：

unset CLUSTER_RACK_ID

sync

3.将配置寄存器重置为0x102:

confreg 0x102

reset

活动RSP已设置。

4.将控制台电缆连接到机箱0上的备用RSP。

注：此步骤中所述的操作需要在机箱1的两个RSP上完成。必须首先引导活动RSP。

步骤 15将机箱0作为独立系统启动，并相应地对其进行配置

理想情况下，新的配置或几个配置片段存储在每个ASR9k机箱上，并在解列后加载。之前必须在实验中测试正确的配置语法。如果没有，请先配置控制台和管理接口，然后再通过VTY（复制和粘贴）完成机箱0上的配置或从TFTP服务器远程加载配置。

注意：load config和commit命令使所有接口保持关闭，这样可以控制服务升级。 load config和commit replace，完全替换配置并启用接口。因此，建议使用load config和commit。

将连接的终端系统（FW、交换机等）和核心设备（P、PE、RR等）的配置调整为机箱0。

步骤 16恢复机箱0上的核心服务

1. 首先手动取消关闭核心接口。

2. 检验LDP、ISIS、BGP邻接关系/对等关系。

3. 检验路由表并确保已交换所有前缀。

警告：在继续故障切换之前，请注意计时器，例如ISIS OL-Bit、HSRP延迟、BGP更新延迟等！

步骤 17恢复机箱0的南侧

1. no shut all access interfaces。

2.验证IGP和BGP邻接关系/对等关系/DB

3.确保启用机箱间链路（之前的IRL）（如果需要，适用于L2扩展等）

附录1：单机箱配置

常规配置更改

需要修改以下其中一个机箱上的路由器配置：

1. 环回接口地址。

2. 接口编号（例如Te1/x/x/x -> Te0/x/x/x）。

3. 接口描述.

4. 接口编址（拆分现有捆绑包时）。

5. 新BVI（当L2域为双宿时）。

6. L2扩展（当L2域为双宿时）。

7. HSRP，用于访问中的静态路由。

8. BGP/开放最短路径优先(OSPF)/LDP路由器ID。

9. BGP路由区分器。

10. BGP对等。

11. OSPF 网络类型.

12. 简单网络管理协议(SNMP)ID等

13. 访问控制列表(ACL)、前缀集、LLN路由协议(低功耗和有损网络)(RPL)等

14. 主机名.

捆绑包概述

确保所有捆绑包都经过审核并应用于新的双PE设置。也许您不再需要捆绑包，双宿主客户端设备(CPE)设备适合您的设置，或者您需要PE设备上的MCLAG并将捆绑包保留给CPE。

附录2：设置集群变量而不将系统引导至ROMMON

也可以选择设置群集变量。可以使用此过程提前设置群集变量：

RP/0/RSP0/CPU0:xr#run

Wed Jul  5 10:19:32.067 CEST

# cd /nvram:

# ls

cepki_key_db               classic-rommon-var         powerup_info.puf           sam_db                     spm_db

classic-public-config      license_opid.puf           redfs_ocb_force_sync       samlog                     sysmgr.log.timeout.Z

# more classic-rommon-var

PS1 = rommon ! > , IOX_ADMIN_CONFIG_FILE = , ACTIVE_FCD = 1, TFTP_TIMEOUT = 6000, TFTP_CHECKSUM = 1, TFTP_MGMT_INTF = 1, TFTP_MGMT_BLKSIZE = 1400, TURBOBOOT = , ? =

0, DEFAULT_GATEWAY = 127.1.1.0, IP_SUBNET_MASK = 255.0.0.0, IP_ADDRESS = 127.0.1.0, TFTP_SERVER = 127.1.1.0, CLUSTER_0_DISABLE = 0, CLUSTERSABLE = 0, CLUSTER_1_DISABLE

= 0, TFTP_FILE = disk0:asr9k-os-mbi-5.3.4/0x100000/mbiasr9k-rp.vm, BSS = 4097, BSI = 0, BOOT = disk0:asr9k-os-mbi-6.1.3/0x100000/mbiasr9k-rp.vm,1;, CLUSTER_NO_BOOT =

, BOOT_DEV_SEQ_CONF = , BOOT_DEV_SEQ_OPER = , CLUSTER_RACK_ID = 1, TFTP_RETRY_COUNT = 4, confreg = 0x2102

# nvram_rommonvar CLUSTER_RACK_ID 0 <<<<<<< to set CLUSTER_RACK_ID=0

# more classic-rommon-var

PS1 = rommon ! > , IOX_ADMIN_CONFIG_FILE = , ACTIVE_FCD = 1, TFTP_TIMEOUT = 6000, TFTP_CHECKSUM = 1, TFTP_MGMT_INTF = 1, TFTP_MGMT_BLKSIZE = 1400, TURBOBOOT = , ? =

0, DEFAULT_GATEWAY = 127.1.1.0, IP_SUBNET_MASK = 255.0.0.0, IP_ADDRESS = 127.0.1.0, TFTP_SERVER = 127.1.1.0, CLUSTER_0_DISABLE = 0, CLUSTERSABLE = 0, CLUSTER_1_DISABLE

= 0, TFTP_FILE = disk0:asr9k-os-mbi-5.3.4/0x100000/mbiasr9k-rp.vm, BSS = 4097, BSI = 0, BOOT = disk0:asr9k-os-mbi-6.1.3/0x100000/mbiasr9k-rp.vm,1;, CLUSTER_NO_BOOT =

, BOOT_DEV_SEQ_CONF = , BOOT_DEV_SEQ_OPER = , TFTP_RETRY_COUNT = 4, CLUSTER_RACK_ID = 0, confreg = 0x2102

#exit

RP/0/RSP0/CPU0:xr#

重新加载路由器，并将其作为独立设备启动。通过此步骤，您可以跳过以从ROMMON启动路由器。