03-负载均衡配置
本章节下载: 03-负载均衡配置 (684.51 KB)
设备各款型对于本节所描述的特性支持情况有所不同,详细差异信息如下:
系列 |
型号 |
产品代码 |
特性 |
描述 |
WX1800H系列 |
WX1804H |
EWP-WX1804H-PWR-CN |
负载均衡 |
支持 |
WX2500H系列 |
WX2510H WX2510H-F WX2540H WX2540H-F WX2560H |
EWP-WX2510H-PWR EWP-WX2510H-F-PWR EWP-WX2540H EWP-WX2540H-F EWP-WX2560H |
支持 |
|
WX3000H系列 |
WX3010H WX3010H-X WX3010H-L WX3024H WX3024H-L WX3024H-F |
EWP-WX3010H EWP-WX3010H-X-PWR EWP-WX3010H-L-PWR EWP-WX3024H EWP-WX3024H-L-PWR EWP-WX3024H-F |
支持 |
|
WX3500H系列 |
WX3508H WX3510H WX3520H WX3520H-F WX3540H |
EWP-WX3508H EWP-WX3510H EWP-WX3520H EWP-WX3520H-F EWP-WX3540H |
不支持 |
|
WX5500E系列 |
WX5510E WX5540E |
EWP-WX5510E EWP-WX5540E |
不支持 |
|
WX5500H系列 |
WX5540H WX5560H WX5580H |
EWP-WX5540H EWP-WX5560H EWP-WX5580H |
不支持 |
|
AC插卡系列 |
LSUM1WCME0 EWPXM1WCME0 LSQM1WCMX20 LSUM1WCMX20RT LSQM1WCMX40 LSUM1WCMX40RT EWPXM2WCMD0F EWPXM1MAC0F |
LSUM1WCME0 EWPXM1WCME0 LSQM1WCMX20 LSUM1WCMX20RT LSQM1WCMX40 LSUM1WCMX40RT EWPXM2WCMD0F EWPXM1MAC0F |
不支持 |
LB(Load Balance,负载均衡)是一种集群技术,它将特定的业务(网络服务、网络流量等)分担给多台网络设备(包括服务器、防火墙等)或多条链路,从而提高了业务处理能力,保证了业务的高可靠性。
负载均衡技术具有以下优势:
· 高性能:通过将业务较均衡地分配到多台设备或多条链路上,提高了系统的整体性能。
· 可扩展性:可以方便地增加集群中设备或链路的数量,在不降低业务质量的前提下满足不断增长的业务需求。
· 高可靠性:单个甚至多个设备或链路发生故障也不会导致业务中断,提高了系统的整体可靠性。
· 可管理性:大量的管理工作都集中在应用了负载均衡技术的设备上,集群中的设备或链路只需要进行普通的配置和维护。
· 透明性:对用户而言,集群等同于一个可靠性高、性能好的设备或链路,用户感知不到也不必关心具体的网络结构。增减集群中的设备或链路不会影响正常业务。
目前无线控制器仅支持链路负载均衡技术,当存在多条运营商链路时,通过此技术可实现链路的动态选择,从而充分利用多条链路。链路负载均衡支持IPv4与IPv6,但不支持IPv4报文与IPv6报文的互相转换。根据数据的连接请求方向不同,链路负载均衡又分为以下两种:
· 出方向链路负载均衡:当内网用户访问外部互联网存在多条链路时,可在多条链路上分担内网用户访问外部互联网的流量。
· DNS透明代理:当内网用户访问外网DNS服务器存在多条链路时,可在多条链路上分担内网用户访问外部DNS服务器的流量。
出方向链路负载均衡功能可在多条链路上分担内网用户访问外部互联网的流量。
如图2-1所示,出方向链路负载均衡包含以下要素:
· LB device(负载均衡设备):负责将内网用户访问外部互联网的流量分发到多条链路。
· Link(链路):运营商提供的实体链路。
· VSIP(Virtual Service IP,虚服务IP):集群对外提供的虚服务IP地址,即内网用户发送报文的目的网段。
· Server IP(服务器IP):服务器IP地址。
出方向链路负载均衡的工作流程如图2-2所示。
出方向链路负载均衡工作流程简述如表2-1所示。
步骤 |
描述 |
(1) |
负载均衡设备接收来自内网服务器的流量 |
(2) |
负载均衡设备依次根据负载均衡策略、持续性方法、就近性算法、调度算法(通常使用带宽算法或最大带宽算法)来选择最佳链路 |
(3) |
负载均衡设备通过选定的最佳链路将流量转发给外网服务器 |
(4) |
负载均衡设备接收来自外网服务器的流量 |
(5) |
负载均衡设备将流量转发给内网服务器 |
· 链路组:将具有相同或相似功能的链路抽象成一个链路组。链路组可被虚服务器或负载均衡动作引用。
· 链路:运营商提供的实体链路。
· 虚服务器:负载均衡设备上面向用户业务的虚拟载体,只有匹配上虚服务器的报文才需要进行负载均衡处理。
· 负载均衡类:将报文分类,以便对不同类型的报文执行不同的负载均衡动作。
· 负载均衡动作:制订丢弃、转发或修改报文的具体行为。
· 负载均衡策略:将负载均衡类和负载均衡动作关联起来就构成了负载均衡策略。负载均衡策略可被虚服务器引用。
· 持续性组:根据某持续性方法将具有一定相关性的会话都分配给同一条链路处理。持续性组可被虚服务器或负载均衡动作引用。
· 参数模板:制订对报文进行更深入处理的模板。参数模板可被虚服务器引用。
表2-2 出方向链路负载均衡配置任务简介
配置任务 |
说明 |
详细配置 |
配置链路组 |
必选 |
|
配置链路 |
必选 |
|
配置虚服务器 |
必选 |
|
配置负载均衡类 |
可选 |
|
配置负载均衡动作 |
可选 |
|
配置负载均衡策略 |
可选 |
|
配置持续性组 |
可选 |
|
配置参数模板 |
可选 |
|
配置ISP信息 |
可选 |
|
配置负载均衡ALG功能 |
可选 |
|
测试负载均衡效果 |
可选 |
|
配置负载均衡告警功能 |
可选 |
为了便于对链路进行统一管理,可将具有相同或相似功能的链路抽象成一个组,称为链路组。比如,可按不同的运营商划分为ISP1链路组、ISP2链路组和ISP3链路组等。
表2-3 配置任务简介
配置任务 |
说明 |
详细配置 |
创建链路组 |
必选 |
|
调度链路 |
必选 |
|
配置可用条件 |
必选 |
|
关闭NAT功能 |
必选 |
|
配置SNAT功能 |
可选 |
|
配置温暖上线功能 |
可选 |
|
配置健康检测功能 |
可选 |
|
配置故障处理方式 |
可选 |
|
配置就近性功能 |
可选 |
表2-4 创建链路组
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建链路组,并进入链路组视图 |
loadbalance link-group link-group-name |
缺省情况下,不存在任何链路组 |
(可选)配置链路组的描述信息 |
description text |
缺省情况下,链路组没有描述信息 |
设备根据链路组中配置的调度算法,计算出处理用户请求的链路。设备支持以下链路组的调度算法:
· 加权最小连接算法:总是将请求分发给加权活动连接数(当前活动连接数/权值)最小的链路。
· 随机算法:将请求随机分发给某条链路。
· 加权轮转算法:根据链路权值的大小将请求依次分发给每条链路,权值越大,分配的请求越多。
· 带宽算法:根据链路的权值与剩余带宽的比例把请求分发给每条链路。
· 最大带宽算法:总是将请求分发给处于空闲状态且剩余带宽最大的链路。
· 源IP哈希算法:根据源IP地址哈希算法将请求分发给链路。
· 源IP及端口哈希算法:根据源IP地址和端口号哈希算法将请求分发给链路。
· 目的IP哈希算法:根据目的IP地址哈希算法将请求分发给链路。
表2-5 调度链路
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入链路组视图 |
loadbalance link-group link-group-name |
- |
配置链路组的调度算法 |
predictor hash address { destination | source | source-ip-port } [ mask mask-length ] [ prefix prefix-length ] predictor { least-connection | random | round-robin | { bandwidth | max-bandwidth } [ inbound | outbound ] } |
缺省情况下,链路组的调度算法为加权轮转算法 |
配置链路组中可被调度算法调用的实链路数量限制 |
selected-link min min-number max max-number |
缺省情况下,链路组中调用优先级最高的链路全部被调度算法调用 |
通过配置链路组的可用条件,可将流量在主用链路组和备用链路组之间进行切换:当主用链路组中的链路可用率低于下限时,将流量切换到备用链路组上,以防止链路受到大流量的冲击;待主用链路组中的链路可用率恢复到上限时,再将流量切换回来。
表2-6 配置可用条件
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入链路组视图 |
loadbalance link-group link-group-name |
- |
配置链路组的可用条件 |
activate lower lower-percentage upper upper-percentage |
缺省情况下,链路组中只要有一个链路可用,该链路组就被认为可用 |
出方向链路负载均衡组网通常需要在链路组中关闭NAT功能。
表2-7 关闭的NAT功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入链路组视图 |
loadbalance link-group link-group-name |
- |
在链路组中关闭NAT功能 |
transparent enable |
缺省情况下,链路组中的NAT功能处于开启状态 |
SNAT地址池是一个IP地址范围,它被链路组引用之后,负载均衡设备将把收到报文的源IP地址修改为SNAT地址池中的IP地址后再转发出去。
一个SNAT地址池中最多允许有256个IPv4地址和65536个IPv6地址,且不同SNAT地址池中的IPv4或IPv6地址不允许重叠。
出方向链路负载均衡的SNAT功能使用场景有限,通常不建议使用。
表2-8 配置SNAT功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建SNAT地址池,并进入SNAT地址池视图 |
loadbalance snat-pool pool-name |
缺省情况下,不存在任何SNAT地址池 |
(可选)配置SNAT地址池的描述信息 |
description text |
缺省情况下,SNAT地址池没有描述信息 |
配置SNAT地址池的IPv4地址范围 |
ip range start start-ipv4-address end end-ipv4-address |
二者选其一 缺省情况下,没有配置SNAT地址池的IP地址范围 |
配置SNAT地址池的IPv6地址范围 |
ipv6 range start start-ipv6-address end end-ipv6-address |
|
退回系统视图 |
quit |
- |
进入链路组视图 |
loadbalance link-group link-group-name |
- |
指定链路引用的SNAT地址池 |
snat-pool pool-name |
缺省情况下,链路组没有引用任何SNAT地址池 |
当向链路组中添加链路时,某些新增的链路无法立即承担大量业务,此时可以开启温暖上线功能。这样,当链路上线后,在准备时间内,负载均衡设备不会向其分配任何业务;准备时间超时后,负载均衡设备在爬升时间内会逐步增加向其分配的业务量;爬升时间超时后,负载均衡设备开始向其正常分配业务。
表2-9 配置温暖上线功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入链路组视图 |
loadbalance link-group link-group-name |
- |
在链路组中开启链路温暖上线功能 |
slow-online [ standby-time standby-time ramp-up-time ramp-up-time ] |
缺省情况下,链路组中的链路温暖上线功能处于关闭状态 |
通过健康检测可以对链路进行检测,保证其能够提供有效的服务。
用户既可在链路组视图下对组内的所有链路进行配置,也可在链路视图下只对当前链路进行配置,后者的配置优先级较高。
表2-10 配置健康检测功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入链路组视图 |
loadbalance link-group link-group-name |
- |
指定链路组的健康检测方法 |
probe template-name |
缺省情况下,没有指定链路组的健康检测方法 |
配置链路组健康检测的成功条件 |
success-criteria { all | at-least min-number } |
缺省情况下,只有全部方法都通过检测才认为健康检测成功 |
通过本配置可以选择链路组的故障处理方式:
· 保持已有连接:不主动断开与故障链路的连接,连接继续保持还是断开将由协议自身的超时机制决定。
· 重定向连接:把连接重定向到链路组中其它可用的链路上。
· 断开已有连接:主动断开与故障链路的连接。对于TCP报文,将发送RST报文;对于其它类型的报文,将发送ICMP不可达报文。
表2-11 配置故障处理方式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入链路组视图 |
loadbalance link-group link-group-name |
- |
配置链路组的故障处理方式 |
fail-action { keep | reschedule | reset } |
缺省情况下,链路组的故障处理方式为保持已有连接 |
就近性功能就是通过对链路进行探测,选出到达目的地的最优链路,从而引导后续流量。具体而言,就是当流量经过负载均衡模块时,如果没有与目的地址相关的就近性信息,则根据调度算法,为该流量选择一条链路,以保证业务的可用性,然后启动就近性探测来生成就近性表项,以引导后续流量。
设备支持在就近性视图下通过引用NQA模板或负载均衡探测模板进行就近性探测,并根据探测结果和就近性参数的配置生成就近性表项。有关NQA模板的详细介绍,请参见“网络管理和监控配置指导”中的“NQA”。
配置就近性功能时,需要先在就近性视图下配置就近性参数,然后在链路组中开启就近性功能。
表2-12 配置就近性参数
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入就近性视图 |
loadbalance proximity |
- |
|
为TCP报文指定就近性探测方法 |
match [ match-id ] tcp probe nqa-template |
缺省情况下,未指定就近性探测方法 |
|
指定缺省就近性探测方法 |
match default probe nqa-template |
缺省情况下,未指定缺省就近性探测方法 |
|
配置IPv4就近性表项的掩码长度 |
ip mask { mask-length | mask } |
缺省情况下,IPv4就近性表项的掩码长度为24 |
|
配置IPv6就近性表项的前缀长度 |
ipv6 prefix prefix-length |
缺省情况下,IPv6就近性表项的前缀长度为96 |
|
配置就近性计算的网络延迟权值 |
rtt weigt rtt-weight |
缺省情况下,就近性计算的网络延迟权值为100 |
|
配置就近性计算的路由器跳数权值 |
ttl weight ttl-weight |
缺省情况下,就近性计算的路由器跳数权值为100 |
|
配置就近性计算的带宽权值 |
bandwidth { inbound | outbound } weight bandwidth-weight |
缺省情况下,就近性计算的出、入方向带宽权值均为100 |
|
配置就近性计算的成本权值 |
cost weight cost-weight |
缺省情况下,就近性计算的成本权值为100 |
|
配置就近性表项的老化时间 |
timeout timeout-value |
缺省情况下,就近性表项的老化时间为60秒 |
|
配置就近性表项的最大个数 |
max-number number |
缺省情况下,不限制就近性表项的最大个数 |
|
表2-13 开启就近性功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入链路组视图 |
loadbalance link-group link-group-name |
- |
开启就近性功能 |
proximity enable |
缺省情况下,链路组的就近性功能处于关闭状态 |
链路是运营商提供的实体链路。一条链路只能属于一个链路组,而一个链路组可以包含多条链路。
表2-14 配置任务简介
配置任务 |
说明 |
详细配置 |
创建链路并指定其所属链路组 |
必选 |
|
指定链路出口方向(外网方向)的下一跳IP地址 |
必选 |
|
配置权值和调用优先级 |
必选 |
|
配置带宽和连接参数 |
可选 |
|
配置健康检测功能 |
可选 |
|
配置慢宕功能 |
可选 |
|
配置就近性计算成本 |
可选 |
|
配置链路的带宽繁忙比与最大期望带宽 |
可选 |
表2-15 创建链路并指定其所属链路组
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建链路,并进入链路视图 |
loadbalance link link-name |
缺省情况下,不存在任何链路 |
(可选)配置链路的描述信息 |
description text |
缺省情况下,链路没有描述信息 |
指定链路所属的链路组 |
link-group link-group-name |
缺省情况下,链路不属于任何链路组 |
表2-16 指定链路出口方向(外网方向)的下一跳IP地址
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入链路视图 |
loadbalance link link-name |
- |
指定链路出口方向(外网方向)的下一跳IP地址 |
router ip ipv4-address |
二者选其一 缺省情况下,未配置链路出口方向的下一跳IP地址 |
router ipv6 ipv6-address |
通过本配置可以调整链路的加权轮转和加权最小连接这两种调度算法所使用的权值,以及链路在链路组中的调用优先级。
表2-17 配置权值和调用优先级
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入链路视图 |
loadbalance link link-name |
- |
配置链路的权值 |
weight weight-value |
缺省情况下,链路的权值为100 |
配置链路的调用优先级 |
priority priority |
缺省情况下,链路的调用优先级为4 |
表2-18 配置带宽和连接参数
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入链路视图 |
loadbalance link link-name |
- |
配置链路所允许的最大带宽 |
rate-limit bandwidth [ inbound | outbound ] bandwidth-value |
缺省情况下,链路所允许的最大总带宽、最大入带宽和最大出带宽均为0千字节/秒,即不受限制 |
配置链路所允许的最大连接数 |
connection-limit max max-number |
缺省情况下,链路所允许的最大连接数为0,即不受限制 |
配置链路所允许的最大连接速率 |
rate-limit connection connection-number |
缺省情况下,链路所允许的最大连接速率为0,即不受限制 |
通过健康检测可以对链路进行检测,保证其能够提供有效的服务。
用户既可在链路组视图下对组内的所有链路进行配置,也可在链路视图下只对当前链路进行配置,后者的配置优先级较高。
表2-19 配置健康检测功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入链路视图 |
loadbalance link link-name |
- |
指定链路的健康检测方法 |
probe template-name |
缺省情况下,没有指定链路的健康检测方法 |
配置链路健康检测的成功条件 |
success-criteria { all | at-least min-number } |
缺省情况下,只有全部方法都通过检测才认为健康检测成功 |
通过shutdown命令可以立即中断链路的已有连接,而慢宕则不会立即中断链路的已有连接,而是让其自然老化,并且不再建立新的连接。慢宕功能需要与shutdown命令配合使用,即在开启了慢宕功能之后再关闭链路,该链路会开始慢宕。
本命令仅对下一次shutdown命令生效。比如:开启慢宕功能并关闭链路之后,如果再关闭慢宕功能,则该链路将保持慢宕状态,而不会立即中断已有连接。
表2-20 配置慢宕功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入链路视图 |
loadbalance link link-name |
- |
开启链路的慢宕功能 |
slow-shutdown enable |
缺省情况下,链路的慢宕功能处于关闭状态 |
关闭链路 |
shutdown |
缺省情况下,链路处于开启状态 |
通过本配置可以调整就近性计算的链路成本。
表2-21 配置就近性计算成本
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入链路视图 |
loadbalance link link-name |
- |
配置就近性计算的链路成本 |
cost cost-value |
缺省情况下,就近性计算的链路成本为0 |
通过本配置可以调整链路的带宽繁忙比,即当前带宽与最大带宽的百分比值,以及最大期望带宽。当访问某个链路的链路流量超过该链路的带宽繁忙比与最大期望带宽的乘积后,链路进入繁忙状态,新建流量(非匹配持续性的流量)将不再向该链路分发,而原有流量则仍由该链路继续分发;当该链路流量低于该链路的带宽繁忙恢复比与最大期望带宽的乘积后,链路解除繁忙状态,进入空闲状态,重新参与调度。
链路的最大期望带宽不仅用于繁忙保护功能,还用于带宽算法、最大带宽算法和就近性中剩余带宽的计算。
表2-22 配置链路的带宽繁忙比与最大期望带宽
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入链路视图 |
loadbalance link link-name |
- |
配置链路的带宽繁忙比 |
bandwidth [ inbound | outbound ] busy-rate busy-rate-number [ recovery recovery-rate-number ] |
缺省情况下,链路的总带宽繁忙比为70 |
配置链路最大期望带宽 |
max-bandwidth [ inbound | outbound ] bandwidth-value |
缺省情况下,链路所允许的期望最大总带宽、最大上行期望带宽和最大下行期望带宽均为0千字节/秒,即不限制 |
虚服务器是负载均衡设备上面向用户业务的虚拟载体,是为了判断是否需要对进入负载均衡设备的报文进行负载均衡而引入的概念。只有匹配上虚服务器的报文才会被进行负载均衡处理。
链路负载均衡支持的虚服务器类型为LINK-IP。
表2-23 配置任务简介
配置任务 |
说明 |
详细配置 |
创建虚服务器 |
必选 |
|
配置VSIP和端口号 |
必选 |
|
指定链路组 |
至少选其一 如果同时配置,报文会被优先交给负载均衡策略处理,当负载均衡策略无法处理时才交给链路组处理 |
|
引用负载均衡策略 |
||
引用参数模板 |
可选 |
|
配置带宽和连接参数 |
可选 |
|
配置带宽繁忙保护功能 |
可选 |
|
开启链路的接口带宽统计功能 |
可选 |
|
开启虚服务器 |
必选 |
表2-24 创建虚服务器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建Link-IP类型的虚服务器,并进入虚服务器视图 |
virtual-server virtual-server-name type link-ip |
缺省情况下,不存在任何虚服务器 |
(可选)配置虚服务器的描述信息 |
description text |
缺省情况下,虚服务器没有描述信息 |
表2-25 配置VSIP和端口号
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入LINK-IP类型的虚服务器视图 |
virtual-server virtual-server-name |
- |
配置虚服务器的IPv4地址 |
virtual ip address ipv4-address [ mask-length | mask ] |
二者选其一 缺省情况下,虚服务器没有IP地址 |
配置虚服务器的IPv6地址 |
virtual ipv6 address ipv6-address [ prefix-length ] |
|
配置虚服务器的端口号 |
port port-number |
缺省情况下,LINK-IP类型虚服务器的端口号为0(表示任意端口号) |
当主用链路组可用(该链路组存在且有可用的链路)时,虚服务器通过主用链路组进行转发;当主用链路组不可用而备用链路组可用时,虚服务器通过备用链路组进行转发。
表2-26 指定链路组
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入虚服务器视图 |
virtual-server virtual-server-name |
- |
指定链路组 |
default link-group link-group-name [ backup backup-link-group-name ] [ sticky sticky-name ] |
缺省情况下,未指定链路组 |
虚服务器引用负载均衡策略,能够细化虚服务器负载均衡的粒度。根据策略中的匹配规则,使命中虚服务器的报文根据不同的报文内容进行不同的负载均衡处理,从而有效地丰富了负载均衡的负载功能。
表2-27 引用负载均衡策略
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入虚服务器视图 |
virtual-server virtual-server-name |
- |
指定虚服务器引用的负载均衡策略 |
lb-policy policy-name |
缺省情况下,虚服务器没有引用任何负载均衡策略 虚服务器只能引用与自身类型相关的策略模板,如: LINK-IP类型的虚服务器,只能引用Link-generic类型的策略模板 |
参数模板用来对虚服务器上的流量进行比较深入的解析、处理和优化。虚服务器引用了参数模板后,就要根据该参数模板的配置对匹配流量进行相应的处理。
表2-28 引用参数模板
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入虚服务器视图 |
virtual-server virtual-server-name |
- |
指定虚服务器引用的参数模板 |
parameter ip profile-name |
缺省情况下,虚服务器没有引用任何参数模板 |
表2-29 配置带宽和连接参数
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入虚服务器视图 |
virtual-server virtual-server-name |
- |
配置虚服务器所允许的最大带宽 |
rate-limit bandwidth [ inbound | outbound ] bandwidth-value |
缺省情况下,虚服务器所允许的最大总带宽、最大入带宽和最大出带宽均为0千字节/秒,即不受限制 |
配置虚服务器所允许的最大连接数 |
connection-limit max max-number |
缺省情况下,虚服务器所允许的最大连接数为0,即不受限制 |
配置虚服务器所允许的最大连接速率 |
rate-limit connection connection-number |
缺省情况下,虚服务器所允许的最大连接速率为0,即不受限制 |
带宽繁忙保护功能就是对链路的带宽繁忙比进行限制。当流量超过某条链路的带宽繁忙比后,新建流量(非匹配持续性的流量)将不再向该链路分发,而原有流量则仍由该链路继续分发。
带宽繁忙保护功能仅在链路的接口带宽统计功能开启的情况下生效。
表2-30 配置带宽繁忙保护功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入虚服务器视图 |
virtual-server virtual-server-name |
- |
开启虚链路的带宽繁忙保护功能 |
bandwidth busy-protection enable |
缺省情况下,链路的带宽繁忙保护功能处于关闭状态 |
链路的带宽缺省由负载均衡模块自行统计,通过本配置可以使链路的带宽由接口来统计。
表2-31 开启链路的接口带宽统计功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入虚服务器视图 |
virtual-server vritual-server-name |
- |
开启链路的接口带宽统计功能 |
bandwidth interface statistics enable |
缺省情况下,未开启链路的接口带宽统计功能 |
配置完虚服务器后,需要将其开启后才能进入工作状态。
表2-32 开启虚服务器
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入虚服务器视图 |
virtual-server virtual-server-name |
- |
开启虚服务器 |
service enable |
缺省情况下,虚服务器处于关闭状态 |
负载均衡类的作用是将报文分类,即通过匹配规则将报文按照一定条件进行匹配,以便将不同类型的报文在不同的负载均衡动作流程中处理。一个负载均衡类中最多允许创建65535条匹配规则。
表2-33 配置任务简介
配置任务 |
说明 |
详细配置 |
|
创建负载均衡类 |
必选 |
||
创建匹配规则 |
创建嵌套类的匹配规则 |
至少选其一 |
|
创建源IP地址类型的匹配规则 |
|||
创建目的IP地址类型的匹配规则 |
|||
创建ACL类型的匹配规则 |
|||
创建域名类型的匹配规则 |
|||
创建ISP类型的匹配规则 |
|||
创建应用类型的匹配规则 |
表2-34 创建负载均衡类
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建Link-generic负载均衡类,并进入负载均衡类视图 |
loadbalance class class-name type link-generic [ match-all | match-any ] |
缺省情况下,不存在任何负载均衡类 创建负载均衡类时必须为其指定类型;而在进入已创建的负载均衡类视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致 |
(可选)配置负载均衡类的描述信息 |
description text |
缺省情况下,负载均衡类没有描述信息 |
表2-35 创建嵌套类的匹配规则
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入负载均衡类视图 |
loadbalance class class-name |
- |
创建嵌套类的匹配规则 |
match [ match-id ] class class-name |
缺省情况下,负载均衡类中不存在任何匹配规则 |
表2-36 创建源IP地址类型的匹配规则
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入负载均衡类视图 |
loadbalance class class-name |
- |
创建源IP地址类型的匹配规则 |
match [ match-id ] source { ip address ipv4-address [ mask-length | mask ] | ipv6 address ipv6-address [ prefix-length ] } |
缺省情况下,负载均衡类中不存在任何匹配规则 |
表2-37 创建目的IP地址类型的匹配规则
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入负载均衡类视图 |
loadbalance class class-name |
- |
创建目的IP地址类型的匹配规则 |
match [ match-id ] destination { ip address ipv4-address [ mask-length | mask ] | ipv6 address ipv6-address [ prefix-length ] } |
缺省情况下,负载均衡类中不存在匹配规则 |
表2-38 创建ACL类型的匹配规则
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入负载均衡类视图 |
loadbalance class class-name |
- |
创建ACL类型的匹配规则 |
match [ match-id ] acl [ ipv6 ] { acl-number | name acl-name } |
缺省情况下,负载均衡类中不存在任何匹配规则 |
负载均衡设备会将域名与IP地址的对应关系记录在DNS缓存表中,当业务流量匹配DNS缓存表中的IP地址时,查找出对应的域名。若查找出的域名与匹配规则中的域名一致,则根据匹配规则将匹配不同域名的报文在不同的负载均衡动作流程中处理。
表2-39 创建域名类型的匹配规则
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入负载均衡类视图 |
loadbalance class class-name |
- |
创建域名类型的匹配规则 |
match [ match-id ] destination domain-name domain-name |
缺省情况下,负载均衡类中不存在匹配规则 |
表2-40 创建ISP类型的匹配规则
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入负载均衡类视图 |
loadbalance class class-name |
- |
创建ISP类型的匹配规则 |
match [match-id ] isp isp-name |
缺省情况下,负载均衡类中不存在任何匹配规则 |
表2-41 创建应用类型的匹配规则
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入负载均衡类视图 |
loadbalance class class-name |
- |
创建应用类型的匹配规则 |
match [ match-id ] app-group group-name |
缺省情况下,负载均衡类中不存在任何匹配规则 |
负载均衡动作可分为两大类:
· 转发类动作:确定是否转发以及如何转发报文。如果没有配置转发类动作,报文将被丢弃处理。
· 修改类动作:对报文执行一些修改行为。修改类动作应配合转发类动作使用,否则修改后的报文终将被丢弃。
如果用户想对报文进行丢弃处理,则可在创建负载均衡动作后,不为其指定任何上述动作。
表2-42 配置任务简介
配置任务 |
说明 |
详细配置 |
|
创建负载均衡动作 |
必选 |
||
配置转发类动作 |
配置报文的转发模式为转发 |
可选其一 这两条命令互斥,当配置了其中一条后,另一条的配置将被自动取消 |
|
指定指导转发的链路组 |
|||
配置查找可用链路失败时继续匹配下一条引用规则 |
可选 |
||
配置修改类动作 |
配置发往服务器的IP报文中的ToS字段 |
可选 |
表2-43 创建负载均衡动作
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建Link-generic类型的负载均衡动作,并进入负载均衡动作视图 |
loadbalance action action-name type link-generic |
缺省情况下,不存在任何负载均衡动作 创建负载均衡动作时必须为其指定类型;而在进入已创建的负载均衡动作视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致 |
(可选)配置负载均衡动作的描述信息 |
description text |
缺省情况下,负载均衡动作没有描述信息 |
设备支持配置三种转发类动作,包括:
· 报文的转发模式为转发:当配置本功能的动作在负载均衡策略中被引用时,直接对匹配当前策略的报文进行转发。
· 指定指导转发的链路组:当主用链路组可用(该链路组存在且有可用的链路)时,使用主用链路组指导转发;当主用链路组不可用而备用链路组可用时,使用备用链路组指导转发。
· 查找链路失败时继续匹配下一条引用规则:当配置该命令的动作在策略中被引用时,在转发中根据该配置判断当前动作查找可用链路失败时,可继续顺序匹配策略中的下一条引用规则。
表2-44 配置报文的转发模式为转发
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入负载均衡动作视图 |
loadbalance action action-name |
- |
配置报文的转发模式为转发 |
forward all |
缺省情况下,报文转发模式为丢弃 |
表2-45 指定指导转发的链路组
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入负载均衡动作视图 |
loadbalance action action-name |
- |
指定指导转发的链路组 |
link-group link-group-name [ backup backup-link-group-name ] [ sticky sticky-name ] |
缺省情况下,没有指定指导转发的链路组 |
表2-46 配置查找链路失败时继续匹配下一条引用规则
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入负载均衡动作视图 |
loadbalance action action-name |
- |
配置查找链路失败时继续匹配下一条引用规则 |
fallback-action continue |
缺省情况下,根据当前动作查找可用链路失败时,不再继续匹配下一条引用规则 |
表2-47 配置发往服务器的IP报文中的ToS字段
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入负载均衡动作视图 |
loadbalance action action-name |
- |
配置发往服务器的IP报文中的ToS字段 |
set ip tos tos-number |
缺省情况下,不改变发往服务器的IP报文中的ToS字段 |
将负载均衡类和负载均衡动作关联起来就构成了负载均衡策略。负载均衡策略是指导报文转发的一种方式,用户可以为匹配特定负载均衡类的报文指定执行的负载均衡动作,以及为未匹配任何负载均衡类的报文指定缺省负载均衡动作。
用户可以在一个负载均衡策略中指定多个负载均衡类,转发报文时会按照配置顺序来匹配负载均衡类,匹配成功则执行相应的负载均衡动作,否则继续匹配下一条负载均衡类。如果所有负载均衡类均未匹配,则执行缺省负载均衡动作。
表2-48 配置任务简介
配置任务 |
说明 |
详细配置 |
创建负载均衡策略 |
必选 |
|
指定负载均衡动作 |
必选 |
|
指定缺省负载均衡动作 |
必选 |
表2-49 创建负载均衡策略
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建Link-generic类型的负载均衡策略,并进入负载均衡策略视图 |
loadbalance policy policy-name type link-generic |
缺省情况下,不存在任何负载均衡策略 创建负载均衡策略时必须为其指定类型;而在进入已创建的负载均衡策略视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致 |
(可选)配置负载均衡策略的描述信息 |
description text |
缺省情况下,负载均衡策略没有描述信息 |
Link-generic类型的负载均衡策略只能引用Link-generic类型的负载均衡类和动作。
表2-50 指定负载均衡动作
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入负载均衡策略视图 |
loadbalance policy policy-name |
- |
为负载均衡类指定负载均衡动作 |
class class-name [ insert-before before-class-name ] action action-name |
缺省情况下,没有为任何负载均衡类指定负载均衡动作 不同的负载均衡类可以与同一负载均衡动作组成匹配规则 |
Link-generic类型的负载均衡策略只能用Link-generic类型的负载均衡动作作为其缺省动作。
表2-51 指定缺省负载均衡动作
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入负载均衡策略视图 |
loadbalance policy policy-name |
- |
指定缺省负载均衡动作 |
default-class action action-name |
缺省情况下,未指定缺省负载均衡动作 |
持续性组的作用是根据某持续性方法将具有一定相关性的会话都分配给同一链路处理,这个分配规则就称为持续性表项。在一个会话中,当其首包通过持续性方法选择了同一链路之后,后续包都会沿用这个选择结果。
表2-52 配置任务简介
配置任务 |
说明 |
详细配置 |
创建持续性组 |
必选 |
|
配置IP持续性方法 |
必选 |
|
配置持续性表项超时时间 |
可选 |
|
开启匹配持续性表项的会话不受连接数限制影响功能 |
可选 |
表2-53 创建持续性组
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建地址端口类型的持续性组,并进入持续性组视图 |
sticky-group group-name type address-port |
缺省情况下,不存在任何持续性组 创建持续性组时必须为其指定类型;而在进入已创建的持续性组视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致 |
(可选)配置持续性组的描述信息 |
description text |
缺省情况下,持续性组没有描述信息 |
表2-54 配置IP持续性方法
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入持续性组视图 |
sticky-group group-name |
- |
配置IPv4持续性方法 |
ip [ port ] { both | destination | source } [ mask mask-length ] |
二者选其一 缺省情况下,不存在任何持续性方法 |
配置IPv6持续性方法 |
ipv6 [ port ] { both | destination | source } [ prefix prefix-length ] |
表2-55 配置持续性表项超时时间
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入持续性组视图 |
sticky-group group-name |
- |
配置持续性表项的超时时间 |
timeout timeout-value |
缺省情况下,对于HTTP Cookie类型的持续性组,持续性表项的超时时间为86400秒;对于其它类型的持续性组,持续性表项的超时时间为60秒 |
开启该功能后,如果该连接匹配了已有的持续性表项,将不受链路带宽及连接参数的影响,也不受虚服务器上引用的负载均衡策略连接数限制的影响。
表2-56 开启匹配持续性表项的会话不受连接数限制影响功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入持续性组视图 |
sticky-group group-name |
- |
开启匹配持续性表项的会话不受连接数限制影响功能 |
override-limit enable |
缺省情况下,匹配持续性表项的会话受连接数限制配置的影响 |
通过配置参数模板可以制订对报文进行更深入处理的模板。这样,当参数模板被虚服务器引用之后,可以对虚服务器的业务流量进行更深入的解析、处理和优化。
表2-57 创建参数模板
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建IP类型的参数模板,并进入参数模板视图 |
parameter-profile profile-name type ip |
缺省情况下,不存在任何参数模板 创建参数模板时必须为其指定类型;而在进入已创建的参数模板视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致 |
(可选)配置参数模板的描述信息 |
description text |
缺省情况下,参数模板没有描述信息 |
表2-58 配置发往客户端的IP报文中的ToS字段
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入IP类型的参数模板视图 |
parameter-profile profile-name |
- |
配置发往客户端的IP报文中的ToS字段 |
set ip tos tos-number |
缺省情况下,不改变发往客户端的IP报文中的ToS字段 |
ISP是根据ICANN(Internet Corporation for Assigned Names and Numbers,互联网域名和地址分配公司)的地址分配结果进行静态分配。ISP作为一种分流策略,可以在负载均衡类的ISP类型匹配规则中进行引用。目的地址匹配ISP后,可根据相应的链路组选择合适的链路。
配置ISP信息分为手工配置ISP信息和导入ISP文件,二者既可单独使用,也可结合使用。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建ISP,并进入ISP视图 |
loadbalance isp name isp-name |
缺省情况下,不存在任何ISP |
为ISP配置IPv4地址信息 |
ip address ipv4-address { mask-length | mask } |
二者至少选其一 缺省情况下,ISP没有IPv4/IPv6地址信息 同一ISP中不允许配置完全相同的网段 |
为ISP配置IPv6地址信息 |
ipv6 address ipv6-address prefix-length |
|
(可选)配置ISP的描述信息 |
description text |
缺省情况下,ISP没有描述信息 |
表2-60 导入ISP文件
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
导入ISP文件 |
loadbalance isp file isp-file-name |
- |
负载均衡ALG(Application Level Gateway,应用层网关)功能用于将父、子会话分发到同一条链路上。
表2-61 配置负载均衡ALG功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
开启指定协议的负载均衡ALG功能 |
loadbalance alg { dns | ftp | h323 | icmp-error | ils | mgcp | nbt | pptp | rsh | rtsp | sccp | sip | sqlnet | tftp | xdmcp } |
缺省情况下,ftp、dns、pptp、rtsp和icmp-error协议的负载均衡ALG功能均处于开启状态 |
开启所有协议的负载均衡ALG功能 |
loadbalance alg all-enable |
用户可以通过指定报文的协议类型、源IPv4/IPv6地址、源端口、目的IPv4/IPv6地址和目的端口,测试报文的负载均衡效果。
表2-62 测试负载均衡效果
操作 |
命令 |
说明 |
测试IPv4负载均衡的效果 |
loadbalance schedule-test ip { protocol { protocol-number | icmp | tcp | udp } } destination destination-address destination-port destination-port source source-address source-port source-port |
本命令可在任意视图下执行 |
测试IPv6负载均衡的效果 |
loadbalance schedule-test ipv6 { protocol { protocol-number | icmpv6 | tcp | udp } } destination destination-address destination-port destination-port source source-address source-port source-port |
本命令可在任意视图下执行 |
开启了负载均衡的告警功能之后,负载均衡会生成告警信息,以向网管软件报告本模块的重要事件。该信息将发送至SNMP模块,通过设置SNMP中告警信息的发送参数,来决定告警信息输出的相关属性。有关告警信息的详细介绍,请参见“网络管理和监控配置指导”中的“SNMP”。
表2-63 配置负载均衡告警功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
开启负载均衡的告警功能 |
snmp-agent trap enable loadbalance |
缺省情况下,负载均衡的告警功能处于开启状态 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后出方向链路负载均衡的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除出方向链路负载均衡的统计信息。
表2-64 链路负载均衡显示和维护
配置 |
命令 |
显示负载均衡动作的信息 |
display loadbalance action [ name action-name ] |
显示负载均衡类的信息 |
display loadbalance class [ name class-name ] |
显示ISP的信息 |
display loadbalance isp [ ip ipv4-address | ipv6 ipv6-address | name isp-name ] |
显示负载均衡策略的信息 |
display loadbalance policy [ name policy-name ] |
显示就近性表项的信息 |
display loadbalance proximity [ ip [ ipv4-address ] | ipv6 [ ipv6-address ] ] |
显示参数模板的信息 |
display parameter-profile [ name parameter-name ] |
显示链路的信息 |
display loadbalance link [ brief | name link-name ] |
显示链路的统计信息 |
display loadbalance link statistics [ name link-name ] |
显示链路出接口的统计信息 |
display loadbalance link out-interface statistics [ name link-name ] |
显示链路组的信息 |
display loadbalance link-group [ brief | name link-group-name ] |
显示持续性表项的信息 |
display sticky [ virtual-server virtual-server-name [ class class-name | default-class | default-link-group ] ] |
显示持续性组的信息 |
display sticky-group [ name group-name ] |
显示虚服务器的信息 |
display virtual-server [ brief | name virtual-server-name ] |
显示虚服务器的统计信息 |
display virtual-server statistics [ name virtual-server-name ] |
显示所有协议的负载均衡ALG状态 |
|
显示DNS缓存信息 |
display loadbalance dns-cache [ domain-name domain-name ] |
清除就近性表项的信息 |
reset loadbalance proximity [ ip [ ipv4-address ] | ipv6 [ ipv6-address ] ] |
清除负载均衡下的所有七层连接 |
reset loadbalance connections |
清除链路的统计信息 |
reset loadbalance link statistics [ link-name ] |
清除虚服务器的统计信息 |
reset virtual-server statistics [ virtual-server-name ] |
用户从两个运营商ISP 1和ISP 2处分别租用了链路Link 1和Link 2,这两条链路的路由器跳数、带宽和成本均相同,但Link 1的网络延迟小于Link 2。通过配置链路负载均衡,使Client访问Server时优先选择这两条链路中的最优链路。
图2-4 出方向链路负载均衡配置组网图
(1) 配置接口IP地址
<AC> system-view
[AC] interface gigabitethernet 1/0/1
[AC-GigabitEthernet1/0/1] ip address 10.1.1.1 24
[AC-GigabitEthernet1/0/1] quit
[AC] interface gigabitethernet 1/0/2
[AC-GigabitEthernet1/0/2] ip address 20.1.1.1 24
[AC-GigabitEthernet1/0/2] quit
(2) 配置链路组
# 创建ICMP类型的NQA模板t1,并配置每次探测结果发送机制。
[AC] nqa template icmp t1
[AC-nqatplt-icmp-t1] reaction trigger per-probe
[AC-nqatplt-icmp-t1] quit
# 指定缺省就近性探测方法为t1,并配置就近性计算的网络延迟权值为200。
[AC] loadbalance proximity
[AC-lb-proximity] match default probe t1
[AC-lb-proximity] rtt weight 200
[AC-lb-proximity] quit
# 创建链路组lg,并开启就近性功能。
[AC] loadbalance link-group lg
[AC-lb-lgroup-lg] proximity enable
# 关闭NAT功能。
[AC-lb-lgroup-lg] transparent enable
[AC-lb-lgroup-lg] quit
(3) 配置链路
# 创建链路link1,配置其下一跳IPv4地址为10.1.1.2,并加入链路组lg。
[AC] loadbalance link link1
[AC-lb-link-link1] router ip 10.1.1.2
[AC-lb-link-link1] link-group lg
[AC-lb-link-link1] quit
# 创建链路link2,配置其下一跳IPv4地址为20.1.1.2,并加入链路组lg。
[AC] loadbalance link link2
[AC-lb-link-link2] router ip 20.1.1.2
[AC-lb-link-link2] link-group lg
[AC-lb-link-link2] quit
(4) 配置虚服务器
# 创建LINK-IP类型的虚服务器vs,配置其VSIP为通配0.0.0.0/0,指定其缺省主用链路组为lg,并开启此虚服务器。
[AC] virtual-server vs type link-ip
[AC-vs-link-ip-vs] virtual ip address 0.0.0.0 0
[AC-vs-link-ip-vs] default link-group lg
[AC-vs-link-ip-vs] service enable
[AC-vs-link-ip-vs] quit
# 显示所有链路的简要信息。
[AC] display loadbalance link brief
Link Route IP State VPN instance Link group
link1 10.1.1.2 Active lg
link2 20.1.1.2 Active lg
# 显示所有链路组的详细信息。
[AC] display loadbalance link-group
Link group: lg
Description:
Predictor: Round robin
Proximity: Enabled
NAT: Disabled
SNAT pool:
Failed action: Keep
Active threshold: Disabled
Slow-online: Disabled
Selected link: Disabled
Probe information:
Probe success criteria: All
Probe method:
t1
Total link: 2
Active link: 2
Link list:
Name State VPN instance Router IP Weight Priority
link1 Active 10.1.1.2 100 4
link2 Active 20.1.1.2 100 4
# 显示所有虚服务器的详细信息。
[AC] display virtual-server
Virtual server: vs
Description:
Type: LINK-IP
State: Active
VPN instance:
Virtual IPv4 address: 0.0.0.0/0
Virtual IPv6 address: --
Port: 0
Primary link group: lg (in use)
Backup link group:
Sticky:
LB policy:
LB limit-policy:
Connection limit: --
Rate limit:
Connections: --
Bandwidth: --
Inbound bandwidth: --
Outbound bandwidth: --
Connection synchronization: Disabled
Sticky synchronization: Disabled
Bandwidth busy protection: Disabled
Interface bandwidth statistics: Disabled
Route advertisement: Disabled
# 显示所有IPv4就近性表项的简要信息。
[AC] display loadbalance proximity ip
(*) - Real server object
Slot 1:
IPv4 address/Mask length Timeout Best link
------------------------------------------------------------
10.1.0.0/24 50 link1
如图3-1所示,企业内网用户可以通过运营商ISP 1的链路Link 1和ISP 2的链路Link 2分别访问提供相同网络服务的外网服务器External server A和External server B。企业内网用户通过域名访问外网服务器时,内网用户的所有DNS请求报文会发往同一DNS服务器。DNS服务器收到DNS请求报文后,将其解析为同一运营商网络内外网服务器的IP地址,这将使内网用户的所有流量都通过一条链路转发,导致一条链路拥塞,而其他链路闲置。
DNS透明代理功能可以有效解决由于客户端DNS服务器的配置导致流量分配不均的问题。通过DNS透明代理功能可以使DNS请求报文发往不同运营商网络内的DNS服务器,从而使内网用户访问外网服务器的流量较为均匀地分配到多条链路上,提高流量转发效率,提升服务质量;可以避免出现一条链路拥塞而其他链路闲置的情况;也可以在某条链路出现故障时,使用其他链路来访问外网服务器,避免因链路故障导致访问失败。
图3-1 DNS透明代理原理图
DNS透明代理功能是通过改变DNS请求报文的目的地址实现的。具体工作流程如图3-2所示。
图3-2 DNS透明代理工作流程图
DNS透明代理工作流程简述如表3-1所示。
表3-1 DNS透明代理工作流程简述
步骤 |
描述 |
源IP地址 |
目的IP地址 |
(1) |
内网用户向负载均衡设备发送DNS请求报文 |
Host IP |
DNS server A's IP |
(2) |
负载均衡设备收到DNS请求报文后根据调度算法选出应将此请求分发给哪台DNS服务器 |
- |
- |
(3) |
负载均衡设备将DNS请求报文的目的IP地址修改为选定的DNS服务器的IP地址 |
Host IP |
DNS server IP |
(4) |
DNS服务器接收并处理DNS请求报文,返回DNS应答报文 |
DNS server IP |
Host IP |
(5) |
负载均衡设备收到DNS应答报文后,将其源IP地址修改为DNS请求报文中的的目的IP地址后转发给内网用户 |
DNS server A's IP |
Host IP |
(6) |
内网用户根据DNS应答报文中的IP地址访问外网服务器 |
Host IP |
External server |
(7) |
外网服务器应答内网用户 |
External server |
Host IP |
负载均衡设备通过改变DNS请求报文的目的地址控制访问流量在多条链路上的转发,为内网用户访问外网服务器选择最佳链路。
如图3-3所示,负载均衡设备上包括以下要素:
· DNS proxy:DNS透明代理。只有当DNS请求的端口号匹配DNS透明代理的端口号时,负载均衡设备才对收到的DNS请求报文进行DNS透明代理。
· DNS server pool:DNS服务器池。DNS服务器的集合。
· DNS server:DNS服务器。处理用户DNS请求报文的实体。
· Link:运营商提供的实体链路。
· LB class:负载均衡类。将报文分类,以便对不同类型的报文执行不同的负载均衡动作。
· LB action:负载均衡动作。制定丢弃、转发或修改报文的具体行为。
· LB policy:负载均衡策略。将负载均衡类和负载均衡动作关联起来就构成了负载均衡策略。负载均衡策略可被DNS透明代理引用。
当收到DNS请求的目的地址和端口号均匹配DNS透明代理的IP地址和端口号时,负载均衡设备会对DNS请求报文进行DNS透明代理。首先在DNS透明代理中查找关联的DNS服务器池。再依据池中配置的调度算法选出应将DNS请求分发给哪台DNS服务器。负载均衡设备将选定DNS服务器的IP地址作为目的地址发送DNS请求报文,DNS服务器接收并处理DNS请求报文,将其解析为同网络内外网服务器的IP地址,并返回DNS应答报文。内网用户收到应答报文后,就可以访问该外网服务器了。
表3-2 DNS透明代理配置任务简介
配置任务 |
说明 |
详细配置 |
配置DNS透明代理 |
必选 |
|
配置DNS服务器池 |
必选 |
|
配置DNS服务器 |
必选 |
|
配置链路 |
必选 |
|
配置负载均衡类 |
可选 |
|
配置负载均衡动作 |
可选 |
|
配置负载均衡策略 |
可选 |
|
配置持续性组 |
可选 |
通过配置DNS透明代理,负载均衡可以对匹配上DNS透明代理的DNS请求报文进行负载均衡处理。
表3-3 配置任务简介
配置任务 |
说明 |
详细配置 |
创建DNS透明代理 |
必选 |
|
配置DNS透明代理的IP地址和端口号 |
必选 |
|
指定DNS服务器池 |
至少选其一 如果同时配置,DNS报文会被优先交给负载均衡策略处理,当匹配负载均衡策略失败时才交给DNS服务器池处理 |
|
引用负载均衡策略 |
||
开启带宽繁忙保护功能 |
可选 |
|
开启DNS透明代理功能 |
必选 |
表3-4 创建DNS透明代理
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建DNS透明代理,并进入DNS透明代理视图 |
loadbalance dns-proxy dns-proxy-name type udp |
缺省情况下,不存在DNS透明代理 |
在同时配置DNS透明代理功能和服务器负载均衡功能的情况下,为了使DNS透明代理功能正常使用,请避免将DNS透明代理的IP地址和端口号与UDP类型的虚服务器配置为同一IP地址和端口号。
建议将DNS透明代理的IP地址配置为全0地址,即对所有的DNS请求报文均进行DNS透明代理处理。
表3-5 配置DNS透明代理的IP地址和端口号
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入DNS透明代理视图 |
loadbalance dns-proxy dns-proxy-name |
- |
配置DNS透明代理的IPv4地址 |
ip address ipv4-address [ mask-length | mask ] |
二者选其一 缺省情况下,未配置DNS透明代理的IP地址 |
配置DNS透明代理的IPv6地址 |
ipv6 address ipv6-address [ prefix-length ] |
|
配置DNS透明代理的端口号 |
port port-number |
缺省情况下,DNS透明代理的端口号为53 |
表3-6 指定DNS服务器池
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入DNS透明代理视图 |
loadbalance dns-proxy dns-proxy-name |
- |
指定DNS透明代理引用的缺省DNS服务器池 |
default dns-server-pool pool-name [ sticky sticky-name ] |
缺省情况下,未指定DNS透明代理引用的缺省DNS服务器池 |
通过在DNS透明代理视图下引用负载均衡策略,能够细化DNS请求的粒度。根据策略中的负载均衡类,对不同的报文内容进行不同的负载均衡动作处理,从而有效地丰富了DNS透明代理的负载功能,实现对链路带宽资源的合理利用。有关负载均衡策略的详细配置,请参见“3.9 配置负载均衡策略”。
表3-7 引用负载均衡策略
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入DNS透明代理视图 |
loadbalance dns-proxy dns-proxy-name |
- |
指定DNS透明代理引用的负载均衡策略 |
lb-policy policy-name |
缺省情况下,DNS透明代理未引用负载均衡策略 |
带宽繁忙保护功能就是对DNS服务器对应链路的带宽繁忙比进行限制。当流量超过某条链路的带宽繁忙比(当前带宽与最大带宽的百分比)后,新建流量将不再向该链路分发,而原有流量则仍由该链路继续分发。开启带宽繁忙保护功能后,DNS透明代理设备选择DNS服务器时,会检查DNS服务器使用的链路的带宽繁忙比是否超过配置的带宽繁忙比,如果超出则不选择该DNS服务器。
当DNS服务器池中的所有DNS服务器对应的链路都达到了带宽繁忙比例时,带宽繁忙保护功能自动失效;只要此DNS服务器池中有任何一个DNS服务器对应链路恢复到配置的带宽繁忙比例以下,则该DNS服务器重新参与调度,带宽繁忙保护功能自动生效。有关链路带宽繁忙比的详细配置,请参见“3.6.6 配置链路的带宽繁忙比与最大期望带宽”。
表3-8 配置带宽繁忙保护功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入DNS透明代理视图 |
loadbalance dns-proxy dns-proxy-name |
- |
开启DNS服务器对应链路的带宽繁忙保护功能 |
bandwidth busy-protection enable |
缺省情况下,DNS服务器对应的链路带宽繁忙保护功能处于关闭状态 |
配置完DNS透明代理后,需要将其开启后才能进入工作状态。
表3-9 开启DNS透明代理功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入DNS透明代理视图 |
loadbalance dns-proxy dns-proxy-name |
- |
开启DNS透明代理功能 |
service enable |
缺省情况下,DNS透明代理功能处于关闭状态 |
通过配置DNS服务池,可对具有相同或相似功能的DNS服务器进行统一管理。
表3-10 创建DNS服务器池
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建DNS服务器池,并进入DNS服务器池视图 |
loadbalance dns-server-pool pool-name |
缺省情况下,不存在DNS服务器池 |
(可选)配置DNS服务器池的描述信息 |
description text |
缺省情况下,DNS服务器池未配置描述信息 |
负载均衡设备根据DNS服务器池的调度算法,计算出处理用户DNS请求的DNS服务器。设备支持以下几种调度算法:
· 源IP哈希算法:对DNS请求的源IP地址进行哈希运算,依据生成的哈希值决定将DNS请求分发给哪台DNS服务器。该算法可实现将来自相同源IP地址的DNS请求发往同一台DNS服务器进行处理。
· 源IP及端口哈希算法:对DNS请求的源IP地址和端口号共同进行哈希运算,依据生成的哈希值决定将DNS请求发往哪台DNS服务器。该算法可实现将源IP地址和端口号均相同的DNS请求发往同一台DNS服务器进行处理。
· 目的IP哈希算法:对DNS请求的目的IP地址进行哈希运算,依据生成的哈希值决定将DNS请求发往哪台DNS服务器。该算法可实现将目的IP地址相同的DNS请求发往同一台DNS服务器进行处理。
· 随机算法:将DNS请求报文随机分发给某台DNS服务器。
· 加权轮转算法:用户可根据DNS服务器性能的不同,为其分配不同的权值。加权轮转算法根据权值的大小将DNS请求依次分发给每台DNS服务器。例如,DNS服务器Server A和Server B的权值为2和1,按照加权轮转调度算法,负载均衡设备会连续分配两条DNS请求给Server A,再分配DNS请求给Server B。该算法适用于服务器业务处理能力不同,而每一条会话对服务器的负载大致相同的场景。
· 带宽算法:根据DNS服务器的权值与剩余带宽的比例把DNS请求分发给每台DNS服务器。当剩余带宽相同时,该算法等价于加权轮转算法;当DNS服务器权值相同时,总是将用户请求分发给剩余带宽最大的链路所对应的DNS服务器;当DNS服务器权值和剩余带宽均不相同时,两者共同决定DNS服务器的调度。
· 最大带宽算法:总是将DNS请求分发给处于空闲状态且剩余带宽最大的链路所对应的DNS服务器。
表3-11 配置DNS服务器池的调度算法
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入DNS服务器池视图 |
loadbalance dns-server-pool pool-name |
- |
配置DNS服务池的调度算法 |
predictor { random | round-robin | { bandwidth | max-bandwidth } [ inbound | outbound ] } |
缺省情况下,DNS服务器池的调度算法为加权轮转算法 |
配置DNS服务器池可被调度算法调用的DNS服务器数量限制 |
缺省情况下,DNS服务器池中调用优先级最高的DNS服务器全部被调度算法调用 |
通过健康检测可以对DNS服务器进行检测,保证其能够提供有效的服务。
用户既可在DNS服务器池视图下对池内的所有DNS服务器进行配置,也可在DNS服务器视图下只对当前DNS服务器进行配置,后者的配置优先级较高。
表3-12 配置健康检测功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入DNS服务器池视图 |
loadbalance dns-server-pool pool-name |
- |
指定DNS服务器池的健康检测方法 |
probe template-name |
缺省情况下,未指定DNS服务器池的健康检测方法 |
配置DNS服务器池健康检测的成功条件 |
success-criteria { all | at-least min-number } |
缺省情况下,只有全部方法都通过检测才认为健康检测成功 |
通过配置DNS服务器,指定负载均衡设备上处理和响应DNS请求报文的实体。此处配置的DNS服务器对应于运营商网络内的DNS服务器。一个DNS服务器只能属于一个DNS服务器池,而一个DNS服务器池可以包含多个DNS服务器。
表3-13 配置任务简介
配置任务 |
说明 |
详细配置 |
创建DNS服务器并指定其所属DNS服务器池 |
必选 |
|
配置DNS服务器的IP地址和端口 |
必选 |
|
指定与DNS服务器关联的链路 |
必选 |
|
配置权值和调用优先级 |
可选 |
|
配置健康检测功能 |
可选 |
表3-14 创建DNS服务器并指定其所属DNS服务器池
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建DNS服务器,并进入DNS服务器视图 |
loadbalance dns-server dns-server-name |
缺省情况下,不存在DNS服务器 |
(可选)配置DNS服务器的描述信息 |
description text |
缺省情况下,DNS服务器未配置描述信息 |
指定DNS服务器所属的DNS服务器池 |
dns-server-pool pool-name |
缺省情况下,未指定DNS服务器所属的DNS服务器池 |
表3-15 配置DNS服务器的IP地址和端口号
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入DNS服务器视图 |
loadbalance dns-server dns-server-name |
- |
配置DNS服务器的IPv4地址 |
ip address ipv4-address |
二者选其一 缺省情况下,未配置DNS服务器IP地址 |
配置DNS服务器的IPv6地址 |
ipv6 address ipv6-address |
|
配置DNS服务器的端口号 |
port port-number |
缺省情况下,DNS服务器的端口号为0(表示继续使用原报文携带的端口号) |
每台DNS服务器仅支持与一条链路相关联,同一条链路可以关联多台DNS服务器。
表3-16 指定与DNS服务器关联的链路
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入DNS服务器视图 |
loadbalance dns-server dns-server-name |
- |
指定与DNS服务器关联的链路 |
link link-name |
缺省情况下,未指定与DNS服务器关联的链路 |
通过在DNS服务器视图下配置权值和调用优先级,可以调整DNS服务器的加权轮转调度算法和带宽调度算法使用的权值,以及DNS服务器在DNS服务器池中的调用优先级。
表3-17 配置权值和调用优先级
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入DNS服务器视图 |
loadbalance dns-server dns-server-name |
- |
配置DNS服务器的权值 |
weight weight-value |
缺省情况下,DNS服务器的权值为100 |
配置DNS服务器的调用优先级 |
priority priority |
缺省情况下,DNS服务器的调用优先级为4 |
通过健康检测可以对DNS服务器进行检测,保证其能够提供有效的服务。
用户既可在DNS服务器池视图下对池内的所有DNS服务器进行配置,也可在DNS服务器视图下只对当前DNS服务器进行配置,后者的配置优先级较高。
表3-18 配置健康检测功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入DNS服务器视图 |
loadbalance dns-server dns-server-name |
- |
指定DNS服务器的健康检测方法 |
probe template-name |
缺省情况下,未指定DNS服务器的健康检测方法 |
配置DNS服务器健康检测的成功条件 |
success-criteria { all | at-least min-number } |
缺省情况下,只有全部方法都通过检测才认为健康检测成功 |
链路是运营商提供的实体链路。通过在链路视图下配置通往外网方向的下一跳IP地址,实现对流量的引流。通过配置最大带宽、健康检测、带宽繁忙比和最大期望带宽等功能为链路性能提供一定的保障。
表3-19 配置任务简介
配置任务 |
说明 |
详细配置 |
创建链路 |
必选 |
|
指定链路通往外网方向的下一跳IP地址 |
必选 |
|
配置链路所允许的最大带宽 |
可选 |
|
配置健康检测功能 |
可选 |
|
配置链路的带宽繁忙比与最大期望带宽 |
可选 |
表3-20 创建链路
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建链路,并进入链路视图 |
loadbalance link link-name |
缺省情况下,不存在链路 |
(可选)配置链路的描述信息 |
description text |
缺省情况下,链路未配置描述信息 |
表3-21 指定链路通往外网方向的下一跳IP地址
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入链路视图 |
loadbalance link link-name |
- |
指定链路通往外网方向的下一跳IP地址 |
router ip ipv4-address |
二者选其一 缺省情况下,未指定链路通往外网方向的下一跳IP地址 |
router ipv6 ipv6-address |
表3-22 配置链路所允许的最大带宽
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入链路视图 |
loadbalance link link-name |
- |
配置链路所允许的最大带宽 |
rate-limit bandwidth [ inbound | outbound ] bandwidth-value |
缺省情况下,链路所允许的最大带宽不受限制 |
通过健康检测可以对链路进行检测,保证其能够提供有效的服务。
表3-23 配置健康检测功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入链路视图 |
loadbalance link link-name |
- |
指定链路的健康检测方法 |
probe template-name |
缺省情况下,未指定链路的健康检测方法 |
配置链路健康检测的成功条件 |
success-criteria { all | at-least min-number } |
缺省情况下,只有全部方法都通过检测才认为健康检测成功 |
通过本配置可以调整链路的带宽繁忙比,即当前流量与最大带宽的百分比值,以及最大期望带宽。当访问某个链路的流量超过两者的乘积后,链路进入繁忙状态,新建流量(不包括匹配持续性表项的流量)将不再向该链路分发,而原有流量则仍由该链路继续分发;当该链路流量低于该链路的带宽繁忙恢复比与最大期望带宽的乘积后,链路解除繁忙状态,重新参与调度。
链路的最大期望带宽不仅用于繁忙保护功能,还用于带宽算法和最大带宽算法中剩余带宽的计算。
表3-24 配置链路的带宽繁忙比与最大期望带宽
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入链路视图 |
loadbalance link link-name |
- |
配置链路的带宽繁忙比 |
bandwidth [ inbound | outbound ] busy-rate busy-rate-number [ recovery recovery-rate-number ] |
缺省情况下,链路的总带宽繁忙比为70 |
配置链路最大期望带宽 |
max-bandwidth [ inbound | outbound ] bandwidth-value |
缺省情况下,链路最大期望带宽不受限制 |
负载均衡类的作用是将报文分类,即通过匹配规则将报文按照一定条件进行匹配,以便将不同类型的报文在不同的负载均衡动作流程中处理。一个负载均衡类中最多允许创建65535条匹配规则。
表3-25 配置任务简介
配置任务 |
说明 |
详细配置 |
|
创建负载均衡类 |
必选 |
||
创建匹配规则 |
创建嵌套类的匹配规则 |
至少选其一 |
|
创建源IP地址类型的匹配规则 |
|||
创建目的IP地址类型的匹配规则 |
|||
创建ACL类型的匹配规则 |
|||
创建Domain类型的匹配规则 |
表3-26 创建负载均衡类
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建DNS类型的负载均衡类,并进入负载均衡类视图 |
loadbalance class class-name type dns [ match-all | match-any ] |
缺省情况下,不存在负载均衡类 创建负载均衡类时必须为其指定类型;而在进入已创建的负载均衡类视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致 |
(可选)配置负载均衡类的描述信息 |
description text |
缺省情况下,负载均衡类未配置描述信息 |
表3-27 创建嵌套类的匹配规则
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入DNS类型的负载均衡类视图 |
loadbalance class class-name |
- |
创建嵌套类的匹配规则 |
match [ match-id ] class class-name |
缺省情况下,负载均衡类中不存在匹配规则 |
表3-28 创建源IP地址类型的匹配规则
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入DNS类型的负载均衡类视图 |
loadbalance class class-name |
- |
创建源IP地址类型的匹配规则 |
match [ match-id ] source { ip address ipv4-address [ mask-length | mask ] | ipv6 address ipv6-address [ prefix-length ] } |
缺省情况下,负载均衡类中不存在匹配规则 |
表3-29 创建目的IP地址类型的匹配规则
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入DNS类型的负载均衡类视图 |
loadbalance class class-name |
- |
创建目的IP地址类型的匹配规则 |
match [ match-id ] destination { ip address ipv4-address [ mask-length | mask ] | ipv6 address ipv6-address [ prefix-length ] } |
缺省情况下,负载均衡类中不存在匹配规则 |
如果指定编号或名称的ACL不存在,此匹配规则将不参与匹配。
表3-30 创建ACL类型的匹配规则
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入DNS类型的负载均衡类视图 |
loadbalance class class-name |
- |
创建ACL类型的匹配规则 |
match [ match-id ] acl [ ipv6 ] { acl-number | name acl-name } |
缺省情况下,负载均衡类中不存在匹配规则 |
表3-31 创建域名类型的匹配规则
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入DNS类型的负载均衡类视图 |
loadbalance class class-name |
- |
创建域名类型的匹配规则 |
match [ match-id ] domain-name domain-name |
缺省情况下,负载均衡类中不存在匹配规则 |
负载均衡动作可分为两大类:
· 转发类动作:确定是否转发以及如何转发报文。如果没有配置转发类动作,报文将被丢弃处理。
· 修改类动作:对报文执行一些修改行为。修改类动作应配合转发类动作使用,否则修改后的报文终将被丢弃。
如果用户想对报文进行丢弃处理,则可在创建负载均衡动作后,不为其指定任何上述动作。
表3-32 配置任务简介
配置任务 |
说明 |
详细配置 |
|
创建负载均衡动作 |
必选 |
||
配置转发类动作 |
配置报文的转发模式为转发 |
可选其一 这三条命令互斥,当配置了其中一条后,其他的配置将被自动取消 |
|
指定指导转发的DNS服务器池 |
|||
配置跳过当前DNS透明代理 |
|||
配置查找可用DNS服务器失败时继续匹配下一条引用规则 |
可选 |
||
配置修改类动作 |
配置发往DNS服务器的IP报文中的ToS字段 |
可选 |
表3-33 创建负载均衡动作
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建DNS类型的负载均衡动作,并进入负载均衡动作视图 |
loadbalance action action-name type dns |
缺省情况下,不存在负载均衡动作 创建负载均衡动作时必须为其指定类型;而在进入已创建的负载均衡动作视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致 |
(可选)配置负载均衡动作的描述信息 |
description text |
缺省情况下,负载均衡动作未配置描述信息 |
设备支持配置四种转发类动作,包括:
· 报文的转发模式为转发:当配置本功能的动作在负载均衡策略中被引用时,直接对匹配当前策略的报文进行转发。
· 指定指导转发的DNS服务器池:当主用DNS服务器池可用时,使用主用DNS服务器池指导转发;当主用DNS服务器池不可用而备用链路组可用时,使用备用DNS服务器池指导转发。
· 跳过当前DNS透明代理:配置报文的转发模式为跳过当前DNS透明代理,可使匹配了DNS透明代理的报文跳过当前DNS透明代理,并重新匹配DNS透明代理或虚服务器。
· 查找DNS服务器失败时继续匹配下一条引用规则:当配置该命令的动作在负载均衡策略中被引用时,在转发中根据该配置判断当前动作查找可用DNS服务器失败时,可继续顺序匹配策略中的下一条引用规则。
表3-34 配置报文的转发模式为转发
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入DNS类型的负载均衡动作视图 |
loadbalance action action-name |
- |
配置报文的转发模式为转发 |
forward all |
缺省情况下,报文转发模式为丢弃 |
表3-35 指定指导转发的DNS服务器池
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入DNS类型的负载均衡动作视图 |
loadbalance action action-name |
- |
指定指导转发的DNS服务器池 |
dns-server-pool pool-name |
缺省情况下,未指定指导转发的DNS服务器池 |
表3-36 配置跳过当前DNS透明代理
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入DNS类型的负载均衡动作视图 |
loadbalance action action-name |
- |
配置报文的转发模式为跳过当前DNS透明代理 |
skip current-dns-proxy |
缺省情况下,报文的转发模式为丢弃
|
表3-37 配置查找可用DNS服务器失败时继续匹配下一条引用规则
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入DNS类型的负载均衡动作视图 |
loadbalance action action-name |
- |
配置查找DNS服务器失败时继续匹配下一条引用规则 |
fallback-action continue |
缺省情况下,当前动作查找可用DNS服务器失败时,不再继续匹配下一条引用规则,直接丢弃报文 |
表3-38 配置发往DNS服务器的IP报文中的ToS字段
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入DNS类型的负载均衡动作视图 |
loadbalance action action-name |
- |
配置发往DNS服务器的IP报文中的ToS字段 |
set ip tos tos-number |
缺省情况下,不改变发往DNS服务器的IP报文中的ToS字段 |
表3-39 配置任务简介
配置任务 |
说明 |
详细配置 |
创建负载均衡策略 |
必选 |
|
指定负载均衡动作 |
必选 |
|
指定缺省负载均衡动作 |
必选 |
表3-40 创建负载均衡策略
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建DNS类型的负载均衡策略,并进入负载均衡策略视图 |
loadbalance policy policy-name type dns |
缺省情况下,不存在负载均衡策略 创建负载均衡策略时必须为其指定类型;而在进入已创建的负载均衡策略视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致 |
(可选)配置负载均衡策略的描述信息 |
description text |
缺省情况下,负载均衡策略未配置描述信息 |
DNS类型的负载均衡策略只能引用DNS类型的负载均衡类和负载均衡动作。
表3-41 指定负载均衡动作
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入DNS类型的负载均衡策略视图 |
loadbalance policy policy-name |
- |
为负载均衡类指定负载均衡动作 |
class class-name [ insert-before before-class-name ] action action-name |
缺省情况下,没有为负载均衡类指定负载均衡动作 |
通过指定缺省负载均衡动作,可以为未匹配任何负载均衡类的报文指定其执行的缺省动作。
DNS类型的负载均衡策略只能引用DNS类型的负载均衡动作作为其缺省负载均衡动作。
表3-42 指定缺省负载均衡动作
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入DNS类型的负载均衡策略视图 |
loadbalance policy policy-name |
- |
指定缺省负载均衡动作 |
default-class action action-name |
缺省情况下,未指定缺省负载均衡动作 |
持续性组的作用是根据某持续性方法将具有一定相关性的会话都分配给同一台DNS服务器处理,这个分配规则就称为持续性表项。在一个会话中,当其首包通过持续性方法选择了一台DNS服务器之后,后续包都会延用这个选择结果。
表3-43 配置任务简介
配置任务 |
说明 |
详细配置 |
创建持续性组 |
必选 |
|
配置IP持续性方法 |
必选 |
|
配置持续性表项的超时时间 |
可选 |
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建地址端口类型的持续性组,并进入持续性组视图 |
sticky-group group-name type address-port |
缺省情况下,不存在持续性组 创建持续性组时必须为其指定类型;而在进入已创建的持续性组视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致 |
(可选)配置持续性组的描述信息 |
description text |
缺省情况下,持续性组未配置描述信息 |
表3-45 配置IP持续性方法
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入地址端口类型的持续性组视图 |
sticky-group group-name |
- |
配置IPv4持续性方法 |
ip [ port ] { both | destination | source } [ mask mask-length ] |
二者选其一 缺省情况下,不存在IP持续性方法 |
配置IPv6持续性方法 |
ipv6 [ port ] { both | destination | source } [ prefix prefix-length ] |
表3-46 配置持续性表项的超时时间
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入地址端口类型的持续性组视图 |
sticky-group group-name |
- |
配置持续性表项的超时时间 |
timeout timeout-value |
缺省情况下,持续性表项的超时时间为60秒 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后DNS透明代理的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除DNS透明代理的统计信息。
表3-47 DNS透明代理显示和维护
配置 |
命令 |
|
显示DNS服务器池的信息 |
display loadbalance dns-server-pool [ brief | name pool-name ] |
|
显示DNS服务器的信息 |
display loadbalance dns-server [ brief | name dns-server-name ] |
|
显示DNS服务器的统计信息 |
display loadbalance dns-server statistics [ name dns-server-name ] |
|
显示DNS透明代理的信息 |
display loadbalance dns-proxy [ brief | name dns-proxy-name ] |
|
显示DNS透明代理的统计信息 |
display loadbalance dns-proxy statistics [ name dns-proxy-name ] |
|
显示链路的信息 |
display loadbalance link [ brief | name link-name ] |
|
显示链路的统计信息 |
display loadbalance link statistics [ name link-name ] |
|
显示负载均衡类的信息 |
display loadbalance class [ name class-name ] |
|
显示负载均衡动作的信息 |
display loadbalance action [ name action-name ] |
|
显示负载均衡策略的信息 |
display loadbalance policy [ name policy-name ] |
|
显示DNS透明代理的持续性表项信息 |
display sticky dns-proxy [ dns-proxy-name ] [ class class-name | default-class | default-dns-server-pool ] |
|
显示持续性组的信息 |
display sticky-group [ name group-name ] |
|
清除DNS服务器的统计信息 |
reset loadbalance dns-server statistics [ dns-server-name ] |
|
清除DNS透明代理的统计信息 |
reset loadbalance dns-proxy statistics [ dns-proxy-name ] |
|
清除链路的统计信息 |
reset loadbalance link statistics [ link-name ] |
用户从两个运营商ISP 1和ISP 2处分别租用了带宽相同的两条链路Link 1和Link 2。属于ISP 1 DNS服务器的IP地址为10.1.2.100,属于ISP 2的DNS服务器的IP地址为20.1.2.100。
当内网用户通过域名www.abc.com访问外网的Web服务器Web Server A和Web Server B时,使上网流量均匀地分布在不同的链路上。
图3-4 DNS透明代理配置组网图
(1) 配置接口IP地址
[AC] interface gigabitethernet 1/0/1
[AC-GigabitEthernet1/0/1] ip address 192.168.1.100 24
[AC-GigabitEthernet1/0/1] quit
[AC] interface gigabitethernet 1/0/2
[AC-GigabitEthernet1/0/2] ip address 10.1.1.1 24
[AC-GigabitEthernet1/0/2] quit
[AC] interface gigabitethernet 1/0/3
[AC-GigabitEthernet1/0/3] ip address 20.1.1.1 24
[AC-GigabitEthernet1/0/3] quit
(2) 配置链路
# 创建名为link1的链路,指定链路出方向的下一跳IP地址为10.1.1.2
[AC-lb-link-link1] router ip 10.1.1.2
[AC-lb-link-link1] quit
# 创建名为link2的链路,指定链路出方向的下一跳IP地址为20.1.1.2。
[AC-lb-link-link2] router ip 20.1.1.2
[AC-lb-link-link2] quit
(3) 配置DNS服务器池
# 创建名为dsp的DNS服务器池
[AC] loadbalance dns-server-pool dsp
[AC-lb-dspool-dsp] quit
(4) 配置DNS服务器
# 创建名为ds1的DNS服务器,配置其IPv4地址为10.1.2.100,所属DNS服务器池为dsp,并指定ds1对应的链路为link1。
[AC] loadbalance dns-server ds1
[AC-lb-ds-ds1] ip address 10.1.2.100
[AC-lb-ds-ds1] dns-server-pool dsp
[AC-lb-ds-ds1] link link1
[AC-lb-ds-ds1] quit
# 创建名为ds2的DNS服务器,配置其IPv4地址为20.1.2.100,所属DNS服务器池为dsp,并指定ds2对应的链路为link2。
[AC] loadbalance dns-server ds2
[AC-lb-ds-ds2] ip address 20.1.2.100
[AC-lb-ds-ds2] dns-server-pool dsp
[AC-lb-ds-ds2] link link2
[AC-lb-ds-ds2] quit
(5) 配置DNS透明代理
# 创建名为dns-proxy1的UDP类型的DNS透明代理,配置其IPv4地址为0.0.0.0,指定DNS服务器池为dsp,并开启DNS透明代理功能。
[AC] loadbalance dns-proxy dns-proxy1 type udp
[AC-lb-dp-udp-dp] ip address 0.0.0.0 0
[AC-lb-dp-udp-dp] default dns-server-pool dsp
[AC-lb-dp-udp-dp] service enable
[AC-lb-dp-udp-dp] quit
# 显示所有DNS服务器的简要信息。
[AC] display loadbalance dns-server brief
DNS server Address Port Link State DNS server pool
ds1 10.1.2.100 0 link1 Active dsp
ds2 20.1.2.100 0 link2 Active dsp
# 显示所有DNS服务器池的详细信息。
[AC] display loadbalance dns-server-pool
DNS server pool: dsp
Description:
Predictor: Round robin
Selected server: Disabled
Probe information:
Probe success criteria: All
Probe method:
Total DNS servers: 2
Active DNS servers: 2
DNS server list:
Name State Address port Link Weight Priority
ds1 Active 10.1.2.100 0 link1 100 4
ds2 Active 20.1.2.100 0 link2 100 4
# 显示所有DNS透明代理的详细信息。
[AC] display loadbalance dns-proxy
DNS proxy: dns-proxy1
Type: UDP
State: Active
Service state: Enabled
VPN instance:
IPv4 address: 0.0.0.0/0
IPv6 address: --
Port: 53
DNS server pool: dsp
Sticky:
LB policy:
Connection synchronization: Enabled
Sticky synchronization: Enabled
Bandwidth busy protection: Disabled
完成上述配置后,负载均衡设备可以将DNS请求报文均匀地分发到DNS Server A和DNS Server B上,从而将内网用户访问外网Web服务器的流量均匀地分配到Link 1和Link 2上。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!