NetScaler 10.5(12)负载平衡NetScaler设备上的流量

nick814 NetScaler 2,516 次浏览 没有评论

 

负载平衡功能通过多个服务器分配客户端请求,以优化资源利用率。在具有有限数量的服务器向大量客户端提供服务的现实世界场景中,服务器可能变得过载并且降低服务器场的性能。 Citrix NetScaler设备使用负载平衡标准,通过将每个客户端请求转发到最适合处理请求的服务器,以防止瓶颈到达时阻止瓶颈。

 

要配置负载平衡,请定义虚拟服务器以代理服务器场中的多个服务器,并在它们之间平衡负载。

 

当客户端发起到服务器的连接时,虚拟服务器终止客户端连接并发起与所选服务器的新连接,或重新使用与服务器的现有连接,以执行负载平衡。负载均衡功能提供从第4层(TCP和UDP)到第7层(FTP,HTTP和HTTPS)的流量管理。

 

NetScaler设备使用一些称为负载平衡方法的算法来确定如何在服务器之间分配负载。默认负载平衡方法是Least Connections方法。

 

典型的负载平衡部署包括下图中描述的实体。

图1.负载平衡架构

实体的功能如下:

 

  • 虚拟服务器。由IP地址,端口和协议表示的实体。虚拟服务器IP地址(VIP)通常是公共IP地址。客户端向此IP地址发送连接请求。虚拟服务器表示一组服务器。
  • 服务。服务器或在服务器上运行的应用程序的逻辑表示。标识服务器的IP地址,端口和协议。服务绑定到虚拟服务器。
  • 服务器对象。由IP地址表示的实体。服务器对象在创建服务时创建。服务的IP地址作为服务器对象的名称。您还可以创建服务器对象,然后使用服务器对象创建服务。
  • 监控。跟踪服务运行状况的实体。设备使用绑定到每个服务的监视器定期探测服务器。如果服务器在指定的响应超时时间内未响应,并且指定的探测数量失败,则服务将标记为”DOWN”。设备然后在其余服务之间执行负载平衡。

     

配置负载平衡

要配置负载平衡,必须首先创建服务。然后,创建虚拟服务器并将服务绑定到虚拟服务器。默认情况下,NetScaler设备将监视器绑定到每个服务。绑定服务后,通过验证您的配置来确保所有的设置正确。

注意:部署配置后,您可以在统计中查看显示的实体如何执行的信息。使用统计实用程序或stat lb vserver <vserverName>命令。

 

(可选)您可以为服务分配权重。然后,负载平衡算法使用分配的权重来选择服务。但是,您可以限制可选任务配置一些基本持久性设置,对于必须保持与特定服务器的连接的会话以及一些基本配置保护设置。

 

以下流程图给出了配置任务的顺序。

图1.配置负载平衡的任务顺序

 

启用负载平衡

配置负载均衡功能之前,请确保负载均衡功能已使能。

 

使用命令行界面启用负载均衡

在命令提示符下,键入以下命令以启用负载平衡并验证它是否已启用:

  • enable feature lb 
  • show feature 

    举例

    > enable feature lb

    Done

    > show feature

     

    Feature Acronym Status

    ——- ——- ——

    1) Web Logging WL OFF

    2) Surge Protection SP OFF

    3) Load Balancing LB ON

    .

    .

    .

    9) SSL Offloading SSL ON

    .

    .

    .

    Done

 

使用配置实用程序启用负载平衡

  1. 在导航窗格中,展开System,然后单击Settings
  2. 在详细信息窗格中的Modes and Features下,单击Change basic features
  3. 在”Configure Basic Features“对话框中,选中”Load Balancing“复选框,然后单击”OK“。
  4. Enable/Disable Feature(s)?消息,单击Yes

 

配置服务和虚拟服务器

识别要进行负载平衡的服务后,可以通过创建服务对象,创建负载平衡虚拟服务器并将服务对象绑定到虚拟服务器来实施初始负载平衡配置。

 

使用命令行界面实现初始负载均衡配置

在命令提示符下,键入以下命令以实现和验证初始配置:

  • add service <name> <IPaddress> <serviceType> <port>
  • add lb vserver <vServerName> <serviceType> [<IPaddress> <port>]
  • bind lb vserver <name> <serviceName>
  • show service bindings <serviceName>

举例

> add service service-HTTP-1 10.102.29.5 HTTP 80

Done

> add lb vserver vserver-LB-1 HTTP 10.102.29.60 80

Done

> bind lb vserver vserver-LB-1 service-HTTP-1

Done

> show service bindings service-HTTP-1

service-HTTP-1 (10.102.29.5:80) – State : DOWN

 

1) vserver-LB-1 (10.102.29.60:80) – State : DOWN

Done

 

使用配置实用程序实施初始负载平衡配置

  1. 导航到Traffic Management > Load Balancing
  2. 在详细信息窗格中的”Getting Started“下,单击”Load Balancing wizard“向导,然后按照说明创建基本负载平衡设置。
  3. 返回导航窗格,展开LLoad Balancing,然后单击Virtual Servers
  4. 选择您配置的虚拟服务器,并验证显示在页面底部的参数是否已正确配置。
  5. 单击Open
  6. 通过确认在”Services“选项卡上为每个服务选择”Active“复选框,验证每个服务是否已绑定到虚拟服务器。

 

选择和配置持久性设置

如果要保持由该虚拟服务器表示的服务器上的连接状态(例如,在电子商务中使用的连接),则必须在虚拟服务器上配置持久性。设备然后使用配置的负载平衡算法初始选择服务器,但将来自同一客户端的所有后续请求转发到该服务器。

 

如果配置了持久性,一旦选择了服务器,它将使用负载平衡算法。如果配置的持久性应用到了个于已关闭的服务,则设备将使用负载平衡算法来选择新服务,并且新服务来持久来自客户端的后续请求。如果所选服务处于”服务中止状态”状态,则它将继续为未完成的请求提供服务,但不接受新的请求或连接。在关闭周期过后,现有连接将关闭。下表列出了您可以配置的持久性类型。

表1.对同时持久连接数的限制

持久性类型

持久连接

IPSSL会话ID,规则,目的地址,源地址

250K

CookieInsertURL被动,自定义服务器ID

内存限制。
CookieInsert的情况下,如果超时不为0,允许任何数量的连接,直到被内存限制。

如果由于设备上缺少资源而无法保持配置的持久性,则负载平衡算法将用于服务器选择。 根据持久性类型,在配置的时间段内维持持久性。 某些持久性类型特定于某些虚拟服务器。 下表显示了关系。

 

表2.可用于每个虚拟服务器类型的持久性类型

Persistence TypeHeader 1

HTTP

HTTPS

TCP

UDP/IP

SSL_Bridge

Source IP

YES

YES

YES

YES

YES

CookieInsert

YES

YES

NO

NO

NO

SSL Session ID

NO

YES

NO

NO

YES

URL Passive

YES

YES

NO

NO

NO

Custom Server ID

YES

YES

NO

NO

NO

Rule

YES

YES

NO

NO

NO

SRCIPDESTIP

N/A

N/A

YES

YES

N/A

DESTIP

N/A

N/A

YES

YES

N/A

您还可以为一组虚拟服务器指定持久性。在组上启用持久性时,无论组中的哪个虚拟服务器接收到客户端请求,客户端请求都会定向到同一个选定的服务器。当配置的持久性时间过去时,可以为传入客户机请求选择组中的任何虚拟服务器。

 

 

两种常用的持久性类型是基于Cookie的持久性和基于URL中的服务器ID的持久性。

 

基于Cookie配置持久性

当您根据Cookie启用持久性时,NetScaler会将HTTP Cookie添加到HTTP响应的Set-Cookie头字段中。 Cookie包含有关必须发送HTTP请求的服务的信息。客户端存储cookie并将其包括在所有后续请求中,NetScaler使用它为这些请求选择服务。您可以在类型为HTTP或HTTPS的虚拟服务器上使用此类型的持久性。

 

NetScaler插入cookie <NSC_XXXX>= <ServiceIP> <ServicePort>

  • <NSC_XXXX> 是从虚拟服务器名称派生的虚拟服务器ID.
  • <ServiceIP> 是服务的IP地址的十六进制值.
  • <ServicePort>是服务端口的十六进制值.

 

NetScaler在插入Cookie时对ServiceIP和ServicePort进行加密,并在收到Cookie时对其进行解密。

 

注意:如果客户端不允许存储HTTP cookie,则后续请求没有HTTP cookie,并且不会保留持久性。

默认情况下,NetScaler发送HTTP cookie版本0,符合Netscape规范。它也可以发送版本1,符合RFC 2109。

 

您可以为基于HTTP Cookie的持久性配置超时值。请注意以下事项:

  • 如果使用HTTP cookie版本0,NetScaler将插入cookie的到期时间(HTTP cookie的expires属性)的绝对协调世界时间(GMT),计算为NetScaler上当前GMT时间和超时值的总和。
  • 如果使用HTTP cookie版本1,NetScaler将插入相对过期时间(HTTP cookie的Max-Age属性)。在这种情况下,客户端软件计算实际的到期时间。

注意:目前安装的大多数客户端软件(Microsoft Internet Explorer和Netscape浏览器)都了解HTTP cookie版本0;然而,一些HTTP代理理解HTTP cookie版本1。

 

如果将超时值设置为0,则NetScaler不指定过期时间,而不考虑使用的HTTP cookie版本。过期时间取决于客户端软件,如果该软件关闭,这些cookie无效。此持久性类型不消耗任何系统资源。因此,它可以容纳无限数量的持久性客户端。

 

管理员可以使用下表中的过程更改HTTP cookie版本。

 

使用配置实用程序更改HTTP cookie版本

  1. 导航到System > Settings
  2. 在详细信息窗格中,单击Change HTTP Parameters
  3. 在”Configure HTTP Parameters “对话框中的”Cookie“下,选择”Version 0“或”Version 1“。

注意:有关参数的信息,请参阅”配置基于Cookie的持久性”。

 

使用命令行界面配置基于Cookie的持久性

在命令提示符下,键入以下命令以基于cookie配置持久性并验证配置:

  • set lb vserver <name> –persistenceType COOKIEINSERT
  • show lb vserver <name>

举例

> set lb vserver vserver-LB-1 -persistenceType COOKIEINSERT

Done

> show lb vserver vserver-LB-1

vserver-LB-1 (10.102.29.60:80) – HTTP Type: ADDRESS

.

.

.

Persistence: COOKIEINSERT (version 0) Persistence Timeout: 2 min

.

.

.

Done

>

 

使用配置实用程序配置基于Cookie的持久性

  1. 导航到Traffic Management > Load Balancing > Virtual Servers
  2. 在详细信息窗格中,选择要配置持久性的虚拟服务器(例如,vserver-LB-1),然后单击Open
  3. 在”Configure Virtual Server (Load Balancing)“对话框中的”Method and Persistence“选项卡上的”Persistence列表”中,选择COOKIEINSERT
  4. Time-out (min)文本框中,键入超时值(例如,2)。
  5. 单击”OK“。
  6. 通过选择虚拟服务器并查看窗格底部的”Details“部分,验证已配置持久性的虚拟服务器是否已正确配置。

     

基于URL中的服务器ID配置持久性

NetScaler可以基于URL中的服务器ID保持持久性。在称为URL被动持久性的技术中,NetScaler从服务器响应中提取服务器ID,并将其嵌入到客户端请求的URL查询中。服务器ID是指定为十六进制数的IP地址和端口。 NetScaler从后续客户端请求中提取服务器ID,并使用它来选择服务器。

 

URL被动持久性需要配置负载表达式或策略基础结构表达式,以指定客户端请求中服务器ID的位置。有关表达式的详细信息,请参阅”策略配置和参考”。

 

注意:如果无法从客户端请求中提取服务器ID,则服务器选择基于负载平衡算法。

示例:有效载荷表达式

 

表达式,URLQUERY包含sid =配置系统从客户机请求的URL查询中提取服务器ID,匹配后标记sid =。因此,具有URL http://www.citrix.com/index.asp?&sid;=c0a864100050的请求被定向到具有IP地址10.102.29.10和端口80的服务器。

 

超时值不会影响此类型的持久性,只要可以从客户端请求中提取服务器ID,就会保持此持久性。此持久性类型不消耗任何系统资源,因此它可以容纳无限数量的持久性客户端。

 

注意:有关参数的信息,请参阅”负载平衡”。

 

使用命令行界面配置基于URL中的服务器ID的持久性

在命令提示符下,键入以下命令以基于URL中的服务器ID配置持久性,并验证配置:

  • set lb vserver <name> -persistenceType URLPASSIVE 
  • show lb vserver <name> 

    举例

    > set lb vserver vserver-LB-1 -persistenceType URLPASSIVE

    Done

    > show lb vserver vserver-LB-1

    vserver-LB-1 (10.102.29.60:80) – HTTP Type: ADDRESS

    .

    .

    .

    Persistence: URLPASSIVE Persistence Timeout: 2 min

    .

    .

    .

    Done

    >

 

使用配置实用程序基于URL中的服务器ID配置持久性

  1. 导航到Traffic Management > Load Balancing > Virtual Servers
  2. 在详细信息窗格中,选择要配置持久性的虚拟服务器(例如,vserver-LB-1),然后单击Open
  3. 在”Configure Virtual Server (Load Balancing) “对话框中的”Method and Persistence“选项卡上的”Persistence列表”中,选择URLPASSIVE
  4. Time-out (min)文本框中,键入超时值(例如,2)。
  5. Rule文本框中,输入有效的表达式。 或者,单击”规Rule“文本框旁边的”Configure“,然后使用”Create Expression“对话框创建表达式。
  6. 单击”OK“。
  7. 通过选择虚拟服务器并查看窗格底部的”Details“部分,验证已配置持久性的虚拟服务器是否已正确配置。

 

配置特性以保护负载平衡配置

您可以配置URL重定向以提供虚拟服务器故障的通知,如果主虚拟服务器不可用,您可以配置备份虚拟服务器以接管。

 

配置URL重定向

您可以配置重定向URL,以在HTTP或HTTPS类型的虚拟服务器关闭或禁用时通知设备的状态。此URL可以是本地链接或远程链接。设备使用HTTP 302重定向。

 

重定向可以是绝对URL或相对URL。如果配置的重定向网址包含绝对网址,则无论在传入HTTP请求中指定的网址如何,HTTP重定向都会发送到配置的位置。如果配置的重定向网址只包含域名(相对URL),则在将传入URL附加到重定向网址中配置的域后,HTTP重定向会发送到某个位置。

 

注意:如果负载平衡虚拟服务器配置了备份虚拟服务器和重定向URL,则备份虚拟服务器优先于重定向URL。在这种情况下,当主虚拟服务器和备份虚拟服务器都关闭时,将使用重定向。

 

配置虚拟服务器以使用命令行界面将客户端请求重定向到URL

 

在命令提示符下,键入以下命令以配置虚拟服务器将客户端请求重定向到URL并验证配置:

  • set lb vserver <name> –redirectURL <URL>
  • show lb vserver <name>

    举例

    > set lb vserver vserver-LB-1 -redirectURL http://www.newdomain.com/mysite/maintenance

    Done

    > show lb vserver vserver-LB-1

    vserver-LB-1 (10.102.29.60:80) – HTTP Type: ADDRESS

    State: DOWN

    Last state change was at Wed Jun 17 08:56:34 2009 (+666 ms)

    .

    .

    .

    Redirect URL: http://www.newdomain.com/mysite/maintenance

    .

    .

    .

    Done

    >

 

配置虚拟服务器以使用配置实用程序将客户端请求重定向到URL

  1. 导航到Traffic Management > Load Balancing > Virtual Servers
  2. 在详细信息窗格中,选择要配置URL重定向的虚拟服务器(例如,vserver-LB-1),然后单击Open
  3. Configure Virtual Server (Load Balancing)对话框中,在Advanced选项卡上的Redirect URL文本框中,键入URL(例如,http://www.newdomain.com/mysite/maintenance),然后单击OK
  4. 验证为服务器配置的重定向URL请点击出现在窗格底部的”Details“部分。

     

配置备份虚拟服务器

如果主虚拟服务器关闭或禁用,该设备可以直接连接或客户端请求转发该客户端流量到服务的备份虚拟服务器。设备还可以向站点发送关于站点中断或维护的通知消息。备份虚拟服务器是一个代理,对客户端是透明的。

 

您可以在创建虚拟服务器时或在更改现有虚拟服务器的可选参数时配置备份虚拟服务器。您还可以为现有备份虚拟服务器配置备份虚拟服务器,从而创建级联备份虚拟服务器。级联备份虚拟服务器的最大深度为10。设备是随访问虚拟服务器提供的内容来搜索备份服务器的。

 

您可以在主节点上配置URL重定向,以便在主虚拟服务器和备份虚拟服务器关闭或达到处理请求的阈值时使用。

 

注意:如果不存在备份虚拟服务器,则会显示错误消息,除非虚拟服务器配置了重定向URL。如果配置了备份虚拟服务器和重定向URL,则备份虚拟服务器优先。

 

使用命令行界面配置备份虚拟服务器

在命令提示符下,键入以下命令以配置备份服务器并验证配置:

  • set lb vserver <name> [-backupVserver <string>]
  • show lb vserver <name>

    举例

    > set lb vserver vserver-LB-1 -backupVserver vserver-LB-2

    Done

    > show lb vserver vserver-LB-1

    vserver-LB-1 (10.102.29.60:80) – HTTP Type: ADDRESS

    State: DOWN

    Last state change was at Wed Jun 17 08:56:34 2009 (+661 ms)

    .

    .

    .

    Backup: vserver-LB-2

    .

    .

    .

    Done

    >

 

使用配置实用程序设置备份虚拟服务器

  1. 导航到Traffic Management > Load Balancing > Virtual Servers
  2. 在详细信息窗格中,选择要配置备份虚拟服务器的虚拟服务器(例如,vserver-LB-1),然后单击Open
  3. Configure Virtual Server (Load Balancing)对话框中,在 Advanced 选项卡上的Backup Virtual Server列表中,选择备份虚拟服务器(例如,vserver-LB-2,然后单击OK
  4. 验证您配置的备份虚拟服务器是否显示在窗格底部的”Details“部分。

注意:如果主服务器关闭并重新启动,并且希望备份虚拟服务器充当主服务器,直到您显式地重新建立主虚拟服务器,请选中”Disable Primary When Down “复选框。

 

典型负载均衡场景

在负载平衡设置中,NetScaler设备在逻辑上位于客户端和服务器场之间,它们管理到服务器的流量。

下图显示了基本负载平衡配置的拓扑。

图1.基本负载平衡拓扑

虚拟服务器选择服务并将其分配以提供客户端请求。 考虑上图中的场景,其中创建服务service-HTTP-1和service-HTTP-2并绑定到名为virtual server-LB-1的虚拟服务器。 虚拟服务器LB-1将客户端请求转发到service-HTTP-1或service-HTTP-2。 系统使用最小连接负载平衡算法为每个请求选择服务。 下表列出了必须在系统上配置的基本实体的名称和值。

表1. LB配置参数值

实体类型

必需的参数和样本值

Name

IP Address

Port

Protocol

Virtual Server

vserver-LB-1

10.102.29.60

80

HTTP

Services

service-HTTP-1

10.102.29.5

8083

HTTP

service-HTTP-2

10.102.29.6

80

HTTP

Monitors

Default

None

None

None

 

下图显示了上表中描述的负载平衡示例值和必需参数。

图2.负载平衡实体模型

下表列出了用于通过使用命令行界面配置此负载平衡设置的命令。

表2.初始配置任务

Task

Command

启用负载平衡

enable feature lb

创建名为service-HTTP-1的服务

add service service-HTTP-1 10.102.29.5 HTTP 80

创建名为service-HTTP-2的服务

add service service-HTTP-2 10.102.29.6 HTTP 80

创建名为vserver-LB-1的虚拟服务器

add lb vserver vserver-LB-1 HTTP 10.102.29.60 80

要将名为service-HTTP-1的服务绑定到名为vserver-LB-1的虚拟服务器

bind lb vserver vserver-LB-1 service-HTTP-1

将名为service-HTTP-2的服务绑定到名为vserver-LB-1的虚拟服务器

bind lb vserver vserver-LB-1 service-HTTP-2

有关初始配置任务的详细信息,请参阅”启用负载平衡”和”配置服务和Vserver”。

 

表3.验证任务

Task

Command

查看名为vserver-LB-1的虚拟服务器的属性

show lb vserver vserver-LB-1

查看名为vserver-LB-1的虚拟服务器的统计信息

stat lb vserver vserver-LB-1

要查看名为service-HTTP-1的服务的属性

show service service-HTTP-1

查看名为service-HTTP-1的服务的统计信息

stat service service-HTTP-1

查看名为service-HTTP-1的服务的绑定

show service bindings service-HTTP-1

 

表4.自定义任务

Task

Command

在名为vserver-LB-1的虚拟服务器上配置持久性

set lb vserver vserver-LB-1 -persistenceType SOURCEIP -persistenceMask 255.255.255.255 -timeout 2

在名为vserver-LB-1的虚拟服务器上配置COOKIEINSERT持久性

set lb vserver vserver-LB-1 -persistenceType COOKIEINSERT

在名为vserver-LB-1的虚拟服务器上配置URLPassive持久性

set lb vserver vserver-LB-1 -persistenceType URLPASSIVE

配置虚拟服务器以将客户机请求重定向到名为vserver-LB-1的虚拟服务器上的URL

set lb vserver vserver-LB-1 -redirectURL http://www.newdomain.com/mysite/maintenance

在名为vserver-LB-1的虚拟服务器上设置备份虚拟服务器

set lb vserver vserver-LB-1 -backupVserver vserver-LB-2

有关配置持久性的更多信息,请参阅”选择和配置持久性设置”。 有关配置虚拟服务器以将客户端请求重定向到URL和设置备份虚拟服务器的信息,请参阅”配置功能以保护负载平衡配置”。

 

发表评论

Go