资源描述
ArrayAPV配置操作手册SLB功能配置
21
2020年4月19日
文档仅供参考
Array APV工程安装配置手册
服务器负载均衡功能配置
一、 Array APV 服务器负载均衡架构介绍
Array APV的服务器负载均衡功能由三部分组成,经过策略和算法的应用将此三部分结合为统一的整理,从而实现服务器负载均衡功能。
第一部分:Real Serivce
Real Service是提供服务的服务器的IP地址和端口的集合。
在进行APV服务器负载均衡功能实现时,首先需要定义Real Service。在定义Real Service的同时,不但需要指定后台提供服务的服务器的IP地址和端口,还能够个性化的指定每个Real Service能够处理的并发连接数、对Real Service进行的健康检查方式等。
第二部分:Real Serivce Group(Group)
Real Service组是提供相同服务的Real Service的集合。同一台服务器,由于其可能同时提供多个服务,能够同时属于多个Real Service Group。
在创立Group的同时,就需要定义Group中的Real Service处理用户访问请求的方式(Method),且能够经过加权的方式来分担不同比重的负载到相应的Real Service上。
第三部分:Virtual Service(Virtual)
Virtual Service是对外提供服务的IP地址和端口的集合。用户经过向Virtual Service发起访问就能够实现所需功能。
同一个Virtual IP地址能够属于不同的Virtual Service。
经过Real Service 、Real Service Group和Virtual Service的定义,和Policy(策略)、Method(算法)的应用,能够方便的实现服务器负载均衡功能。
其中Policy用来定义Virtual和Group之间的关系,Method用来定义Real和Group之间的关系。
二、 Array APV服务器负载均衡功能配置
无论是串连连接方式还是旁路连接方式,服务器负载均衡功能配置方式相同,唯一需要注意的是工作模式。Array APV的服务器负载均衡功能有两种工作模式,反向代理模式和透明模式(具体说明见网络架构设计书)。
当选择应用串连连接方式时,某些较特殊的应用需要Real Service能够得知客户端真实IP地址,需要使用透明模式(transparent mode)。
系统默认工作模式为反向代理模式(reverse mode)。
如需更改为透明模式,命令为:
AN(config)#system mode transparent
如需更改到反向代理模式,命令为:
AN(config)#system mode reverse
查看当前系统运行模式,命令为:
AN(config)#system mode reverse
在一般情况下,使用默认Reverse模式即可,特别在旁路连接方式下,建议应用Reverse模式。
现以旁路接入方式(Reverse模式)为例讲解服务器负载均衡的配置方式,下图为旁路接入方式拓扑结构图。
图中显示有4台Http服务器,分别为App1,App2,App3和App4。
假定4台服务器的IP地址和提供服务的端口如下表所示:
App1
App2
App3
App4
IP地址
10.1.1.11
10.1.1.12
10.1.1.13
10.1.1.14
Serive Port
80
700
800
900
假定经过APV对这4台服务器实现负载均衡功能,对外提供服务的IP地址和端口(Virtual Service)为10.1.1.100,80端口。
现以以上假定为例,进行配置说明。
配置服务器负载均衡功能总共分为以下4个步骤:
步骤一、定义Real Service
步骤二、定义Real Service Group,并将Real Service添加到Group中
步骤三、定义Virtual Service
步骤四、定义Policy,并经过policy将Virtual Service和Group绑定。
下面分别详细说明各个步骤的具体配置命令,其中应用的算法为最小相应时间基础上的会话保持算法,会话保持算法的session timeoute时间设置为1分钟。
注:所有设备配置命令,均需现登陆到配置模式下才能够执行。
配置符号说明:
< > 符号表示是必须配置部分,否则配置提示错误。
[ ] 符号表示是可选配置部分,如没有配置则使用默认值。
步骤一、定义Real Service
命令:
slb real <protocol> <real_name> <real_ip> [real_port] [max_conn] [hc_type] [hc_up] [hc_down] [timeout]
protocol
服务器提供服务的协议: dns, ftp, http, https, tcp, tcps, or udp
real_name
Real service的名称标注,可随意制定,但不可重名
real_ip
服务器的IP地址
real_port
服务器提供服务的端口(Http协议默认端口为80)
max_conn
并发最大连接数,默认为1000。既每台服务器只允许并发处理1000个连接
hc_type
所应用的健康检查类型: tcp, http, icmp,dns, or off
(可选配置, 对http应用默认为 tcp协议).
hc_up
连续健康检查几次都经过才认为服务是健康的,默认为1
hc_down
连续健康检查几次都没有经过才认为服务是不健康的,默认为1
timeout
对UDP服务的timeout时间设置,默认为60秒
配置实例:创立4个Real Service,命令如下。
AN(config)#slb real http R_1 10.1.1.11
AN(config)#slb real http R_2 10.1.1.12 700
AN(config)#slb real http R_3 10.1.1.13 800
AN(config)#slb real http R_4 10.1.1.14 900
AN(config)#
查看命令:
AN(config)#show slb all
slb real http "R_1" 10.1.1.11 80 1000 tcp 1 1
slb real http "R_2" 10.1.1.12 700 1000 tcp 1 1
slb real http "R_3" 10.1.1.13 800 1000 tcp 1 1
slb real http "R_4" 10.1.1.14 900 1000 tcp 1 1
AN(config)#
需要注意的几个方面:
l 一般情况下,需要注意的是对max_conn(最大并发连接数)的调整和健康检查方式的调整。
max_conn表示每个Real Service最大并发处理的connection数,默认为1000,此设置目的是为了对Real Service进行过载保护,有时需要对此数值进行调整。
l 如需要对Http服务器在实现服务器负载均衡的基础上,实现其它性能增强功能如(Cache功能,Http压缩功能,SSL加速功能)则必须将Real Service的协议定义为Http协议。
l Virtual Service使用的协议必须和Real Service使用的协议一致。例如,Virtual Service应用的是Http协议,则Real Service也必须应用Http协议。
步骤二、定义Group,并将Real Service添加到Group中
配置命令:定义group,同时指定算法
slb group method <group_name> [method [other_parms]]
group_name
组名,能够随意定义,但不能够与其它组重名
method
负载均衡算法,用来指定在同一组中的RealService的工作方式。包括: rr (round robin), pc (persistent cookie), pi (persistent IP), hi (hash IP), chi (consistent hash IP), hc (hash cookie), ph (persistent hostname), pu (persistent URL), ic (insert cookie*), rc (rewrite cookie*), lc (least connections*), hh (hash header*), sslsid (SSL session ID)
other_parms
在method的基础上的扩展选项。
如选择method为基于原IP地址的保持性算法(PI),则同时能够指定第一个数据包的负载分担方式为sr(最短相应时间)。
则配置命令为: Slb group method gg pi 32 sr
配置命令:定义group member,将Real Service加入到Group中
slb group member <group_name> <real_name> [ <weight> | <param_string>]
group_name
将Real Service加入到group的group name
real_name
Real service 的名称
Weight
权重,当method是rr, pi, ph, hh, hc, ic, rc, or sslsid 时有效,默认为1。
param_string
Cookie 值,当method 为 pc.
URL值,当method 为pu.
配置实例:创立一个组,组名为gg,将前面创立的4个real Service添加到这个组中。
选用的算法为基于原IP的保持性算法,同时指定客户端发起首次请求时采用服务器最小响应时间的算法。
Method 为 PI 32 sr
命令如下:
AN(config)#slb group method gg pi 32 sr
AN(config)#slb group member gg R_1
AN(config)#slb group member gg R_2
AN(config)#slb group member gg R_3
AN(config)#slb group member gg R_4
查看命令:
AN(config)#show run "slb group"
#slb configuration
slb group method "gg" pi 32 sr
slb group member "gg" "R_1" 1
slb group member "gg" "R_2" 1
slb group member "gg" "R_3" 1
slb group member "gg" "R_4" 1
如需要配置基于原IP地址的保持性算法的会话timeout时间。
命令为:
slb persistence timeout <时间>
:其中<时间>单位为分钟,是从1-50000的整数,
配置实例:设置session timeout为1分钟
AN (config) #slb persistence timeout 1
步骤三、定义Virtual Service
配置命令:定义Virtual Service,
slb virtual <protocol> <virtual_name> <virtual_ip> <virtual_port>
protocol
应用协议类型: dns, ftp, http, https, tcp, tcps, or udp
virtual_name
Virtual Service的名称,不能与其它Virtual Server相同
virtual_ip
对外提供服务的IP地址
virtual_port
TCP/UDP 对外提供服务的端口(如HTTP协议,则默认为 80).
配置实例:
定义对外提供服务的协议为HTTP协议,IP地址为10.1.1.100,端口为80端口。
命令如下:
AN(config)#slb virtual http Vip 10.1.1.100
查看命令:
AN(config)#show run "slb virtual"
#slb configuration
slb virtual http "Vip" 10.1.1.100 80
步骤四、定义Policy,并将Virtual Service和Group绑定
配置命令:
slb policy <policy_type> <virtual_name> <group or real name> <param_args*> <precedence>
Policy_type
策略类型: default, backup, persistent cookie, persistent url, qos cookie, qos hostname, qos network, qos url, icookie, rcookie, regex, header, or static.
virtual_name
某些Policy需要指定
real or group
Group名称,或者Real Service名称
param_args
附加参数: persistent cookie (cookie name), persistent url (url name), qos cookie (cookie name=value), qos hostname (hostname), qos url (url), qos network (network, netmask), regex (regex pattern), header (header name, header pattern).
precedence
The precedence of this policy; policies are checked in order of increasing precedence.
一般情况下,仅使用default策略,结合method的应用就能够满足需求。
配置实例:
定义对外提供服务的协议为HTTP协议,IP地址为10.1.1.100,端口为80端口,并将此Virtual Server和gg组进行绑定。
命令如下:
AN(config)#slb policy default Vip gg
查看命令:
A AN(config)#show run "slb policy"
#slb configuration
slb policy default "Vip" "gg"
至此,针对4台HTTP服务器的服务器负载均衡功能配置完毕。经过查看命令可显示所有服务器负载均衡配置:
AN(config)#show slb all
slb real http "R_1" 10.1.1.11 80 1000 tcp 1 1
slb real http "R_2" 10.1.1.12 700 1000 tcp 1 1
slb real http "R_3" 10.1.1.13 800 1000 tcp 1 1
slb real http "R_4" 10.1.1.14 900 1000 tcp 1 1
slb group method "gg" pi 32 sr
slb group member "gg" "R_1" 1
slb group member "gg" "R_2" 1
slb group member "gg" "R_3" 1
slb group member "gg" "R_4" 1
slb virtual http "Vip" 10.1.1.100 80
#default policy order:
# qos-clientport 1
# qos-network 2
# pu 3
# rc 4
# ic 5
# pc 6
# qos-cookie 7
# qos-hostname 8
# qos-url 9
# regex 10
# header 11
slb policy default "Vip" "gg"
slb persistence timeout 1
绝大多数情况下,如应用需求和此需求相同,在原有配置示例的基础上能够直接更改Real Service的IP地址和Virtual Service的IP地址,进行复制粘贴配置,即可。
三、 Array APV服务器负载均衡功能维护
1、 Real Service管理维护
在对应用实现服务器负载均衡功能时,一般会需要对Real Service进行管理和维护,此时能够经过APV提供的停止某个Real Service的服务的方式来实现。APV在中止Real Service的过程中,不将新的访问请求分发到这台Real Service上,仅允许Real Service处理已经接收的访问请求,直至所有请求处理完毕。
中止服务命令:
slb real disable <real_name>
启动服务命令:
slb real enable <real_name>
确认Real Service的服务状态命令:
Show slb real all
AN(config)#slb real disab R_1
AN(config)#show slb real all
slb real http "R_1" 10.1.1.11 80 1000 tcp 1 1
slb real disable "R_1"
slb real http "R_2" 10.1.1.12 700 1000 tcp 1 1
slb real http "R_3" 10.1.1.13 800 1000 tcp 1 1
slb real http "R_4" 10.1.1.14 900 1000 tcp 1 1
2、 Virtual Service管理维护
中止服务命令:
Slb virtual disable <virtual_name>
启动服务命令:
Slb virtual enable <virtual_name>
确认Real Service的服务状态命令:
show slb virtual all
AN(config)#slb virtual disable Vip
AN(config)#show slb virtual all
slb virtual http "Vip" 10.1.1.100 80
slb virtual disable "Vip"
3、 服务器负载均衡功能状态查看
查看所有服务器负载均衡功能配置命令:
命令:Show slb all
查看当前服务器负载均衡功能运行详细状态命令:
命令:Show stati slb all
示例:
Real service R_1 10.1.1.11 80 UP ACTIVE
Main health check: 10.1.1.11 80 tcp UP
Connection Count: 38
Outstanding Request Count: 12
Total Hits: 1120
Average Response time: 0.010 ms
Real service R_2 10.1.1.12 700 UP ACTIVE
Main health check: 10.1.1.12 700 tcp UP
Connection Count: 100
Outstanding Request Count: 80
Total Hits: 1230
Average Response time: 0.010 ms
Real service R_3 10.1.1.13 800 UP ACTIVE
Main health check: 10.1.1.13 800 tcp UP
Connection Count: 11
Outstanding Request Count: 2
Total Hits: 1210
Average Response time: 0.010 ms
Real service R_4 10.1.1.14 900 DOWN INACTIVE
Main health check: 10.1.1.14 900 tcp DOWN
Connection Count: 0
Outstanding Request Count: 0
Total Hits: 1230
Average Response time: 0.010 ms
Group Name Method Hits
gg pi 3560
http virtual service "Vip" (10.1.1.100:80)
qos clientport hits : 0
qos network hits : 0
persistent url hits : 0
rcookie hits : 0
icookie hits : 0
persistent cookie hits : 0
qos cookie hits : 0
qos hostname hits : 0
qos url hits : 0
regex hits : 0
header hits : 0
redirect hits : 0
default hits : 3560
static hits : 0
backup hits : 0
cache hits : 0
default policy for http virtual service "Vip" has been matched 3560 times
从中能够看到每个Real Service当前的状态(UP or DOWN),每个real service总共处理的访问请求数(Total Hits:),当前正在处理的情况(Connection Count:、Outstanding Request Count:),健康检查类型等信息。
四、 Array APV服务器负载均衡健康检查功能
在实现服务器负载均衡功能中,APV提供以下健康检查方式:
l ICMP:
经过ping提供服务的IP来进行确认
l TCP:
经过与Real Service进行TCP握手进行确认
l DNS:
经过发送DNS请求的方式进行确认
l HTTP:
经过发起标准HTTP GET请求方式进行确认
默认请求内容为:“HEAD / HTTP/1.0\r\n\r\n”.
默认比对响应内容为:“200 OK”
l 个性化HTTP:
经过预定制的Request和Response,经过检查比对进行确认
个性化定制HTTP健康检查,包括定制Request和Response。
Http Request定制命令:
health request <request_index> <request_string>
Http Response定制命令:
health response <response_index> <response_string>
定制完成Request和Response后,将定制的内容与Real Service绑定:
health server <real_name> <request_index> <response_index>
request_index
Request table entry number (value between 0 and 999) to store the request string in.
request_string
String to use in the HTTP request sent to the real service.
response_index
Response table entry number (value between 0 and 999) to store the response string in.
response_string
String to search for in the HTTP response sent from the real service.
real_name
Real service name to bind a request/response health check to.
示例:
假设需要经过定制HTTP健康检查方式,仅当检查到Real Service Http根目录下具有health.html文件时,才认为这个Real Service能够正常提供服务。否则认为此Real Service不能提供服务。
首先,配置或修改健康检查方式为HTTP:
slb real http "R_1" 10.1.1.11 80 1000 http 1 1
slb real http "R_2" 10.1.1.12 700 1000 http 1 1
slb real http "R_3" 10.1.1.13 800 1000 http 1 1
slb real http "R_4" 10.1.1.14 900 1000 http 1 1
然后定制健康检查Request和Response:
AN(config)# health request 2 “GET /health.html HTTP/1.0\r\n\r\n”
AN(config)# health response 5 “200 OK”
:其中,request number = 2,表示一种定制的request方式,
Response number = 5 , 表示一种定制后的response方式。
将定制的健康检查方式应用在Real Service上:
AN(config)# health server R_1 2 5
AN(config)# health server R_2 2 5
AN(config)# health server R_3 2 5
AN(config)# health server R_4 2 5
此时配置完成,经过命令查看健康检查定制结果:
AN(config)#show health server
--------------------------- Server Status --------------------------
real server name status
R_1 UP
R_2 UP
R_3 DOWN
R_4 DOWN
---------------------------- Health Check --------------------------
real server name ip :port status hct rqr rpr
--------------------------------------------------------------------
R_1 10.1.1.11 :80 UP http 2 5
R_2 10.1.1.12 :700 UP http 2 5
R_3 10.1.1.13 :800 DOWN http 2 5
R_4 10.1.1.14 :900 DOWN http 2 5
显示仅R_1和R_2健康检查经过,仅这两个Real Service能处理用户的访问请求。
健康检查功能查看命令:显示所有Real Service的状况
Show health server
示例:
AN(config)#show health server
--------------------------- Server Status --------------------------
real server name status
R_1 UP
R_2 UP
R_3 DOWN
R_4 DOWN
---------------------------- Health Check --------------------------
real server name ip :port status hct rqr rpr
--------------------------------------------------------------------
R_1 10.1.1.11 :80 UP http 2 5
R_2 10.1.1.12 :700 UP http 2 5
R_3 10.1.1.13 :800 DOWN http 2 5
R_4 10.1.1.14 :900 DOWN http 2 5
命令:显示所有历史健康检查情况
Show stati health
在此命令显示中,处了能够统计当前Real Service的状态外,还能够显示健康检查的所有历史信息,包括总共检查了几次,有多少次没有健康检查经过等。
展开阅读全文