架构和流量流
本节介绍 NetScaler CPX 网桥模式架构和流量流。NetScaler CPX 也可以部署在主机模式下。
当您在 Docker 主机上预置 NetScaler CPX 实例时,Docker 引擎会在 CPX 实例上创建一个虚拟接口 eth0。此 eth0 接口直接连接到 docker0 网桥上的虚拟接口 (veth*)。Docker 引擎还会为网络 172.17.0.0/16 中的 NetScaler CPX 实例分配一个 IP 地址。
CPX 实例的默认网关是 docker0 网桥的 IP 地址,这意味着与 NetScaler CPX 实例的任何通信都通过 Docker 网络完成。从 docker0 网桥接收到的所有入站流量都由 NetScaler CPX 实例上的 eth0 接口接收,并由 NetScaler CPX 数据包引擎处理。
下图说明了 Docker 主机上 NetScaler CPX 实例的架构。

NetScaler CPX 上的单一 IP 地址如何工作
常规的 NetScaler MPX 或 VPX 设备至少需要三个 IP 地址才能正常运行:
- 称为 NetScaler IP (NSIP) 地址的管理 IP 地址
- 用于与服务器场通信的子网 IP (SNIP) 地址
- 用于接受客户端请求的虚拟服务器 IP (VIP) 地址
NetScaler CPX 实例使用一个单一 IP 地址,该地址用于管理和数据流量。
在预置期间,Docker 引擎仅为 NetScaler CPX 实例分配一个私有 IP 地址(单一 IP 地址)。NetScaler 实例的三个 IP 功能复用到一个 IP 地址上。此单一 IP 地址使用不同的端口号来充当 NSIP、SNIP 和 VIP。
下图说明了如何使用单一 IP 地址来执行 NSIP、SNIP 和 VIP 的功能。

源自 NetScaler CPX 实例的请求的流量流
Docker 隐式配置 IP 表和 NAT 规则,以将源自 NetScaler CPX 实例的流量导向 docker0 IP 地址。
下图说明了源自 NetScaler CPX 实例的 ping 请求如何到达目的地。
本地化图像(/en-us/cpx/media/cpx-traffic-flow-from-cpx-instance.png)
在此示例中,ping 请求由 eth0 接口上的数据包引擎发送,源 IP 地址为 NetScaler CPX IP 地址 (172.17.0.4)。然后,Docker 主机执行网络地址转换 (NAT),以将主机 IP 地址 (192.68.x.x) 添加为源 IP 地址,并将请求发送到目的地 (216.58.x.x)。来自目标 IP 地址的响应沿相同路径反向返回。Docker 主机对响应执行 NAT,并将响应转发到 eth0 接口上的 NetScaler CPX 实例。
源自外部网络的请求的流量流
为了启用外部通信,在预置 NetScaler CPX 时,您必须设置参数,以便 Docker 暴露某些端口,例如 80、22 和您想要的任何其他端口。如果在预置期间未设置任何要暴露的端口,则必须在 Docker 主机上配置 NAT 规则以使这些端口可用。
源自 Internet 的客户端请求由 Docker 主机接收,然后 Docker 主机执行端口地址转换 (PAT),以将公共 IP 地址和端口映射到 NetScaler CPX 实例的单个 IP 地址和端口,并将流量转发到该实例。
下图显示了 Docker 主机如何执行端口地址转换以将流量导向 NetScaler CPX 单个 IP 地址和端口。
本地化图像(/en-us/cpx/media/cpx-traffic-flow-from-external-network.png)
在此示例中,Docker 主机 IP 地址为 192.68.x.x,NetScaler CPX 实例的单个 IP 地址为 172.17.0.4。NetScaler CPX 实例的 SSH 端口 22 映射到 Docker 主机上的端口 1100。来自客户端的 SSH 请求在 IP 地址 192.68.x.x 的端口 1100 上接收。Docker 主机执行端口地址转换,将此地址和端口映射到端口 22 上的单个 IP 地址 172.17.0.4,并转发客户端请求。