NetScaler CPX 中的动态路由支持

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”
    

    从容器注销并将 BGP NITRO 命令从主机发送到端口 9080 上的 NSIP。

  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 文件中。

NetScaler CPX 中的动态路由支持