创建和部署服务图

Last published : Oct 06, 2026
您必须在 APIC 中使用 Cisco APIC 服务图模板来创建和部署 NetScaler。请确保在创建和部署服务图时使用 ADC 功能配置文件。
在 APIC 中配置图后,APIC 会根据功能定义、设备与架构的连接以及作为图部署一部分配置的实体,自动执行设备配置。APIC 还会自动执行网络配置(例如 VLAN 分配及其绑定)作为服务图创建的一部分,并且一旦您从 APIC 中删除该图,配置就会被移除。
服务图表示为应用程序的两个或多个层,并在它们之间插入适当的服务功能。服务图通过合同插入到源 EPG 和目标 EPG 之间。
要使用 APIC GUI 创建服务图,请执行以下操作:
  1. 在菜单栏上,转到 Tenants \> All Tenants。
  2. 在“工作”窗格中,双击租户名称。
  3. 在“导航”窗格中,选择 tenant\_name \> L4-L7 Services \> L4-L7 Service Graph Templates。
  4. 在“工作”窗格中,选择 Actions \> Create a L4-L7 Service Graph Template。
  5. 在“创建 L4-L7 服务图模板”对话框中,在“设备群集”部分,选择一个设备群集并执行以下操作:
    1. 在“图名称”字段中,输入服务图模板的名称。
    2. 在“图类型”字段中,选择 Create A New One。
    3. 从“设备群集”部分,将设备拖放到使用者端点组和提供者端点组之间,以创建服务节点。
      本地化图像
    4. 在 \<L4-L7device\_name 信息\> 部分中,执行以下操作:
      1. 在 ADC 字段中,选择 单臂 或 双臂,具体取决于 NetScaler 在架构中的部署方式。
      2. 在 配置文件 下拉列表中,选择设备包中提供的功能配置文件。
        本地化图像(/en-us/netscaler-application-delivery-management-software/media/hybrid_mode_register_graph2.jpg)
      3. 单击 提交。
  6. 在 导航 窗格中,单击服务图模板。屏幕将显示服务图模板的图形拓扑。
    注意
    Cisco APIC 支持连接器概念,并且这些连接器在 ADCCluster 节点中可见。连接器定义了网络流量方向和设备脚本,该脚本根据连接是外部还是内部,将分配的 VLAN 动态绑定到虚拟 IP (VIP) 或子网 IP (SNIP) 地址。VLAN 也绑定到用于入站和出站流量的特定接口。
    本地化图像(/en-us/netscaler-application-delivery-management-software/media/hybrid_mode_register_graph3.jpg)

将服务图模板应用于端点组

创建服务图模板后,您需要使用 APIC GUI 应用创建的服务图模板。
要应用服务图模板,请执行以下操作:
  1. 在菜单栏上,转到 租户 \> 所有租户。
  2. 在 工作 窗格中,双击租户名称。
  3. 在导航窗格中,选择 tenant\_name \> L4-L7 服务 \> L4-L7 服务图模板。
  4. 右键单击 template\_name,然后单击 应用 L4-L7 服务图模板。
    本地化图像
  5. 在“将 L4-L7 服务图模板应用于 EPG”对话框的“EPG 信息”部分中,填写以下字段:
    1. 在“使用者 EPG/外部网络”下拉列表中,选择使用者端点组。
    2. 在“提供者 EPG/外部网络”下拉列表中,选择提供者端点组。
    3. 在“合同信息”部分中,填写相应的字段。合同信息特定于 Cisco APIC,并作为与 EPG 关联的安全策略的一部分进行配置。
      本地化图像
    4. 单击“下一步”。
    5. 在“图模板”下拉列表中,选择您创建的服务图模板。
    6. 在“连接器”部分中,执行以下操作:
      1. 在“类型”字段中,选择“通用”。
      2. 在“BD”下拉列表中,选择网桥域。连接器详细信息是网桥域的一部分,该网桥域是 Cisco APIC 基础架构模型的一部分。
      3. 在“群集接口”下拉列表中,为所选网桥域选择相应的群集接口。
        Cisco APIC 使用选定的网桥域,根据所选服务图模板的要求,用于 NetScaler 设备和结构之间的数据路径流量。
        本地化图像
      4. 单击“下一步”。
      在参数屏幕上,在所需参数选项卡中,输入 L2-L3 特定详细信息,例如配置文件强制要求的 IP 地址。另一个关键参数是 StyleBook 名称。它可以是 NetScaler Application Delivery Management (ADM) 中提供的内置 StyleBook APIC-HTTP-LB,或者您可以提供在使用 NetScaler ADM 为应用程序创建 StyleBook中创建的 StyleBook 的名称。
      注意
      StyleBook 名称将服务图详细信息与使用 NetScaler ADM 为给定应用程序创建的 L4-L7 配置关联起来。
      本地化图像
      Cisco APIC GUI 允许您根据功能(例如,负载均衡)筛选参数。您可以在所需参数选项卡上查看和设置所有强制参数,并且可以在所有参数选项卡上查看和设置与该功能相关的所有其他参数。
      本地化图像
      注意
      默认情况下,内置的单臂配置文件要求您提供 SNIP 详细信息,例如 IP 地址和子网掩码。您可以通过单击 所有参数 并在 Cisco APIC GUI 中展开 配置网络 树来查看其他网络参数。这将列出 NetScaler 支持的所有网络参数。您可以实例化任何实体并从 Cisco APIC GUI 为列出的属性提供值。
  6. 单击完成。
    重要
    应用服务图模板后,请确保部署的图中没有故障。您可以通过单击工作窗格中的故障选项卡来查看故障。
    本地化图像
    作为服务图部署的一部分,混合模式设备包将配置详细信息从 Cisco APIC 推送到 NetScaler ADM。NetScaler ADM 内部将这些配置处理到相应的 NetScaler,并将响应返回给 APIC。成功的图部署将没有故障,并且 NetScaler 已成功与相应图的结构联网。
    APIC 支持使用 API 配置和部署图的不同方式,图部署包括对某些 APIC 特定构造(例如租户、合同、VLAN 和命名空间)的各种依赖。
    以下示例方法说明了利用 APIC API 创建和部署 L4-L7 图的一种方式,前提是 APIC 中已配置了 APIC 特定工件。
    重要
    请确保您将这些 XML 有效负载用作参考,并在将其用于您的环境之前对 XML 进行适当的更改。
    以下是使用 API 创建和部署服务图的示例:
    1. 创建 AppProfile
    2. 创建服务图详细信息
    3. 将服务图附加到合同
    以下是用于创建 AppProfile 的示例 XML 有效负载。AppProfile 包含 EPG,提供程序 EPG 包含 NetScaler 特定的实体、属性及其值。在以下示例 XML 有效负载中,创建了 NetScaler 特定的网络实体(例如 NSIP),并带有一组属性和 StyleBook 名称。
    <polUni>
        <fvTenant name="coke">
            <!-- Application Profile -->
            <fvAp dn="uni/tn-coke/ap-sap" name="sap">
                <!-- EPG 1  -->
                <fvAEPg dn="uni/tn-coke/ap-sap/epg-web" name="web">
                    <fvRsBd tnFvBDName="BD_web" />
                    <!-- --------- CONFIG PAYLOAD ---------------- -->
                    <vnsFolderInst ctrctNameOrLbl="Ctrct1" graphNameOrLbl="Graph1" nodeNameOrLbl="ADC" key="Network" name="Network">
                        <vnsFolderInst ctrctNameOrLbl="Ctrct1" graphNameOrLbl="Graph1" nodeNameOrLbl="ADC" key="nsip" name="snip1">
                            <vnsParamInst key="ipaddress" name="ip1" value="110.110.110.2"/>
                            <vnsParamInst key="netmask" name="netmask1" value="255.255.255.0"/>
                            <vnsParamInst key="type" name="tye" value="SNIP"/>
                            <vnsParamInst key="dynamicrouting" name="dynamicrouting" value="DISABLED"/>
                            <vnsParamInst key="hostroute" name="hostroute" value="DISABLED"/>
                        </vnsFolderInst>
                        <vnsFolderInst ctrctNameOrLbl="Ctrct1" graphNameOrLbl="Graph1" nodeNameOrLbl="ADC" key="nsip" name="snip2">
                            <vnsParamInst key="ipaddress" name="ip2" value="220.220.220.2"/>
                            <vnsParamInst key="netmask" name="netmask2" value="255.255.255.0"/>
                            <vnsParamInst key="type" name="tye" value="SNIP"/>
                            <vnsParamInst key="dynamicrouting" name="dynamicrouting" value="DISABLED"/>
                            <vnsParamInst key="hostroute" name="hostroute" value="DISABLED"/>
                        </vnsFolderInst>
                    </vnsFolderInst>
                    <vnsFolderInst ctrctNameOrLbl="Ctrct1" graphNameOrLbl="Graph1" nodeNameOrLbl="ADC" key="Stylebook" name="stylebook_1">
                        <vnsParamInst name="stylebookName" key="name" value="APIC-HTTP-LB"/>
                    </vnsFolderInst>
                    <vnsFolderInst ctrctNameOrLbl="Ctrct1" graphNameOrLbl="Graph1" nodeNameOrLbl="ADC" key="internal_network" name="internal_network">
                        <vnsCfgRelInst name="internal_network_key" key="internal_network_key" targetName="Network/snip1"/>
                    </vnsFolderInst>
                    <vnsFolderInst ctrctNameOrLbl="Ctrct1" graphNameOrLbl="Graph1" nodeNameOrLbl="ADC" key="external_network" name="external_network">
                        <vnsCfgRelInst name="external_network_key" key="external_network_key" targetName="Network/snip2"/>
                    </vnsFolderInst>
                    <vnsFolderInst ctrctNameOrLbl="Ctrct1" graphNameOrLbl="Graph1" nodeNameOrLbl="ADC" key="mFCngStylebook" name="mFCngStylebook_1">
                        <vnsCfgRelInst name="Stylebook_key" key="Stylebook_key" targetName="stylebook_1"/>
                    </vnsFolderInst>
                    <!-- ------- END CONFIG PAYLOAD -------------- -->
                    <fvSubnet ip="110.110.110.110/24" scope="shared"/>
                    <fvRsProv tnVzBrCPName="Ctrct1"></fvRsProv>
                    <fvRsDomAtt tDn="uni/phys-sepg" />
                    <fvRsPathAtt tDn="topology/pod-1/paths-101/pathep-[eth1/38]" encap="vlan-3703" instrImedcy="immediate"/>
                </fvAEPg>
                <!-- EPG 2 -->
                <fvAEPg dn="uni/tn-coke/ap-sap/epg-app"  name="app">
                    <fvRsCons tnVzBrCPName="Ctrct1"/>
                    <fvRsBd tnFvBDName="BD_app" />
                    <fvSubnet ip="220.220.220.220/24" scope="shared"/>
                    <fvRsPathAtt tDn="topology/pod-1/paths-101/pathep-[eth1/37]" encap="vlan-3704" instrImedcy="immediate"/>
                    <fvRsDomAtt tDn="uni/phys-sepg" />
                </fvAEPg>
            </fvAp>
        </fvTenant>
    </polUni>
    以下是用于创建服务图详细信息的示例 XML 有效负载:
    <polUni>
        <fvTenant name="coke">
            <vnsAbsGraph name = "Graph1">
                <vnsAbsTermNodeProv name = "Input1">
                    <vnsAbsTermConn name = "C1"></vnsAbsTermConn>
                </vnsAbsTermNodeProv>
                <vnsAbsNode name="ADC" funcType="GoTo">
                    <vnsAbsFuncConn name = "outside" attNotify="true">
                        <vnsRsMConnAtt tDn="uni/infra/mDev-Citrix-NetScalerMAS-1.0/mFunc-ADCFunction/mConn-external" />
                    </vnsAbsFuncConn>
                    <vnsAbsFuncConn name = "inside" attNotify="true">
                        <vnsRsMConnAtt tDn="uni/infra/mDev-Citrix-NetScalerMAS-1.0/mFunc-ADCFunction/mConn-internal" />
                    </vnsAbsFuncConn>
                    <vnsRsNodeToMFunc tDn="uni/infra/mDev-Citrix-NetScalerMAS-1.0/mFunc-ADCFunction"/>
                    <vnsRsDefaultScopeToTerm tDn="uni/tn-coke/AbsGraph-Graph1/AbsTermNodeProv-Input1/outtmnl"/>
                    <vnsRsNodeToAbsFuncProf tDn="uni/infra/mDev-Citrix-NetScalerMAS-1.0/absFuncProfContr/absFuncProfGrp-ADCOneArmServiceProfileGroup/absFuncProf-A
    DCOneArmFunctionProfile"/>
                    <vnsRsNodeToLDev tDn="uni/tn-coke/lDevVip-ADCCluster1"/>
                </vnsAbsNode>
                <vnsAbsTermNodeCon name = "Output1">
                    <vnsAbsTermConn name = "C6"></vnsAbsTermConn>
                </vnsAbsTermNodeCon>
                <vnsAbsConnection name = "CON1">
                    <vnsRsAbsConnectionConns tDn="uni/tn-coke/AbsGraph-Graph1/AbsTermNodeCon-Output1/AbsTConn" />
                    <vnsRsAbsConnectionConns tDn="uni/tn-coke/AbsGraph-Graph1/AbsNode-ADC/AbsFConn-outside" />
                </vnsAbsConnection>
                <vnsAbsConnection name = "CON2">
                    <vnsRsAbsConnectionConns tDn="uni/tn-coke/AbsGraph-Graph1/AbsNode-ADC/AbsFConn-inside" />
                    <vnsRsAbsConnectionConns tDn="uni/tn-coke/AbsGraph-Graph1/AbsTermNodeProv-Input1/AbsTConn" />
                </vnsAbsConnection>
            </vnsAbsGraph>
        </fvTenant>
    </polUni>
    以下是将服务图附加到合同的示例 XML 有效负载:
    <polUni>
        <fvTenant name="coke">
            <vzBrCP name="Ctrct1">
                <vzSubj name="http">
                    <vzRsSubjGraphAtt tnVnsAbsGraphName="Graph1"/>
                </vzSubj>
            </vzBrCP>
        </fvTenant>
    </polUni>