Citrix ADC

用例3:在直接服务器返回模式下配置负载均衡

直接服务器返回(DSR)模式下的负载平衡允许服务器使用不流经Citrix ADC设备的返回路径直接响应客户机。但是,在DSR模式下,设备可以继续对服务执行运行状况检查。在高数据量环境中,以DSR模式将服务器流量直接发送到客户机会增加设备的总体数据包处理能力,因为数据包不流经设备。

DSR模式具有以下特点和局限性:

  • 它支持单臂模式和内联模式。
  • 设备根据空闲超时对会话进行老化。
  • 因为设备不代理TCP连接(也就是说,它不向客户机发送SYN- ack),所以它不能阻止SYN攻击。通过配置SYN包速率过滤器,可以控制SYN报文到达服务器的速率。为了控制syn的速率,可以设置syn的速率阈值。为了防止SYN攻击,您必须将设备配置为代理TCP连接。但是,这需要反向通信流过设备。
  • 在DSR配置中,Citrix ADC设备不会用目标服务器的IP地址替换负载平衡虚拟服务器的IP地址。相反,它通过使用服务器的MAC地址将数据包转发给服务。服务器端必须配置VIP,服务器端配置的VIP必须去使能ARP。这样做可以防止客户端请求在设备配置为单臂模式时绕过设备。例如,用户必须在loopback接口下配置VIP,并关闭该VIP的ARP。
  • 设备从绑定到服务的监视器获取服务器的MAC地址。但是,使用存储在Citrix ADC设备上的脚本的自定义用户监视器(类型为user的监视器)不了解服务器的MAC地址。如果在DSR配置中只使用自定义监视器,则对于虚拟服务器接收到的每个请求,设备将尝试将目标IP地址解析为MAC地址(通过发送ARP请求)。因为目的IP地址是Citrix ADC设备拥有的虚拟IP地址,所以ARP请求总是解析为Citrix ADC接口的MAC地址。因此,虚拟服务器接收到的所有流量都将环路回设备。如果在DSR配置中使用用户监视器,则还必须为服务配置另一个不同类型的监视器(例如,PING监视器),理想情况下,探测之间的间隔较长,以便可以了解服务器的MAC地址。
  • Citrix ADC设备从绑定到服务的监视器中学习服务器L2参数。对于UDP-ECV监视器,配置一个接收字符串,使设备能够学习服务器的L2参数。如果未配置接收字符串并且服务器没有响应,则设备不会学习L2参数,但服务将被设置为UP。这项服务的流量被堵塞了。

在示例场景中,创建了服务Service-ANY-1、Service-ANY-2和Service-ANY-3,并将它们绑定到虚拟服务器Vserver-LB-1上。虚拟服务器负载平衡客户端对服务的请求,服务直接响应客户端,绕过Citrix ADC设备。下表列出了在Citrix ADC设备上以DSR模式配置的实体的名称和值。

实体类型 名字 IP地址 协议
虚拟服务器 Vserver-LB-1 10.102.29.94 任何
服务 Service-ANY-1 10.102.29.91 任何
Service-ANY-2 10.102.29.92 任何
Service-ANY-3 10.102.29.93 任何
监控 TCP 没有一个 没有一个

下图显示了要在设备上配置的负载平衡实体和参数值。

图1所示。DSR模型中负载均衡的实体模型

lb-entity-dsr-mode

要使设备在DSR模式下正确工作,客户机请求中的目标IP必须保持不变。相反,设备将目标MAC更改为所选服务器的MAC。此设置使服务器能够确定客户端MAC地址,以便在绕过服务器的情况下将请求转发到客户端。

接下来,配置一个基本的负载平衡设置,如设置基本负载平衡,使用上表中描述的值命名实体并设置参数。

配置基本负载均衡设置后,必须针对DSR模式对其进行定制。为此,需要配置一种受支持的负载平衡方法,例如使用无会话虚拟服务器的Source IP Hash方法。您还需要设置重定向模式,以允许服务器确定转发响应的客户端MAC地址并绕过设备。

配置负载分担方式和重定向方式后,还需要在各业务上启用USIP模式。然后该服务在转发响应时使用源IP地址。

通过命令行接口配置无会话虚拟服务器的负载分担方式和重定向方式

在命令提示符下,输入:

set lb vserver  -lbMethod  -m  -sessionless  

例子

set lb vserver vserver -lb -1 -lbMethod SourceIPHash -m MAC -sessionless enabled 

请注意

对于绑定到启用了-m MAC选项的虚拟服务器的服务,必须绑定非用户监视器。

使用配置实用程序为无会话的虚拟服务器配置负载平衡方法和重定向模式

  1. 导航到“流量管理>负载均衡>虚拟服务器”
  2. 打开虚拟服务器,重定向方式选择“基于MAC”,方法选择“SOURCEIPHASH”。
  3. 在“流量设置”中选择“无会话负载分担”。

使用命令行方式配置服务使用源IP地址

在命令提示符下,输入:

set service  -usip  

例子:

设置服务service - any -1 -usip yes 

通过使用配置实用程序配置服务以使用源IP地址

  1. 导航到“流量管理>负载均衡>业务”
  2. 打开一个服务,在“流量设置”中选择使用源IP地址

在某些情况下需要一些额外的步骤,这些步骤将在后面的部分中描述。