简介
本文档介绍从Cisco Nexus Dashboard Orchestrator (NDO)取消关联站点并在APIC中进行本地管理的步骤。
背景
目标是同时消除ND和NDO。
当客户正在寻求停用站点并希望将最初拉伸的配置(如本地配置)保留在继续运行的站点中时,此过程非常有用。
警告:请注意,本文档概述了从Cisco Nexus Dashboard Orchestrator (NDO)取消关联站点并在APIC中维护本地管理的步骤。如果不正确理解和慎重实施本程序,可能会导致潜在风险或并发症。在对网络配置进行任何更改之前,建议您小心行事,并寻求专家指导。
缩写:
APIC:应用策略基础设施控制器
ND:Nexus控制面板
NDO:Nexus控制面板
VRF:虚拟路由和转发
BD:桥接域
EPG:终端组
AP:应用配置文件
目标
此过程的目的是完全取消链接从NDO管理的对象,并分别从每个交换矩阵上的每个APIC集群管理这些对象。
拓扑
出于演示目的,部署此拓扑:
建议的拓扑
在NDO中,部署如下所示:
- 租户级别:名为Tenant1的租户是从NDO创建的,并且与两个站点(名为Site1和Site2)相关联:
验证与2个站点的租户关联
它与3个模板相关联:
验证与租户的模板关联
验证Extended_Schema中包含的模板
- Extended_Site1_Site2是拉伸模板,其中定义了拉伸的VRF(称为VRF1),并与两个站点相关联:
验证模板Stretched_Site1_Site2在2个站点中展开
- 在仅与Site1关联的名为Site1的模板中,定义了本地BD_Site1,并将其与拉伸的VRF1相关联;此外,AP_Site1和EPG_Site1在此模板中进行了本地定义:
验证模板Site1是否位于单个站点
验证本地BD的VRF是否为拉伸的VRF
- 在仅与Site2关联的名为Site2的模板中,定义本地BD_Site2,并将其与拉伸的VRF1相关联;此外,AP_Site2和EPG_Site2在此模板中本地定义:
验证要确认的模板站点2是本地站点
验证本地BD的VRF是否为拉伸的VRF
要确认对象已正确部署,请执行以下操作:
Tenant1由NDO以及VRF、AP、BD和EPG部署和管理:
在GUI中进行扩展验证
也可以确认所有MIT对象的注释均设置为“orchestrator:msc”,即从NDO管理:
租户:
{
"totalCount": "1",
"imdata":
[
{
"fvTenant":
{
"attributes":
{
"annotation": "orchestrator:msc",
"descr": "",
"dn": "uni/tn-Tenant1",
"name": "Tenant1",
"nameAlias": "",
"ownerKey": "",
"ownerTag": "",
"userdom": ":all:"
}
}
}
]
}
VRF:
"fvCtx":
{
"attributes":
{
"annotation": "orchestrator:msc-shadow:no",
"bdEnforcedEnable": "no",
"descr": "",
"ipDataPlaneLearning": "enabled",
"knwMcastAct": "permit",
"name": "VRF1",
"nameAlias": "",
"ownerKey": "",
"ownerTag": "",
"pcEnfDir": "ingress",
"pcEnfPref": "enforced",
"userdom": ":all:",
"vrfIndex": "0"
},
"children":
[
{
"fvSiteAssociated":
{
"attributes":
{
"annotation": "",
"descr": "",
"name": "",
"nameAlias": "",
"ownerKey": "",
"ownerTag": "",
"siteId": "1",
"userdom": ":all:"
},
"children":
[
{
"fvRemoteId":
{
"attributes":
{
"annotation": "",
"descr": "",
"name": "2",
"nameAlias": "",
"ownerKey": "",
"ownerTag": "",
"remoteCtxPcTag": "32770",
"remotePcTag": "2686983",
"siteId": "2",
"userdom": ":all:"
}
}
}
]
}
},
]
}
对于VRF,可以看到除“orchestrator:msc”注释外,还会看到一些子属性。
为了更好地理解这些子对象,请务必注意,在NDO中,除了站点名称外,还有一个唯一的站点ID与NDO中的每个站点相关联。要查询ID,请在NDO中导航到Operate > Sites:
验证NDO中每个站点的SiteID
解释此信息后,子对象为:
- fvSiteAssociated:显示本地站点的站点ID。
- fvRemoteID:对象也拉伸到的远程站点ID。此对象对于了解对象在站点间的转换也很有用;对于此VRF,可以看到段和ClassID(对应于站点2)。要进行确认,可以从站点2进行比较:
验证远程对象的Segment和ClassID
可以看到,来自站点2的网段和类ID包含在站点1中VRF对象内部的fvRemoteID中。
BD:
"fvBD": { "attributes": { "OptimizeWanBandwidth": "yes", "annotation": "orchestrator:msc-shadow:no", "name": "BD_Site1", ... }, "children": [ ... { "fvSiteAssociated": { "attributes": { "annotation": "", "descr": "", "name": "msc-local", "nameAlias": "", "ownerKey": "", "ownerTag": "", "siteId": "1", "userdom": ":all:" } } }, ] }
AP和EPG:
"fvAp": { "attributes": { "annotation": "orchestrator:msc-shadow:no", "descr": "", "name": "APP_Site1", "nameAlias": "", "ownerKey": "", "ownerTag": "", "prio": "unspecified", "userdom": ":all:" }, "children": [ { "fvAEPg": { "attributes": { "annotation": "orchestrator:msc-shadow:no", "descr": "", "exceptionTag": "", "floodOnEncap": "disabled", "fwdCtrl": "", "hasMcastSource": "no", "isAttrBasedEPg": "no", "matchT": "None", "name": "EPG_Site1", "nameAlias": "", "pcEnfPref": "unenforced", "prefGrMemb": "exclude", "prio": "unspecified", "shutdown": "no", "userdom": ":all:" }, "children": [ { "fvSiteAssociated": { "attributes": { "annotation": "", "descr": "", "name": "msc-local", "nameAlias": "", "ownerKey": "", "ownerTag": "", "siteId": "1", "userdom": ":all:" } } }, ] } } ] }
在BD、AP和EPG对象中,没有fvRemoteId子对象,因为这些对象具有本地意义且未进行延伸。
站点2的输出非常相似,只是更改了相应的远程对象,因此忽略了此信息。
取消关联站点
建议在执行此操作步骤之前,在NDO中备份并在APIC中拍摄快照,以防以后需要回滚此备份。
步骤1:取消关联模板中的站点
此步骤需要在每个模板上运行。与循环依存关系背后的逻辑类似,首先需要从对其他模板具有依存关系的模板开始,最后,断开没有任何交叉引用的模板的关联。
在本文档中所用的拓扑中,要取消关联的最后一个模板必须是Extended_Site1_Site2,这是因为模板Site1和Site2具有对该模板的引用。
导航到架构内的模板,点击Actions,然后导航到Disassociate Site:
如何取消关联模板
在下一个窗口中,从下拉菜单按站点进行选择,因为取消关联将逐个完成(如果模板具有2个以上的站点):
选择要从何处取消关联模板的站点
然后单击Disassociate。
完成以下操作后,将显示一条包含确认的消息:
确认消息
第二步:确认每个APIC上的对象未由NDO管理
要确认对象仍存在于APIC中,现在使用不同的属性:
在APIC中(站点1中的示例):
GUI验证配置仍然存在。
对象不再在其旁边显示云NDO图标,只有租户仍由NDO管理。
在JSON中:
"fvTenant": { "attributes": { "annotation": "orchestrator:msc", "descr": "", "dn": "uni/tn-Tenant1", "name": "Tenant1", "nameAlias": "", "ownerKey": "", "ownerTag": "", "userdom": ":all:" }, "children": [ { "fvCtx": { "attributes": { "annotation": "", "bdEnforcedEnable": "no", "descr": "", "ipDataPlaneLearning": "enabled", "knwMcastAct": "permit", "name": "VRF1", "nameAlias": "", "ownerKey": "", "ownerTag": "", "pcEnfDir": "ingress", "pcEnfPref": "enforced", "userdom": ":all:", "vrfIndex": "0" }, "fvBD": { "attributes": { "OptimizeWanBandwidth": "yes", "annotation": "", "arpFlood": "yes", "descr": "", "epClear": "no", "epMoveDetectMode": "", "hostBasedRouting": "no", "intersiteBumTrafficAllow": "yes", "intersiteL2Stretch": "yes", "ipLearning": "yes", "ipv6McastAllow": "no", "limitIpLearnToSubnets": "yes", "llAddr": "::", "mac": "00:22:BD:F8:19:FF", "mcastARPDrop": "yes", "mcastAllow": "no", "multiDstPktAct": "bd-flood", "name": "BD_Site1", "nameAlias": "", "ownerKey": "", "ownerTag": "", "type": "regular", "unicastRoute": "yes", "unkMacUcastAct": "proxy", "unkMcastAct": "flood", "userdom": ":all:", "v6unkMcastAct": "flood", "vmac": "not-applicable" } ... "fvAp": { "attributes": { "annotation": "", "descr": "", "name": "APP_Site1", "nameAlias": "", "ownerKey": "", "ownerTag": "", "prio": "unspecified", "userdom": ":all:" }, "children": [ { "fvAEPg": { "attributes": { "annotation": "", "descr": "", "exceptionTag": "", "floodOnEncap": "disabled", "fwdCtrl": "", "hasMcastSource": "no", "isAttrBasedEPg": "no", "matchT": "None", "name": "EPG_Site1", "nameAlias": "", "pcEnfPref": "unenforced", "prefGrMemb": "exclude", "prio": "unspecified", "shutdown": "no", "userdom": ":all:" }, } } ] } } ] }
从APIC中可以看到,唯一仍具有批注的对象是租户对象,但是BD、VRF、AP和EPG对象现在已将批注属性留空。这确认对象未从APIC中删除,它们现在由每个APIC管理。
第三步:删除空模板
现在,所有模板都为空且未与任何站点关联:
验证处于未关联状态的模板
可以安全地删除这些模板。要移除它们,请单击Actions并选择Delete Template,如图所示:
删除模板
架构清空后,保存更改:
保存对空架构的更改
第四步:删除空架构
是时候删除空架构了。导航到Configure > Tenant Templates(如图所示):
移至租户菜单的步骤
然后单击方案旁边的3个点,然后单击Delete(如图所示):
删除与模板关联的空架构
第五步:取消站点与租户的关联
一旦没有其他架构,租户必须显示其不再与任何模板相关联。要进行确认,请导航到Operate > Tenants:
取消站点与租户的关联
确认租户没有关联的模板
可以看到,与Tenant1关联的模板数量为0。单击三个点,然后选择Edit:
编辑租户属性以删除站点
现在,需要取消选择站点。点击站点表顶部的Unselect items:
取消选择与租户关联的站点
确认之前请确保取消选中删除租户的选项:
确认操作而不检查
取消选中这两个站点后,保存更改。完成此操作后,请确认每个APIC中的租户都保留在那里:
IGUI验证,表明租户仍然配置,但未从NDO进行管理
正如预期的那样,现在批注为空:
"fvTenant": { "attributes": { "annotation": "", "descr": "", "dn": "uni/tn-Tenant1", "name": "Tenant1", "nameAlias": "", "ownerKey": "", "ownerTag": "", "userdom": ":all:" } }
第六步:删除NDO中的空租户
是时候删除租户了。要执行此操作,请导航到Operate > Tenants,点击3个点,点击Delete,如图所示:
删除空租户
确认并验证租户对象是否保留在APIC中。
步骤 7.删除ND中的NDO应用程序
要删除NDO,需要先禁用该应用。
在ND中,导航到Admin Console > Services。NDO应用将显示在此处。点击以下3个点并选择Disable:
禁用NDO应用程序
完全禁用可能需要几分钟时间。
然后,再次单击3点,这一次单击选项 Delete .
步骤 8删除ND中的NDO应用
最后,从ND中删除站点。为了能够删除站点,它们不能占用任何服务,因此,如果安装了任何其他应用程序,也需要将其删除:
验证站点不使用NDO服务
要删除它,请点击3个点,然后选择Remove Site 如图所示:
删除ND中的站点
一旦站点完全删除,每个交换矩阵现在都是独立的,并且还可以淘汰下一代。
注意:站点独立后,infra租户中站点间的L3out仍然存在。可以手动删除,确保仅用于站点间连接。