Product Documentation

体系结构和通信流

2016 年 5 月 13 日

在 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 地址才能正常工作:

  • 管理 IP 地址(称为 NetScaler IP (NSIP) 地址)
  • 子网 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 请求如何到达目标。

本地化后的图片

在此示例中,由 eth0 接口上的数据包引擎发送 ping 请求,来源 IP 地址为 NetScaler CPX IP 地址 (172.17.0.4)。然后 Docker 主机执行网络地址转换 (NAT) 以将主机 IP 地址 (192.68.x.x) 添加为来源 IP 地址,并将请求发送至目标 (216.58.x.x)。反之,来自目标 IP 地址的响应使用相同的路径。Docker 主机对响应执行 NAT 并将响应转发至 NetScaler CPX 实例的 eth0 接口上。

源自外部网络的请求的通信流

为了能够进行外部通信,置备 NetScaler CPX 时,必须设置一些参数,以便 Docker 可以公开某些端口(例如 80、22 以及您想要的任何其他端口)。如果您在置备期间未设置要公开的任何端口,那么必须在 Docker 主机上配置 NAT 规则以使这些端口可用。

源自 Internet 的客户端请求由 Docker 主机接收,然后该主机执行端口地址转换 (PAT) 以将公用 IP 地址和端口映射至 NetScaler CPX 实例的单一 IP 地址和端口,并将流量转发至实例。

下图显示了 Docker 主机如何执行端口地址转换以将流量导向至 NetScaler CPX 单一 IP 地址和端口。

本地化后的图片

在此示例中,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 主机执行端口地址转换以将此地址和端口映射至单一 IP 地址 172.17.0.4 上的端口 22,并转发客户端请求。