为 NetScaler CPX 配置高可用性

具有任务关键型和业务关键型应用程序的系统必须持续可用,而不会出现单点故障。具有高可用性的系统可确保应用程序的持续可用性,而不会中断为用户提供的服务。NetScaler CPX 支持两个 NetScaler 实例的高可用性部署,这可以保护服务免受计划外停机的影响,并确保出现故障时的业务连续性。配置高可用性后,您还可以升级 NetScaler CPX 软件,而不会对用户造成任何服务中断。

注意: 如果禁用内部用户帐户,则不支持 NetScaler CPX 功能的高可用性。

拓扑 1:在具有桥接网络模式的单个 Docker 主机上部署 NetScaler CPX 实例

在此拓扑中,在具有桥接网络模式的同一 Docker 主机上创建了两个 NetScaler CPX 节点。两个节点都位于同一桥接网络上,节点可直接相互访问。

下图解释了此拓扑。

拓扑 1

在此示例中,在同一 Docker 主机上创建了两个 NetScaler CPX 实例,即 CPX-1(NSIP:172.17.0.3)和 CPX-2(NSIP:172.17.0.4)。要获得高可用性支持,您必须使用另一个节点的 NSIP 在两个 NetScaler CPX 实例上配置高可用性节点。

执行以下步骤,在桥接模式下的单个 docker 主机上的 NetScaler CPX 实例上配置高可用性支持。

  1. 访问 Docker 主机并登录 NetScaler CPX 实例的 SSH 提示符。有关更多信息,请参阅使用命令行界面配置 NetScaler CPX 实例

  2. 使用以下命令在 CPX-1 实例上配置高可用性节点。

    cli_script.sh ‘add ha node 1 172.17.0.4 [-inc enabled]’
    
  3. 使用以下命令在 CPX-2 实例上配置高可用性节点。

    cli_script.sh ‘add ha node 1 172.17.0.3 [-inc enabled]’
    

注意: 重新启动处于桥接网络模式的 NetScaler CPX 节点时,分配给 NetScaler CPX 的 IP 地址可能会根据主机上的 Docker 版本而变化。如果在重新启动 NetScaler CPX 后任一节点的 NSIP 发生变化,则即使保存了配置,现有的高可用性配置也将不起作用。在这种情况下,您必须再次在 NetScaler CPX 节点上配置高可用性。

拓扑 2:在具有桥接网络模式的不同 Docker 主机上部署 NetScaler CPX

在此拓扑中,两个 NetScaler CPX 实例以桥接模式部署在两个可以相互访问的不同 Docker 主机上。在此部署中,NetScaler CPX 必须知道主机的 IP 地址。HOST 环境变量可以在配置 NetScaler CPX 时使用,让 NetScaler CPX 知道主机的 IP 地址。

您必须为 NetScaler CPX 节点设置端口映射。在创建 NetScaler CPX 节点时,您可以使用 docker run 命令的 -p 选项来启用所需端口的端口映射。

必须映射以下端口:

  • UDP 3003
  • TCP 3008
  • TCP 8873

下图说明了在两个不同的 Docker 主机上以桥接模式部署两个 NetScaler CPX 实例的拓扑。

拓扑 2

在此图中,蓝色直线表示两台主机之间的 CPX-HA 流量的流。

注意: 在 Docker 主机上,只有一个 NetScaler CPX 可以形成高可用性对。同一主机上的任何其他 NetScaler CPX 都无法与另一台主机上的另一个 NetScaler CPX 形成高可用性对。

执行以下步骤,在不同的 docker 主机上以桥接模式部署 NetScaler 实例,并使用示例拓扑配置高可用性支持。

在此示例中,host1 IP 地址配置为 10.10.10.10/24, host2 IP 地址配置为 10.10.10.20/24

  1. 使用以下命令在 host1 上部署具有所需端口映射的 NetScaler CPX。

    Docker run -dt --privileged=true -e EULA=yes --ulimit core=-1 -p 8873:8873 -p 3003:3003/udp -p 3008:3008 -e Host=10.10.10.10 cpx:latest
    
  2. 使用带有主机 2 的 IP 地址的相同命令在 host2 上部署 NetScaler CPX。

    docker run -dt --privileged=true -e EULA=yes --ulimit core=-1 -p 8873:8873 -p 3003:3003/udp -p 3008:3008 -e HOST=10.10.10.20 cpx:latest
    
  3. 使用以下命令在 CPX-1 实例上配置高可用性节点。

    cli_script.sh  ‘add ha node 1 10.10.10.20 -inc enabled’
    
  4. 使用以下命令在 CPX-2 实例上配置高可用性节点。

    cli_script.sh ‘add ha node 1 10.10.10.10 -inc enabled’
    

注意: 在此部署中,必须使用高可用性节点的主机 IP 地址,而非高可用性节点的 NSIP 地址。

拓扑 3:在没有专用接口的主机网络模式下在不同的 Docker 主机上部署 NetScaler CPX

在此拓扑中,两个 NetScaler CPX 实例以主机模式部署在两个不同的 Docker 主机上,没有专用接口。主机必须可以相互访问。 在此部署中,NetScaler CPX 必须知道主机的 IP 地址。在配置 NetScaler CPX 期间,您可以使用 HOST 环境变量让它知道主机的 IP 地址。

您必须为 NetScaler CPX 节点设置端口映射。在创建 NetScaler CPX 节点时,您可以使用 docker run 命令的 -p 选项来启用所需端口的端口映射。

下图解释了拓扑结构。

拓扑 3

在此图中,蓝色直线表示两台主机之间的 CPX-HA 流量的流。

注意: 在 Docker 主机上,您只能部署一个主机模式 NetScaler CPX。

执行以下步骤部署 NetScaler CPX 实例并使用示例拓扑配置高可用性支持。

  1. 使用所需的端口映射部署 NetScaler CPX,并使用以下命令在 host1 上部署。

    docker run -dt --privileged=true -e EULA=yes --ulimit core=-1 --net=host -e NS_NETMODE=HOST -e HOST=10.10.10.10 cpx:latest
    
  2. 使用以下命令在主机 2 上部署 NetScaler CPX,IP 地址为 host2。

    docker run -dt --privileged=true -e EULA=yes --ulimit core=-1
    --net=host -e NS_NETMODE=HOST -e HOST=10.10.10.20 cpx:latest
    
  3. 使用以下命令在 CPX-1 实例上配置高可用性节点。

    cli_script.sh  ‘add ha node 1 10.10.10.20 -inc enabled
    
  4. 使用以下命令在 CPX-2 实例上配置高可用性节点。

    cli_script.sh ‘add ha node 1 10.10.10.10 -inc enabled’
    

拓扑 4:使用主机网络模式和专用接口在不同的 Docker 主机上部署 CPX

在此拓扑中,两个 NetScaler CPX 实例以主机联网模式部署在不同的 Docker 主机上。主机必须有多个接口。您可以使用 CPX_NW_DEV 环境变量为 NetScaler CPX 指定专用接口。

有关使用 CPX_NW_DEV 环境变量为 NetScaler CPX 分配专用网络接口的更多信息,请参阅使用 docker run 命令部署 NetScaler CPX 实例

部署在不同 Docker 主机上的 NetScaler CPX 必须能够通过专用接口在此数据网络上相互访问。

此配置允许高可用性节点通过直接在端口 3003、3008 和 8873 上进行通信来交换检测信号消息和同步配置文件。主机上不需要 NAT 规则。在主机模式下创建的 NetScaler CPX 的默认 NSIP 在两个节点上是相同的。因此,还必须指定 NS_IPNS_GATEWAY 信息。

在此示例中,在两台不同的主机上创建了两个主机模式 NetScaler CPX。NetScaler CPX 实例在两台主机上拥有 eth1 接口,并且 eth1 接口连接到同一个网络。

下图解释了拓扑结构。在此图中,蓝色箭头表示连接到 eth1 接口的网络上的 CPX-HA 流量的流。

拓扑 4

注意: 在 Docker 主机上,您只能部署一个主机模式 NetScaler CPX。

执行以下步骤部署 NetScaler CPX 实例并使用示例拓扑配置高可用性支持。

  1. 使用以下命令在 host1 上以主机模式部署 NetScaler CPX。

    docker run -dt --privileged=true --net=host -e NS_NETMODE="HOST" -e CPX_NW_DEV=eth1 -e NS_IP='12.12.12.2' -e NS_GATEWAY='12.12.12.9' -e EULA=yes --ulimit core=-1 cpx:latest
    
  2. 使用以下命令在主机模式下在 host2 上部署 NetScaler CPX。

    docker run -dt --privileged=true --net=host -e NS_NETMODE="HOST" -e CPX_NW_DEV=eth1 -e NS_IP='12.12.12.3' -e NS_GATEWAY='12.12.12.10' -e EULA=yes --ulimit core=-1 cpx:latest
    

    注意: 必须为两个 NetScaler CPX 节点配置静态路由,才能到达另一个 NetScaler CPX 节点以交换心跳消息和同步配置文件。

  3. 使用以下命令在 CPX-1 实例上配置高可用性节点。

    cli_script.sh  ‘add ha node 1 12.12.12.3 [-inc enabled]’
    
  4. 使用以下命令在 CPX-2 实例上配置高可用性节点。

    cli_script.sh ‘add high availability node 1 12.12.12.2 [-inc enabled]’