Product Documentation

在多主机网络中部署 NetScaler CPX

2016 年 5 月 13 日

可以在数据中心的生产部署中配置多主机网络中的 NetScaler CPX 实例,在那里它提供负载平衡功能。此外它还提供监视功能和分析数据。

在多主机网络中,NetScaler CPX 实例、后端服务器和客户端部署在不同的主机上。可以在生产部署中使用多主机拓扑,在那里 NetScaler CPX 实例为一组基于容器的应用程序和服务器甚至是物理服务器执行负载平衡。

本节介绍三种多主机拓扑:

拓扑 1:NetScaler CPX 和后端服务器位于同一主机上;客户端位于不同的网络上

在此拓扑中,在同一 Docker 主机上置备 NetScaler CPX 实例和数据库服务器,但客户端流量源自网络的其他地方。此拓扑可用于生产部署中,在那里 NetScaler CPX 实例为一组基于容器的应用程序或服务器执行负载平衡。

下图说明了此拓扑。

本地化后的图片

在此示例中,在 IP 地址为 10.102.29.100 的同一 Docker 主机上置备 NetScaler CPX 实例 (172.17.0.4) 与两台服务器 DB1 (172.17.0.10) 和 DB2 (172.17.0.11)。客户端位于网络的其他地方。

源自 Internet 的客户端请求通过在 NetScaler CPX 实例上配置的 VIP 接收,之后该实例在两台服务器之间分发请求。

有两种配置此拓扑的方法:

方法 1: 将其他 IP 地址和标准端口用于 VIP

  1. 使用其他 IP 地址而不是 NetScaler CPX 地址来配置 NetScaler CPX 容器上的 VIP。这样您就可以使用容器上的标准端口 80 来接收客户端请求。
  2. 为 Docker 主机配置其他 IP 地址。
  3. 配置 NAT 规则以将 Docker 主机的其他 IP 地址上接收的所有流量转发至 VIP 的其他 IP 地址。
  4. 在 NetScaler CPX 实例上,将两台服务器配置为服务。
  5. 最后将服务绑定至 VIP。

请注意,此配置示例中,10.x.x.x 网络表示公用网络。

要配置此方案示例,请使用 NetScaler MAS 中的作业功能或使用 NITRO API 来运行以下命令:

    add service s1 172.17.0.10 HTTP 80
    add service s2 172.17.0.11 HTTP 80
    add lb vserver cpx-vip HTTP 172.17.4.100 80
    bind lb vserver cpx-vip s1
    bind lb vserver cpx-vip s2

通过在 Linux shell 提示窗口运行以下命令来为 Docker 主机配置其他公用 IP 地址并配置 NAT 规则。

    ip addr add 10.102.29.103/24 dev eth0
    iptables -t nat -A PREROUTING -p ip  -d 10.102.29.103 -j DNAT --to-destination 172.17.4.100

方法 2: 将 NetScaler CPX IP 地址用于 VIP,并配置端口映射:

  1. 在 NetScaler CPX 实例上,配置 VIP 和两个服务。将非标准端口 81 用于 VIP。
  2. 将服务绑定至 VIP。
  3. 配置 NAT 规则以将 Docker 主机的端口 50000 上接收的所有流量转发至 VIP 和端口 81。

为了配置此方案示例,请在所有三个 Docker 主机上,创建 NetScaler CPX 容器时在 Linux shell 提示窗口中运行以下命令:

    docker run -dt -p 22 -p 80 -p 161/udp -p 50000:81 --ulimit core=-1 --privileged=true cpx:6.2

置备 NetScaler CPX 实例后,使用 NetScaler MAS 中的作业功能或使用 NITRO API 来运行以下命令:

    add service s1 172.17.0.10 http 80
    add service s2 172.17.0.11 http 80
    add lb vserver cpx-vip HTTP 172.17.0.4 81
    bind lb vserver cpx-vip s1
    bind lb vserver cpx-vip s2

注意:

如果在置备 NetScaler CPX 实例过程中未配置端口映射,请通过在 Linux shell 提示窗口中运行以下命令来配置 NAT 规则:

iptables -t nat -A PREROUTING -p tcp -m addrtype –dst-type LOCAL -m tcp –dport 50000 -j DNAT –to-destination 172.17.0.4:81

拓扑 2:具有物理服务器和客户端的 NetScaler CPX

在此拓扑中,在 Docker 主机上只置备了 NetScaler CPX 实例。客户端和服务器不是基于容器的,且位于网络的其他地方。

在此环境中,您可以配置 NetScaler CPX 实例以在物理服务器之间对流量执行负载平衡。

下图说明了此拓扑。

本地化后的图片

在此示例中,NetScaler CPX 容器 (172.17.0.4) 位于客户端和物理服务器之间,充当代理。服务器 DB1 (10.102.29.105) 和 DB2 (10.102.29.110) 位于网络上 Docker 主机以外的地方。客户端请求源自 Internet 并在 NetScaler CPX 上接收,该 CPX 在两台服务器之间分发请求。

为了能够在客户端和服务器之间通过 NetScaler CPX 进行通信,必须先在创建 NetScaler CPX 容器时配置端口映射。然后在 NetScaler CPX 容器上配置两个服务以代表两台服务器。最后,使用 NetScaler CPX IP 地址和非标准的映射 HTTP 端口 8080 来配置虚拟服务器。

请注意,配置示例中,10.x.x.x 网络表示公用网络。

为了配置此方案示例,请在创建 NetScaler CPX 容器时在 Linux shell 提示窗口中运行以下命令:

    docker run -dt -p 22 -p 80 -p 161/udp -p 8080:8080 --ulimit core=-1 --privileged=true cpx:6.2

然后,使用 NetScaler MAS 中的作业功能或使用 NITRO API 来运行以下命令:

    add service s1 HTTP 10.102.29.105 80
    add service s2 HTTP 10.102.29.110 80
    add lb vserver cpx-vip HTTP 172.17.0.4 8080
    bind lb vserver cpx-vip s1
    bind lb vserver cpx-vip s2

拓扑 3:在不同的主机上置备 NetScaler CPX 和服务器

在此拓扑中,在不同的 Docker 主机上置备 NetScaler CPX 实例和数据库服务器,客户端流量源自 Internet。此拓扑可用于生产部署中,在那里 NetScaler CPX 实例为一组基于容器的应用程序或服务器执行负载平衡。

下图说明了此拓扑。

本地化后的图片

在此示例中,在 IP 地址为 10.102.29.100 的同一 Docker 主机上置备了 NetScaler CPX 实例和服务器 (DB1)。在两个不同的 Docker 主机 10.102.29.105 和 10.102.29.110 上置备了四台其他的服务器(DB2、DB3、DB4 和 DB5)。

源自 Internet 的客户端请求在 NetScaler CPX 实例上接收,之后该实例在五台服务器之间分发请求。为了实现此通信,必须进行以下配置:

  1. 创建您的 NetScaler CPX 容器时设置端口映射。在此示例中,这意味着您必须将容器上的端口 8080 转发至主机上的端口 8080。当客户端请求到达主机的端口 8080 时,它会映射到 CPX 容器的端口 8080。
  2. 在 NetScaler CPX 实例上,将五台服务器配置为服务。必须使用各个 Docker 主机 IP 地址和映射的端口组合来设置这些服务。
  3. 在 NetScaler CPX 实例上配置 VIP 以接收客户端请求。此 VIP 由映射到主机的端口 8080 的 NetScaler CPX IP 地址和端口 8080 来表示。
  4. 最后将服务绑定至 VIP。

请注意,配置示例中,10.x.x.x 网络表示公用网络。

为了配置此方案示例,请在创建 NetScaler CPX 容器时在 Linux shell 提示窗口中运行以下命令:

    docker run -dt -p 22 -p 80 -p 161/udp -p 8080:8080 --ulimit core=-1 --privileged=true cpx:6.2

使用 NetScaler MAS 中的作业功能或使用 NITRO API 来运行以下命令:

    add service s1 10.102.29.100 HTTP 8081
    add service s2 10.102.29.105 HTTP 8081
    add service s3 10.102.29.105 HTTP 8082
    add service s4 10.102.29.110 HTTP 8081
    add service s5 10.102.29.110 HTTP 8082
    add lb vserver cpx-vip HTTP 172.17.0.2 8080
    bind lb vserver cpx-vip s1
    bind lb vserver cpx-vip s2
    bind lb vserver cpx-vip s3
    bind lb vserver cpx-vip s4
    bind lb vserver cpx-vip s5