在多主机网络中部署 NetScaler CPX

多主机网络中的 NetScaler CPX 实例可以在数据中心的生产部署中进行配置,以提供负载均衡功能。它还可以提供监控功能和分析数据。

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

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

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

下图说明了此拓扑。

本地化图像

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

源自 Internet 的客户端请求在 NetScaler CPX 实例上配置的 VIP 上接收,然后将请求分发到两台服务器。

您可以使用两种方法来配置此拓扑:

方法 1: 为 VIP 使用附加 IP 地址和标准端口

  1. 通过使用附加 IP 地址在 NetScaler CPX 容器上配置 VIP。
  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
<!--NeedCopy-->

通过在 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
<!--NeedCopy-->

方法 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

<!--NeedCopy-->

预置 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
<!--NeedCopy-->

注意:

如果在预置 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

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

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

下图说明了此拓扑。

本地化图片

在此示例中,NetScaler CPX 容器 (172.17.0.4) 位于客户端和物理服务器之间,充当代理。服务器 DB1 (10.102.29.105) 和 DB2 (10.102.29.110) 位于网络上的 Docker 主机之外。客户端请求源自互联网,由 NetScaler 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
<!--NeedCopy-->

然后,通过使用 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
<!--NeedCopy-->

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

在此拓扑中,NetScaler CPX 实例和数据库服务器预置在不同的 Docker 主机中,并且客户端流量源自互联网。此拓扑可用于生产部署,其中 NetScaler CPX 实例对一组基于容器的应用程序或服务器进行负载均衡。

下图说明了此拓扑。

本地化图片

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

源自互联网的客户端请求由 NetScaler CPX 实例接收,然后将请求分发到五台服务器。要启用此通信,您必须配置以下内容:

  1. 在创建 NetScaler CPX 容器时设置端口映射。在此示例中,这意味着您必须将容器上的端口 8080 转发到主机上的端口 8080。当客户端请求到达主机的端口 8080 时,它会映射到 CPX 容器的端口 8080。

  2. 将这五台服务器配置为 NetScaler CPX 实例上的服务。您必须结合使用相应的 Docker 主机 IP 地址和映射端口来设置这些服务。

  3. 在 NetScaler CPX 实例上配置一个 VIP 以接收客户端请求。此 VIP 应由 NetScaler CPX IP 地址和映射到主机端口 8080 的端口 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
<!--NeedCopy-->

通过使用 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
<!--NeedCopy-->