在 NSX Advanced Load Balancer 中,可以将 SE 组与其后端池之间的双向虚拟服务第 2 层流量复制(克隆)到一个克隆流量服务器(或一组服务器)或给定子网。从概念上讲,该功能模仿 SPAN 端口的行为。流量克隆通常应用于入侵检测系统 (Intrusion Detection System, IDS)、入侵防御系统 (Intrusion Protection System, IPS) 和监控工具。
流量克隆功能不能与 NSX Advanced Load Balancer 的边带配置文件功能相混淆。这两个功能都将流量复制到辅助服务器或一组服务器,但在很多重要方面有所不同。有关这些功能的更多信息,请参见虚拟服务边带配置文件和 NSX Advanced Load Balancer 中的流量复制选项。
流量克隆的工作方式
下图说明了在服务器池上运行的负载均衡应用程序的常规流量传输。虚拟服务 VS-1 放置在 SE 上。如果为 VS-1 启用了流量克隆,SE-1 复制所有 SE-服务器池流量(背景色为黄色),并将该流量(背景色为浅紫色)发送到配置的 IP。该流量是完全无状态的,因此,SE 不会执行任何 TCP 握手,并且预计发送到配置的克隆流量服务器池的流量不会收到任何响应。您可以选择在 SE 上配置流量克隆配置文件以保留客户端的原始 IP 地址。
如果配置了一组克隆流量服务器,SE 将以循环方式将流量分配给这些服务器。这种分配方式与在虚拟服务的后端应用程序服务器池中选择服务器的算法无关。您可以配置 NSX Advanced Load Balancer 以保留客户端 IP,并将解密的流量发送到克隆流量服务器。
范围和使用准则
克隆流量服务器或子网必须直接连接到 SE 组的成员。确保 SE 接口连接到正确的网络上。
目前,仅 Linux 服务器云、Cisco CSP 2100、AWS、OpenStack、vCenter 写入访问和无 Orchestrator 云支持流量克隆。
以下是在 AWS 云中使用流量克隆的要点。
克隆服务器实例必须位于直接连接的网络中。
从 AWS 控制台中,为流量克隆服务器停用源和目标检查。有关更多信息,请查看《AWS CloudFormation 用户指南》中的 SourceDestCheck 一节。
更新克隆服务器 SG 以允许应用程序(池服务器)端口中来自所有 IP 地址的入站流量。
TCP 端口 80,来自 0.0.0.0/0
确保为多租户部署的同一租户配置了 VIP 和流量克隆配置文件。
不支持跨租户的配置文件或配置,因为每个租户在单独的网络命名空间中运行。
不需要进行特殊配置以提供多可用区支持。就像单个可用区一样,您可以添加克隆服务器 IP 地址和网络信息。
为了使流量克隆在 OpenStack 中正常工作,请在后端服务器所在的同一网络中创建流量克隆配置文件。
注:要捕获数据包,需要实施输入和输出安全组规则。
使用 UI 克隆流量
要克隆流量,请执行以下操作:
通过 UI 创建流量克隆配置文件
要使用 NSX Advanced Load Balancer UI 创建流量克隆配置文件,请执行以下步骤。
导航到
。单击创建并输入流量克隆名称。
单击设置云。
从设置云屏幕的云下拉菜单中选择云。
注:如果只有一个可用的云,则默认选择该云,并且设置云字段不可用。
单击设置。
如果必须在克隆目标中保留客户端 IP,请选中保留客户端 IP 复选框。
单击添加以打开克隆服务器子屏幕。
选择必须将流量克隆到的网络。
输入必须将流量克隆到的网络的子网。
注:在克隆服务器子屏幕中,只有在选定网络具有任何配置的子网时,子网下拉列表才可用。如果没有为选定的网络配置任何子网,则不会显示子网字段。
输入服务器 IP 地址。
输入克隆服务器的 MAC 地址。
单击保存以完成创建克隆服务器的过程。
单击保存以完成创建流量克隆的过程。
使用 CLI 分配流量克隆配置文件
要为虚拟服务流量启用克隆,请将流量克隆配置文件与所需的虚拟服务相关联。
在编辑模式下打开将克隆流量的虚拟服务。
导航到高级选项卡。
在其他设置下面,选择流量克隆配置文件。
保存虚拟服务。
使用 CLI 克隆流量
要克隆流量,请创建一个流量克隆配置文件,并将其分配给所需的虚拟服务。
创建流量克隆配置文件
分配流量克隆配置文件
通过 CLI 创建流量克隆配置文件
配置克隆服务器详细信息,如下所示。
[admin:controller-]: > configure trafficcloneprofile clone_profile_name [admin:controller-1]: trafficcloneprofile> clone_servers New object being created [controller]: trafficcloneprofile:clone_servers> ip_address 10.10.10.10 [admin:controller]: trafficcloneprofile:clone_servers> subnet 10.10.10.0/24 [admin:controller]: trafficcloneprofile:clone_servers> save [admin:controller]: trafficcloneprofile> save [admin:controller]:>
要选择配置该配置文件以保留客户端 IP 地址,请覆盖以前输入的 preserve_client_ip 值。
[admin: controller]: trafficcloneprofile> preserve_client_ip
要查看流量克隆配置文件,请运行以下命令。
[admin:controller]:>show trafficcloneprofile clone_profile_name
通过 CLI 分配流量克隆配置文件
要将克隆配置文件与虚拟服务相关联,请运行以下 CLI 命令。
[admin:controller]: > configure virtualservice vs_name [admin:controller]: virtualservice> traffic_clone_profile_ref clone_profile_name [admin:controller]: virtualservice> save [admin:controller]:>
要输出任何给定虚拟服务的克隆统计信息,请运行以下命令。
[admin:controller]: > show virtualservice vs_name traffic_clone_stats +-------------------------+------------------------------+ | Field | Value | +-------------------------+------------------------------+ | se_uuid | 10-10-22-224:se-005056b0bad2 | | proc_id | PROC_Aggregate | | clone_srvr_stats[1] | | | ip | 10.10.10.10 | | num_total_pkts_cloned | 10 | | num_mbuf_alloc_failed | 0 | | num_driver_failures | 0 | | num_succeeded | 10 | +-------------------------+------------------------------+ [admin:controller]: >
如果更改与任何给定虚拟服务关联的克隆配置文件的配置,将重置其统计信息。
特殊情况
无目标 IP
某些用例可能具有某种类型的网络嗅探器,以便在克隆流量接收端侦听所有网络流量。在这种情况下,在配置文件中配置的目标 IP 地址和/或 MAC 地址可能不可用。对于该用例,必须为配置文件配置克隆流量服务器的任何虚拟 IP 地址和/或 MAC 地址。不过,子网需要有效,并且 SE 具有连接到网络的接口。这是 SE 确定从中发送克隆流量的接口所必需的。由于 SE 不保留任何连接状态,并且预计不会从克隆流量服务器收到响应,因此,目标 IP/MAC 地址不需要有效。
后端上的 SSL
尽管某些用例可能需要端到端 SSL 加密,但发送到克隆流量服务器的流量始终不需要进行加密。回想一下,服务器缺少通过 SSL 直接与客户端社区进行通信所需的凭据。为此,用户必须配置两个协同工作的虚拟服务(如下图所示),以便将 VS1-A 添加为 VS1 的池服务器。
客户端流量 SSL 由 SE-1 上的 VS1 终止,并由 SE-2 上的 VS1-A 重新加密,然后再通过后端服务器进行负载均衡。接下来,可以克隆从 VS-1 到 VS1-A 的未加密流量和返回流量。必须在单独的服务引擎组上创建这些虚拟服务,以便两个虚拟服务不会放置在同一 SE 上。
该图说明了背靠背虚拟服务流量克隆配置。加密的客户端流量(颜色编码为绿色)通过前端 VIP 网络进入 VS-1。解密的数据包级流量(绿色虚线箭头)从 SE-1 向外传输到克隆流量服务器,也会传输到 SE-2。
SE-2 接收、解密和处理来自后端池的响应(以蓝色实线表示),并将其转发到 SE-1,SE-1 将其复制到克隆流量服务器。SE-1 负责加密发送到客户端的响应。