NetScaler CPX 中的动态路由支持

Last published : Oct 06, 2026
NetScaler CPX 支持 BGP 动态路由协议。动态路由协议的主要目标是根据绑定到虚拟服务器的服务的运行状况来通告虚拟服务器的 IP 地址。它有助于上游路由器在通往拓扑分布式虚拟服务器的多个路由中选择最佳路由。
有关 NetScaler CPX 中非默认密码的信息,请参阅 配置 NetScaler CPX 文档中的 Support for using a non-default password in NetScaler CPX 部分。
在单主机网络中,客户端、服务器和 NetScaler CPX 实例作为容器部署在同一个 Docker 主机上。所有容器都通过 docker0 网桥连接。在此环境中,NetScaler CPX 实例充当在同一 Docker 主机上作为容器配置的应用程序的代理。有关 NetScaler CPX 主机网络模式部署的信息,请参阅 主机网络模式。
下图说明了单主机拓扑。
单主机拓扑
在此拓扑中,虚拟服务器使用 BGP 配置并(根据服务的运行状况)通告给上游网络或路由器。
请执行以下步骤,在采用桥接网络模式的单个 Docker 主机上配置 NetScaler CPX 上的 BGP。

在 NetScaler CPX 上使用 REST API 配置基于 BGP 的路由健康注入

  1. 使用以下命令从 NetScaler CPX 映像创建容器:
    docker run -dt --privileged=true -p 22 -p 80 -p 161 -e EULA=yes --ulimit core=-1 cpx: <tag>
    例如:
    docker run -dt --privileged=true -p 22 -p 80 -p 161 -e EULA=yes --ulimit core=-1 cpx:12.1-50.16
  2. 使用以下命令登录到容器:
    docker exec -it <container id> bash
  3. 使用以下命令启用 BGP 功能:
    cli_script.sh "enable ns feature bgp"
  4. 使用 show ns ip 命令获取 NSIP:
    cli_script.sh "show ns ip"
  5. 使用以下命令添加虚拟服务器:
    cli_script.sh "add lb  vserver <vserver_name> http <VIP> <PORT>"
  6. 添加服务并将服务绑定到虚拟服务器。
  7. 使用以下命令为 VIP 启用 hostroute:
    cli_script.sh "set ns ip <VIP> -hostroute enabled”
    从容器注销,并从主机向端口 9080 上的 NSIP 发送 BGP NITRO 命令。
  8. 配置 BGP 路由器:
    例如,如果要配置:
    router bgp 100
    Neighbour 172.17.0.2 remote-as 101
    Redistribute kernel
    将命令指定为:
    curl -u username:password http://<NSIP>:9080/nitro/v1/config/ -X POST --data 'object={"routerDynamicRouting": {"bgpRouter" : {"localAS":100, "neighbor": [{ "address": "172.17.0.2", "remoteAS": 101}], "afParams":{"addressFamily": "ipv4", "redistribute": {"protocol": "kernel"}}}}}'
  9. 使用以下 NITRO 命令将学习到的 BGP 路由安装到 PE 中:
    curl -u username:password http://<NSIP>:9080/nitro/v1/config/ --data 'object={"params":{"action":"apply"},"routerDynamicRouting": {"commandstring" : "ns route-install bgp"}}'
  10. 使用以下 NITRO 命令验证 BGP 邻接状态:
    curl -u username:password http://<NSIP>:9080/nitro/v1/config/routerDynamicRouting/bgpRouter
    示例输出:
    root@ubuntu:~# curl -u username:password http://172.17.0.3:9080/nitro/v1/config/routerDynamicRouting/bgpRouter
    { "errorcode": 0, "message": "Done", "severity": "NONE", "routerDynamicRouting":{"bgpRouter":[{ "localAS": 100, "routerId": "172.17.0.3", "afParams": [ { "addressFamily": "ipv4" }, { "addressFamily": "ipv6" } ], "neighbor": [ { "address": "172.17.0.2", "remoteAS": 101, "ASOriginationInterval": 15, "advertisementInterval": 30, "holdTimer": 90, "keepaliveTimer": 30, "state": "Connect", "singlehopBfd": false, "multihopBfd": false, "afParams": [ { "addressFamily": "ipv4", "activate": true }, { "addressFamily": "ipv6", "activate": false } ]
  11. 使用以下命令验证通过 BGP 学习到的路由是否已安装在数据包引擎中:
    cli_script.sh “show route”
  12. 使用以下命令保存配置:
    cli_script.sh “save config”
动态路由配置保存在 /nsconfig/ZebOS.conf 文件中。