ADC

用例 7:使用 IP Over IP 在 DSR 模式下配置负载平衡

您可以使用 IP 通道(也称为 IP over IP 配置)将 NetScaler 设备配置为在第 3 层网络上使用直接服务器返回 (DSR) 模式。 与 DSR 模式的标准负载平衡配置一样,这允许服务器直接响应客户端,而不是使用通过 NetScaler 设备的返回路径。这可以缩短响应时间和吞吐量。与标准 DSR 模式一样,NetScaler 设备监视服务器并对应用程序端口执行运行状况检查。

使用 IP over IP 配置时,NetScaler 设备和服务器无需位于同一个第 2 层子网上。取而代之的是,NetScaler 设备在将数据包发送到目标服务器之前对其进行封装。目标服务器收到数据包后,它会解压包,然后将其响应直接发送到客户端。这通常被称为 L3DSR。

要在 NetScaler 设备上配置 L3-DSR 模式,请执行以下操作:

  • 创建负载平衡虚拟服务器。将模式设置为 IPTENDLE 并启用无会话跟踪。
  • 创建服务。为每个后端应用程序创建服务并将服务绑定到虚拟服务器。
  • 配置解封。配置 NetScaler 设备或后端服务器以充当解封装器。

    注意:

    当您使用 NetScaler 设备时,解封设置是 ADC 设备之间的 IP 通道,后端向真实服务器执行 L2DSR。

配置负载平衡虚拟服务器

配置虚拟服务器以处理对应用程序的请求。分配与服务匹配的服务类型,或者对多个服务使用 ANY 类型。 将转发方法设置为 IP通道,并使虚拟服务器能够在无会话模式下运行。配置要使用的任何负载均衡方法。

使用命令行界面创建和配置 IP DSR 的负载平衡虚拟服务器

在命令提示符处键入以下命令以为 IP over IP DSR 配置负载平衡虚拟服务器并验证配置:

add lb vserver <name> serviceType <serviceType> IPAddress <ip> Port <port> -lbMethod <method> -m <ipTunnelTag> -sessionless [ENABLED | DISABLED]

show lb vserver <name>
<!--NeedCopy-->

示例:

在以下示例中,我们选择了负载平衡方法作为 SourceIPHash 并配置了无会话负载均衡。

add lb vserver Vserver-LB-1 ANY 1.1.1.80 * -lbMethod SourceIPHash -m IPTUNNEL -sessionless ENABLED
<!--NeedCopy-->

使用 GUI 为 IP over IP DSR 创建和配置负载平衡虚拟服务器

  1. 导航到流量管理 > 负载平衡 > 虚拟服务器
  2. 创建虚拟服务器,然后将重定向模式指定为 基于 IP 通道

为 IP DSR 配置服务

创建负载均衡服务器后,为每个应用程序配置一项服务。该服务处理从 NetScaler 设备到这些应用程序的流量,并允许 NetScaler 设备监视每个应用程序的运行状况。

将服务分配为使用 USIP 模式,然后将 IPTUND 类型的监视器绑定到服务以进行基于通道的监视。

使用命令行界面创建和配置 IP DSR 服务

在命令提示符处,键入以下命令以创建服务,也可以创建监视器并将其绑定到服务:

add service <serviceName> <serverName> <serviceType> <port> -usip <usip>

add monitor <monitorName> <monitorType> -destip <ip> -iptunnel <iptunnel>

bind service <serviceName> -monitorName <monitorName>
<!--NeedCopy-->

示例:

在以下示例中,创建了 IPTUNUN 类型的监视器。

add monitor mon_DSR PING -destip 1.1.1.80 -iptunnel yes
add service svc_DSR01 2.2.2.100 ANY * -usip yes
bind service svc_DSR01 -monitorName mon_DSR
<!--NeedCopy-->

简化服务器和 ADC 设备路由的另一种方法是将 ADC 和服务器设置为使用来自同一子网的 IP。这样可以确保任何具有通道终端点目标的流量都通过通道发送。在该示例中,使用了 10.0.1.0/30。

注意:

监视器的目的是通过 IP 通道到达每台服务器的环回来确保通道处于活动状态。如果服务未启动,请验证 ADC 和服务器之间的外部 IP 路由是否良好。还要验证内部 IP 地址是否可以通过 IP 通道访问。服务器上可能需要路由,或者根据所选的实现将 PBR 添加到 ADC 中。

示例:

add ns ip 10.0.1.2 255.255.255.252 -vServer DISABLED
add netProfile netProfile_DSR -srcIP 10.0.1.2
add lb monitor mon_DSR PING -LRTM DISABLED -destIP 1.1.1.80 -ipTunnel YES -netProfile netProfile_DSR
<!--NeedCopy-->

使用 GUI 配置监视器

  1. 导航到流量管理 > 负载平衡 > 监视器
  2. 创建监视器,然后选择 IP 通道

使用 GUI 为 IP over IP DSR 创建和配置服务

  1. 导航到流量管理 > 负载平衡 > 服务
  2. 创建服务,然后在“设置”选项卡中选择“使用源 IP 地址”。

使用命令行界面将服务绑定到负载平衡虚拟服务器

在命令提示符处键入以下命令:

bind lb vserver <name> <serviceName>
<!--NeedCopy-->

示例:

bind lb vserver Vserver-LB-1 Service-DSR-1
<!--NeedCopy-->

使用 GUI 将服务绑定到负载平衡虚拟服务器

  1. 导航到流量管理 > 负载平衡 > 虚拟服务器
  2. 打开虚拟服务器,然后单击服务部分以将服务绑定到虚拟服务器。

在通道数据包的 Outer 标头中使用客户端 IP 地址

NetScaler 支持在与使用 IP 通道的直接服务器返回模式相关的通道数据包的外部标头中使用客户端源 IP 地址作为源 IP 地址。使用 IPv4 的 DSR 和具有 IPv6 通道模式的 DSR 支持此功能。要启用此功能,请为 IPv4 或 IPv6 启 用使用客户端源 IP 地址 参数。此设置将全局应用于所有使用 IP 通道的 DSR 配置。

使用 CLI 使用客户端-源 IP 地址作为源 IP 地址

在命令提示符下,键入:

  • set iptunnelparam -useclientsourceip [YES | NO]
  • show iptunnelparam

使用 GUI 使用客户端源 IP 地址作为源 IP 地址

  1. 导航到系统 > 网络
  2. 设置 选项卡中,单击 IPv4 通道全局设置
  3. 在“配置 IPv4 通道全局参数”页中,选中 使用客户端源 IP 复选框。
  4. 单击确定

使用 CLI 使用客户端源 IP 地址作为源 IP 地址

在命令提示符下,键入:

  • set ip6tunnelparam -useclientsourceip [YES | NO]
  • show ip6tunnelparam

使用 GUI 使用客户端源 IP 地址作为源 IP 地址

  1. 导航到系统 > 网络
  2. 设置 选项卡中,单击 IPv6 通道全局设置
  3. 在“配置 IPv6 通道全局参数”页中,选中“使用客户端源 IP”复选框。
  4. 单击确定

解封配置

您可以将 NetScaler 设备或后端服务器配置为解封装。

NetScaler 解封装

当使用 NetScaler 设备作为解封装时,必须在 NetScaler 设备中创建 IP 通道。有关更多详细信息,请参阅 配置 IP 通道

NetScaler 解封设置由以下两个虚拟服务器组成:

  • 第一个虚拟服务器接收封装的数据包并删除外部 IP 封装。
  • 第二个虚拟服务器在前端 ADC 上具有原始服务的 IP,并使用 MAC 转换使用绑定服务的 MAC 地址将数据包转发到后端。此设置通常称为 L2DSR。确保在此虚拟服务器上禁用 ARP。

示例设置:

下图显示了使用 ADC 设备的解封设置。

ADC 解封设置

设置所需的完整配置如下。

前端 ADC 配置:

add service svc_DSR01 2.2.2.80 ANY * -usip YES -useproxyport NO
add lb vserver vip_DSR_ENCAP ANY 1.1.1.80 * -lbMethod SOURCEIPHASH -m IPTUNNEL -sessionless ENABLED
bind lb vserver vip_DSR_ENCAP svc_DSR01
<!--NeedCopy-->

后端 ADC 配置:

add ipTunnel DSR-IPIP 1.1.1.100 255.255.255.255 *

add service svc_DSR01_01 2.2.2.101 ANY * -usip YES -useproxyport NO
add service svc_DSR01_02 2.2.2.102 ANY * -usip YES -useproxyport NO
add service svc_DSR01_03 2.2.2.103 ANY * -usip YES -useproxyport NO

add lb vserver vs_DSR_DECAP ANY 2.2.2.80 * -lbMethod SOURCEIPHASH -m IPTUNNEL -sessionless ENABLED -netProfile netProf_DSR_MBF_noIP

add ns ip 1.1.1.80 255.255.255.255 -type VIP -arp DISABLED -snmp DISABLED
add lb vserver vs_DSR_Relay ANY 1.1.1.80 * -lbMethod SOURCEIPHASH -m MAC -sessionless ENABLED

bind lb vserver vs_DSR_DECAP svc_DSR01_01
bind lb vserver vs_DSR_DECAP svc_DSR01_02
bind lb vserver vs_DSR_DECAP svc_DSR01_03

bind lb vserver vip_DSR_Relay svc_DSR01_01
bind lb vserver vip_DSR_Relay svc_DSR01_02
bind lb vserver vip_DSR_Relay svc_DSR01_03

add netProfile netProf_DSR_MBF_noIP -MBF ENABLED
add lb monitor mon_DSR_MAC PING -netProfile netProf_DSR_MBF_noIP
bind service svc_DSR01_01 -monitorName mon_DSR_MAC
bind service svc_DSR01_02 -monitorName mon_DSR_MAC
bind service svc_DSR01_03 -monitorName mon_DSR_MAC
<!--NeedCopy-->

以下示例显示了使用运行 apache2 的 Ubuntu 和红帽服务器的测试设置。这些命令在每个后端服务器上设置。

sudo ip addr add 1.1.1.80 255.255.255.255 dev lo
sudo sysctl net.ipv4.conf.all.arp_ignore=1
sudo sysctl net.ipv4.conf.all.arp_announce=2
sudo sysctl net.ipv4.conf.eth4.rp_filter=2 (The interface has the external IP with route towards the ADC)
sudo sysctl net.ipv4.conf.all.forwarding=1
sudo ip link set dev lo arp on
<!--NeedCopy-->

后端服务器解封

使用后端服务器作为解封时,后端配置因服务器操作系统类型而异。您可以按照以下步骤将后端服务器配置为解封:

  1. 为服务 IP 配置一个带 IP 的环回接口。
  2. 创建通道接口。
  3. 通过通道界面添加路径。
  4. 根据流量的需要配置接口设置。

注意:

Windows 操作系统服务器不能本地进行 IP 通道传输,因此提供了这些命令作为基于 Linux 的系统的示例。但是,第三方插件可用于 Windows 操作系统服务器,这不在本示例的范围之内。

下图显示了使用后端服务器的解封设置。

服务器解封设置

示例配置:

在此示例中,1.1.1.80 是 NetScaler 虚拟 IP (VIP) 地址,2.2.2.10-2.2.12 是后端服务器 IP 地址。VIP 地址在环回接口中配置,并通过通道接口添加路由。监视器使用服务器 IP,并使用通道端点将监视数据包通过 IP 通道通道通道。

设置所需的完整配置如下。

前端 ADC 配置:

以下配置创建了使用通道终端节点作为源的监视器。然后,通过通道发送 ping 到服务 IP 地址。

add ns ip 10.0.1.2 255.255.255.252 -vServer DISABLED
add netProfile netProfile_DSR -srcIP 10.0.1.2
add lb monitor mon_DSR PING -LRTM DISABLED -destIP 1.1.1.80 -ipTunnel YES -netProfile netProfile_DSR
<!--NeedCopy-->

以下配置为使用原始源 IP 地址的服务创建 VIP。然后,通过 IP 通道将流量转发到后端服务器。

add service svc_DSR01 2.2.2.10 ANY * -usip YES -useproxyport NO
bind service svc_DSR01 -monitorName mon_DSR

add service svc_DSR02 2.2.2.11 ANY * -usip YES -useproxyport NO
bind service svc_DSR02 -monitorName mon_DSR

add service svc_DSR03 2.2.2.12 ANY * -usip YES -useproxyport NO
bind service svc_DSR03 -monitorName mon_DSR

add lb vserver vip_DSR_ENCAP ANY 1.1.1.80 * -lbMethod SOURCEIPHASH -m IPTUNNEL -sessionless ENABLED
bind lb vserver vip_DSR_ENCAP svc_DSR01
bind lb vserver vip_DSR_ENCAP svc_DSR02
bind lb vserver vip_DSR_ENCAP svc_DSR03
<!--NeedCopy-->

每台服务器的后端服务器配置:

后端服务器需要以下命令才能接收 IPIP 数据包、删除外部封装,然后从环回响应到原始客户端 IP。这样可以确保客户端收到的数据包中的 IP 地址与原始请求中的 IP 地址匹配。

modprobe ipip
sudo ip addr add 1.1.1.80 255.255.255.255 dev lo
nmcli connection add type ip-tunnel ip-tunnel.mode ipip con-name tun0
ifname tun0 remote 198.51.100.5 local 203.0.113.10
nmcli connection modify tun0 ipv4.addresses '10.0.1.1/30'
nmcli connection up tun0
sudo sysctl net.ipv4.conf.all.arp_ignore=1
sudo sysctl net.ipv4.conf.all.arp_announce=2
sudo sysctl net.ipv4.conf.tun0.rp_filter=2
sudo sysctl net.ipv4.conf.all.forwarding=1
sudo ip link set dev lo arp off
<!--NeedCopy-->
用例 7:使用 IP Over IP 在 DSR 模式下配置负载平衡