02-服务器负载均衡配置
本章节下载: 02-服务器负载均衡配置 (1.83 MB)
目 录
1.7.30 开启X-Forwarded-For字段源IP地址插入功能
1.13.20 开启匹配持续性表项的会话不受连接数限制影响功能
1.14.6 配置对客户端发来的HTTP请求报文中超出MSS的数据段的处理方式
1.14.7 配置负载均衡设备与对端建立TCP连接时的MSS值
1.14.11 配置触发SYN Cookie保护功能的门限值
1.14.18 配置对每个HTTP请求或应答报文的首部都执行插入、删除或修改操作
1.14.21 配置Secondary Cookie相关参数
1.14.22 配置当HTTP请求或应答报文首部超出最大长度时的处理方式
1.14.23 配置允许通过的HTTP请求报文实体的最大长度
1.16.4 配置TCP zero-window类型负载均衡探测模板
1.16.5 配置HTTP passive类型负载均衡探测模板
在企业或大型数据中心场景下,需要多台服务器同时对外提供服务。服务器负载均衡技术能将用户流量在多台服务器间进行合理分配,从而提高服务器资源利用率,提升用户访问体验。
如图1-1所示,通过服务器负载均衡技术,管理员可将多台真实服务器配置成一台虚拟服务器,对外发布虚拟服务器的IP地址。当用户流量访问虚拟服务器时,SLB(Server Load Balancing,服务器负载均衡)设备根据预先配置的调度算法、负载均衡策略等为用户流量分配最优的服务器资源。
服务器负载均衡功能包含以下基本概念:
· 虚服务器:SLB设备对外提供服务的逻辑载体,由协议类型、IP地址和端口唯一标识。当客户端的访问请求到达SLB设备后,只有匹配虚服务器的流量才能进入SLB处理流程。
· 实服务器:负责响应和处理用户请求的物理服务器。
· 实服务组:由多台实服务器组成的集合,它们提供相同的服务。
服务器负载均衡的工作流程如图1-2所示。
(1) 客户端向SLB设备发送访问请求,此时的源IP地址为客户端IP地址,目的IP地址为虚服务器IP地址(图中简写为VSIP,即Virtual sever's IP)。
(2) SLB设备根据健康检测方法、持续性方法、负载均衡策略、调度算法等,综合计算出将访问请求分发给哪台实服务器,并将报文的目的IP地址转换为选中的实服务器的IP地址。
(3) 设备将访问请求转发给实服务器,此时的源IP地址为客户端IP,目的IP地址为实服务器的IP地址。
(4) 实服务器接收并处理请求报文,返回响应报文,此时的源IP地址为实服务器的IP地址,目的IP地址为客户端IP地址。
(5) 设备收到响应报文后,将其源IP地址转换为虚服务器IP地址。
(6) 设备向客户端转发响应报文,此时的源IP地址为虚服务器IP地址,目的IP地址为客户端IP地址。
根据识别信息的层级不同,服务器负载均衡可分为以下两种:
· 四层服务器负载均衡:可识别网络层和传输层信息,是基于流的负载均衡,通过对报文进行逐流分发,将同一条流的报文分发给同一台服务器。由于四层服务器负载均衡对七层业务无法按内容分发,从而限制了其适用范围。
· 七层服务器负载均衡:除了可识别网络层和传输层信息之外,还可识别应用层信息,是基于内容的负载均衡,通过对报文承载的内容进行深度解析,根据其中的内容进行逐包分发,按既定策略将连接导向指定的服务器,从而实现了业务范围更广泛的服务器负载均衡。
调度算法是指根据一定的规则和算法,将用户请求分配给相应的实服务器的过程。在实服务组中,调度算法会根据设备的负载情况、用户请求的特性等因素,计算出处理用户请求的实服务器,实现资源的合理分配和任务的高效处理。不同的调度算法适用于不同的场景,需要根据具体应用的需求和系统特性来选择最合适的调度算法,以达到性能优化的目的。服务器负载均衡技术支持以下调度算法:
随机算法是将用户请求随机分发给实服务组内的某台实服务器。经过一段时间后,各个实服务器的连接数大致相同。
随机算法适用于实服务器性能相近,每条流的业务负载大致相同的场景(如普通DNS、HTTP等)。
管理员可为每台参与调度的实服务器配置权值。加权轮转算法根据实服务器权值的大小,将请求依次分发给每个实服务器,权值越大,分配的请求越多。
加权轮转算法适用于业务主机性能不同,但每条流的业务负载大致相同的场景。
根据识别报文信息不同,服务器负载均衡支持的哈希算法分为源IP地址哈希算法、源IP地址+端口哈希算法、目的地址哈希算法和HTTP载荷哈希算法。
· 源IP地址哈希算法:适用于同一源IP地址发起的请求必须要调度到同一台实服务器的场景,多用于应用本身对请求的源IP地址有要求的环境。
¡ 普通源IP地址哈希算法
¡ CARP源IP地址哈希算法:CARP(Cache Array Routing Protocol,缓存阵列路由协议)哈希算法是在哈希算法的基础上进行了改进。相比于普通源IP地址哈希算法,采用CARP源IP地址哈希算法,可以更好地保持流量调度的持续性,使当前所有可用实服务器负载分担变动最小。
· 源IP地址+端口哈希算法:适用于同一源IP地址和端口发起的请求必须要调度到同一台实服务器的场景,多用于应用本身对请求的源IP地址和端口有要求的环境。
¡ 普通源IP地址和端口哈希算法
¡ CARP源IP地址和端口哈希算法:CARP哈希算法是在哈希算法的基础上进行了改进。相比于普通源IP地址和端口哈希算法,采用CARP源IP地址和端口哈希算法,可以更好地保持流量调度的持续性,使当前所有可用实服务器负载分担变动最小。
· 目的IP地址哈希算法:适用于将发往同一目的IP地址的用户请求必须要调度到同一台实服务器的场景,当客户端有一系列业务需要处理且必须和一台服务器反复通信时需要用到该算法,该算法保证发送到相同目的IP地址的流量能够一直在同一台服务器上进行处理。
¡ 普通目的IP地址哈希算法
¡ CARP目的IP地址哈希算法:CARP哈希算法是在哈希算法的基础上进行了改进。相比于普通目的IP地址哈希算法,采用CARP目的IP地址哈希算法,可以更好地保持流量调度的持续性,使当前所有可用实服务器负载分担变动最小。
· HTTP载荷哈希算法:设备将具有相同HTTP载荷的用户请求分配给相同的实服务器。
根据算法实现不同,服务器负载均衡技术支持的哈希算法分为普通哈希算法和CARP(Cache Array Routing Protocol,缓存阵列路由协议)哈希算法。
CARP哈希算法是在普通哈希算法的基础上进行了改进。在实服务器故障和实服务组扩容的场景下,相比于普通哈希算法,采用CARP哈希算法,能使当前所有可用实服务器负载分担变动最小,更好地保持流量调度的持续性。
· 在实际应用中,若某台实服务器由于故障等原因无法提供服务。则原来发送至该故障实服务器的请求,将被分配至实服务组内其他可用的实服务器上。
¡ 采用普通IP地址哈希算法,原来发送至未故障的实服务器的请求,将根据源IP地址、源IP地址+端口、目的IP地址或HTTP载荷,在实服务组内所有实服务器上进行重新分配。所有访问流量均需要重新分配,影响用户体验。
¡ 采用CRAP IP地址哈希算法,原来发送至未故障的实服务器的请求,将继续被分配到原来的实服务器上。采用该算法,仅故障实服务器的访问流量会被重新分配,而不影响实服务组内无故障实服务器的访问流量。
· 若因为实服务组扩容等需求,在实服务组中增加新的实服务器。
¡ 采用普通IP地址哈希算法,将根据源IP地址、源IP地址+端口、目的IP地址或HTTP载荷,将请求在实服务组内所有实服务器上进行重新分配,包括新增实服务器和已有实服务器。所有访问流量均需要重新分配,影响用户体验。
¡ 采用CRAP IP地址哈希算法,只将一部分发送至原有实服务器的请求,分配至新增实服务器;大部分请求仍然分配到已有实服务器上。采用该算法,能最大程度保证用户的访问体验。
根据实服务器的内存使用率、CPU使用率和磁盘使用率等信息计算出当前的负载能力权值。负载越小,权值越大,分配到的新连接越多。
该算法只有在引用了SNMP-DCA类型的NQA探测模板的情况下才会生效。若未引用SNMP-DCA类型的NQA探测模板,则使用非加权的轮转算法进行调度。SNMP-DCA类型的NQA探测模板向实服务器发送资源(如CPU/内存/硬盘)查询报文来获取实服务器资源的使用情况,动态反馈算法根据NQA探测模板获取的资源使用情况,综合计算出实服务器的负载能力权值。有关NQA模板的配置请参见“网络管理与监控配置指导”中的“NQA”。
动态反馈算法适用于实服务器性能不同,且每条流的业务负载和处理时间无特定规律的场景。
管理员可为每台参与调度的实服务器配置权值,该权重通常反映了服务器的处理能力或性能表现。加权最小连接算法总是将请求分发给加权活动连接数(当前实服务器的活动连接总数/权值)最小的实服务器。
加权最小连接算法适用于实服务器性能相近,但每条流的业务负载和处理时间不同的场景(如FTP等)。
根据实服务器的响应时间计算出当前负载能力的权值。响应时间越短,权值越大,分配到的新连接越多。
最快响应算法适用于实服务器性能相近,但每条流的业务负载较大、处理时间较长的场景。
根据实服务器的权值与剩余带宽乘积后的比例把请求分发给每个实服务器。例如,对于实服务器rs1和实服务器rs2,如果其剩余带宽分别为150kbps和250kbps,而权值分别为5和6,最终rs1和rs2的请求流量分配比例为150×5:250×6,即1:2。
总是将请求分发给处于空闲状态且剩余带宽最大的实服务器。例如,对于实服务器rs1和实服务器rs2,如果其剩余带宽分别为150kbps和250kbps,两条实服务器带宽差值为100kbps,此时,当请求流量少于100kbps时,则流量都将分配给rs2;当请求流量大于100kbps时,如130kbps,其中100kbps分配给rs2,其余30kbps流量将平均分配给两台实服务器。
健康检测功能可以对实服务器的状态进行周期性探测,保证其能够提供有效的服务。SLB设备主动向实服务器发送探测报文,实时探测实服务器的状态,避免将流量分配给故障的实服务器,导致服务中断。
如图1-3所示,当探测到实服务器状态均为正常时,SLB设备根据调度算法将客户端的流量依次分配给每台实服务器(以实服务器权值相同的加权轮转算法为例)。
如图1-4所示,当探测到某台实服务器发生故障时,SLB设备立即停止向其分配流量,并将流量调度给其他处于正常状态的实服务器。
一段时间后,若故障的实服务器状态恢复正常,设备会修改该实服务器的健康检测状态,使其重新参与调度。
健康检测功能通过负载均衡探测模板或NQA探测模板实现。有关负载均衡探测模板的详细介绍,请参见“配置负载均衡探测模板”。有关NQA探测模板的详细介绍,请参见“网络管理和监控配置指导”中的“NQA”。
负载均衡策略是负载均衡技术中的重要组成部分,用于决定如何将客户端的请求流量分配到实际的实服务组上。通过选择合适的负载均衡策略和结合负载均衡算法,可以实现理想的负载均衡效果。负载均衡策略负责将符合特定规则的用户流量分配到指定的实服务组中,而调度算法则在实服务组内选择最优的实服务器。
将负载均衡类和动作关联起来就构成了负载均衡策略。通过负载均衡策略,用户可以为匹配特定规则的报文指定执行的负载均衡动作,从而实现更加灵活的负载均衡。
管理员可以在一个负载均衡策略中指定多条匹配规则,设备会按照配置顺序进行匹配。
· 当匹配方式为匹配任意一条规则时,与某条匹配规则匹配成功就执行调度动作,否则继续匹配下一条匹配规则,若所有匹配规则均未匹配成功,则不执行调度动作。
· 当匹配方式为匹配所有规则时,仅当所有规则都匹配成功时,才会执行调度动作,否则不执行调度动作。
对于规则匹配成功的报文,设备会为其执行指定的负载均衡动作,动作分为三大类:
· 转发类动作:确定是否转发以及如何转发报文。如果没有配置转发类动作,报文将被丢弃处理。
· 修改类动作:对报文执行一些修改行为。修改类动作应配合转发类动作使用,否则修改后的报文终将被丢弃。
· 代答类动作:用指定的文件对客户端HTTP请求进行应答。
如果用户想对报文进行丢弃处理,则可在创建负载均衡动作后,不为其指定任何上述动作。
持续性组的作用是根据某持续性方法将具有相同特征的访问流量都分配给同一个实服务器处理。在保证用户访问连续性的同时,也减少了调度算法的重复运算,提升了转发效率。
一种典型的应用场景是:对于某些特定业务,为方便用户使用,在用户首次请求完成后,服务器上会保存用户的相关信息,以缩短后续用户业务的响应时间,对于此种场景,建议管理员配置持续性组功能,始终将相同用户的请求分配给同一台实服务器处理。
持续性组的详细处理流程如下:
(1) 当设备首次收到具有某种特征的用户请求时,会根据调度算法将请求分发给某台实服务器。同时根据管理员配置的持续性方法生成持续性表项。
(2) 在持续性表项老化之前,若设备再次收到具有相同特征的用户请求,不会再根据调度算法进行计算,而是根据已生成的持续性表项,选择对应的实服务器进行转发。
如图1-5所示,在网关部署模式中,SLB设备串连部署在实服务器前端,客户端的请求和响应流量均会经过SLB设备处理。当客户端的请求流量经过SLB设备时,SLB设备根据健康检测方法、会话保持、负载均衡策略、调度算法等选出最优的实服务器,并将客户端请求的虚IP地址转换为选中的实服务器的IP地址;在实服务器的响应流量经过SLB设备时,SLB设备会将其源IP地址还原为虚服务器IP地址。
在网关部署模式中,管理员需要在实服务器上配置缺省网关或静态路由,将发往客户端的报文发送到SLB设备上。
网关部署模式将SLB设备串接在原有组网中,会改变已有的网络拓扑,仅适用于组网较为简单的部署场景。
如图1-6所示,在旁挂部署模式中,SLB设备旁挂部署在核心交换机上,客户端的请求和响应流量均会经过SLB设备处理。
当客户端的请求流量经过SLB设备时,SLB设备根据健康检测方法、会话保持、负载均衡策略、调度算法等选出最优的实服务器,并将客户端请求的虚IP地址转换为选中的实服务器的IP地址;在实服务器的响应流量经过SLB设备时,SLB设备会将其源IP地址还原为虚服务器IP地址。
在旁挂部署模式中,管理员需要在实服务器上配置缺省网关或静态路由,将发往客户端的报文发送到旁挂SLB设备的核心交换机上。
相比于网关部署模式,旁挂部署模式不改变原有网络拓扑,部署更为灵活。
如图1-7所示,三角传输部署模式与旁挂部署模式的网络拓扑相同,SLB设备旁挂部署在核心交换机上,但不同的是,SLB设备与实服务器之间通过二层传输,且只有客户端的请求流量会经过SLB设备处理,实服务器的响应流量不会经过SLB设备处理。当客户端的请求流量经过SLB设备时,SLB设备根据健康检测方法、会话保持、负载均衡策略、调度算法等选出最优的实服务器,并向选中的实服务器发送访问请求,此时请求报文的源IP地址为客户端的IP地址,目的IP地址仍为虚服务器的IP地址,目的MAC地址为实服务器的MAC地址。实服务器接收并处理请求报文,并直接向客户端返回响应报文,响应报文不再经过SLB设备处理。此时的源IP地址为虚服务器的IP地址,目的IP地址为客户端IP地址。
在三角传输部署模式中,管理员需要在实服务器上配置缺省网关或静态路由,将发往客户端的报文发送到出口网关上。并且,管理员还需要在实服务器的Loopback地址配置为虚服务器IP地址。
相比于网关部署模式,三角传输部署模式不改变原有网络拓扑,部署更为灵活;相比于旁挂部署模式,三角传输部署模式的回程流量不经过SLB设备,更适用于诸如视频等业务流量较大的场景。
在单台SLB设备的组网中,一旦发生单点故障,客户端将无法访问实服务器。采用高可靠性组网可以很好的避免单点故障,保证业务的连续性。高可靠性功能支持主备、双主和集群几种工作模式。有关高可靠性的详细介绍,请参见“高可靠性配置指导”中的“双机热备(RBM)”。
如图1-8所示,主备模式(A/S即Active/Standby)由两台SLB设备在一个内网(或数据中心)中组建成双机热备环境。正常情况下,仅由主设备处理业务,备设备处于待命状态;当主设备的接口、链路或整机故障时,备设备立即接替主设备处理业务,保证业务不中断。
如图1-9所示,双主模式(A/A即Dual-Active)由两台SLB设备在一个内网(或数据中心)中组建成双机热备环境。两台设备同时处理业务,充分利用设备资源,提高系统负载能力。并且当其中一台设备发生故障时,另外一台设备会立即承担其业务,保证业务不中断。
集群模式(Cluster)由多台SLB设备组建成一个可靠性系统,多台SLB设备之间不仅可以在一个内网(或数据中心)中组建成一个集群;还可以跨内网(或数据中心)组建成一个集群。集群中的多台SLB设备不仅可以形成主备或双主组网,还可以形成多主组网,进一步提高了系统的处理能力和扩容能力。
如图1-10所示,正常情况下,数据中心的不同设备可以对外发布不同的业务,这样每台设备可以集中高效地处理某一种业务,同时设备之间又可以相互备份配置信息和业务信息。
如图1-11所示,当其中一台设备故障时,其他设备可以立即接手这些流量,保证用户业务不中断。
如图1-12所示,正常情况下,多个数据中心同时对外提供服务,充分利用现有的网络资源和应用服务资源等,不同数据中心SLB设备之间的配置信息和业务信息可以相互备份。
如图1-13所示,当其中一个数据中心的某台SLB设备故障不能对外提供服务时,首先让同一数据中心的其他SLB设备立即接手这些流量,保证用户业务不中断;同理,当整个数据中心故障不能对外提供服务时,再由其他数据中心的SLB设备立即接手这些流量,保证用户业务不中断。
服务器负载均衡需要购买并正确安装License后才能使用,有关License的详细介绍,请参见“基础配置指导”中的“License管理”。
非缺省vSystem不支持本特性部分功能,具体包括:
· 配置自定义监控类型的负载均衡探测模板
· 配置基于入接口的匹配规则
· 配置HTTP统计功能
· 引用DPI应用profile
· 配置外链代理功能
· 配置虚服务器绑定的VRRP备份组
· 配置防护策略
非缺省vSystem对具体命令的支持情况,请见本特性的命令参考。有关vSystem的详细介绍请参见“虚拟化技术配置指导”中的“vSystem”。
服务器负载均衡各配置项之间的配置关系如图1-14所示。
· 实服务组:将具有相同或相似功能的实服务器抽象成一个实服务组。实服务组可被虚服务器或负载均衡动作引用。
· 实服务器:负载均衡设备上处理用户业务的实体。
· 虚服务器:负载均衡设备上面向用户业务的虚拟载体,只有匹配上虚服务器的报文才需要进行负载均衡处理。
· 负载均衡类:将报文分类,以便对不同类型的报文执行不同的负载均衡动作。
· 负载均衡动作:制定丢弃、转发或修改报文的具体行为。
· 负载均衡策略:将负载均衡类和负载均衡动作关联起来就构成了负载均衡策略。负载均衡策略可被虚服务器引用。
· 持续性组:根据某持续性方法将具有一定相关性的会话都分配给同一个实服务器处理。持续性组可被虚服务器或负载均衡动作引用。
· 参数模板:制定对报文进行更深入处理的模板。参数模板可被虚服务器引用。
服务器负载均衡配置任务如下:
(1) 配置虚服务器
(2) 配置实服务组
(3) 配置实服务器
(4) (可选)配置负载均衡策略
a. 配置负载均衡类
b. 配置负载均衡动作
c. 配置负载均衡策略
(5) (可选)配置持续性组
(6) (可选)配置模板及策略
¡ 配置参数模板
¡ 配置防护策略
(7) (可选)配置SNAT全局策略
(8) (可选)配置负载均衡ALG功能
(9) (可选)配置重新加载代答文件
(10) (可选)配置全局TCP时间戳选项的动作
(11) (可选)配置健康检测失败信息的记录功能
(12) (可选)开启主备NQA健康检测结果同步功能
(13) (可选)配置SSL性能优化的缓存值
(14) (可选)测试负载均衡效果
(15) (可选)配置负载均衡告警及日志功能
虚服务器是负载均衡设备上面向用户业务的虚拟载体,是为了判断是否需要对进入负载均衡设备的报文进行负载均衡而引入的概念。只有匹配上虚服务器的报文才会被进行负载均衡处理。
服务器负载均衡支持的虚服务器类型为快速HTTP、HTTP、IP、MySQL、RADIUS、SIP、TCP和UDP。快速HTTP、HTTP、MySQL、RADIUS、SIP、TCP和UDP类型的虚服务器需要安装License才能使用,有关License的详细介绍,请参见“基础配置指导”中的“License管理”。
如果同时指定实服务组和引用负载均衡策略,报文会被优先交给负载均衡策略处理,当负载均衡策略无法处理时才交给实服务组处理。
虚服务器(四层)配置任务如下:
(1) 配置虚服务器基本功能
a. 创建虚服务器
b. 配置VSIP和端口号
c. 指定虚服务器所属的VPN
(2) 配置报文处理策略
请至少选择其中一项进行配置:
¡ 指定实服务组
¡ 引用负载均衡策略
(3) (可选)配置带宽和连接参数
(4) (可选)配置UDP强制负载均衡功能
(5) (可选)引用参数模板和策略
¡ (可选)引用参数模板
¡ (可选)引用负载均衡连接数限制策略
¡ (可选)引用DPI应用profile
(6) (可选)提高网络可靠性
¡ (可选)配置虚服务器绑定的VRRP备份组
¡ (可选)配置虚服务器引用的集群流量组
¡ (可选)配置热备份功能
¡ (可选)开启虚服务器IP地址发布功能
(7) (可选)指定发送免费ARP报文或ND报文的接口
(8) (可选)配置虚服务不可用时立即断开TCP连接功能
(9) 开启虚服务器
虚服务器(七层)配置任务如下:
(1) 配置虚服务器基本功能
a. 创建虚服务器
c. 配置VSIP和端口号
d. 指定虚服务器所属的VPN
(2) 配置报文处理策略
请至少选择其中一项进行配置:
¡ 指定实服务组
¡ 引用负载均衡策略
(3) (可选)配置带宽和连接参数
(4) (可选)配置HTTP重定向功能
(5) (可选)配置MySQL数据库信息
¡ (可选)配置MySQL数据库的版本
¡ (可选)配置登录MySQL数据库的用户名和密码
¡ (可选)开启MySQL数据库读写分离功能
(6) (可选)引用参数模板和策略
¡ (可选)引用持续性组
¡ (可选)引用参数模板
¡ (可选)引用防护策略
¡ (可选)引用负载均衡连接数限制策略
¡ (可选)引用SSL策略
(7) (可选)配置外链代理功能
(8) (可选)提高网络可靠性
¡ (可选)配置虚服务器绑定的VRRP备份组
¡ (可选)配置虚服务器引用的集群流量组
¡ (可选)配置热备份功能
¡ (可选)开启虚服务器IP地址发布功能
(9) (可选)指定发送免费ARP报文或ND报文的接口
(10) (可选)配置虚服务不可用时立即断开TCP连接功能
(11) (可选)开启X-Forwarded-For字段源IP地址插入功能
(12) (可选)开启TCP类型虚服务器的代理协议功能
(13) 开启虚服务器
四层服务器负载均衡的虚服务器包括IP、TCP和UDP三种类型。
七层服务器负载均衡的虚服务器包括Diameter、快速HTTP、HTTP、MySQL、RADIUS、基于TCP的SIP和基于UDP的SIP类型。
快速HTTP类型的虚服务器需避免与TCP客户端验证功能(该功能的介绍请参见“安全配置指导”中的“攻击检测与防范”)同时使用。
(1) 进入系统视图。
system-view
(2) 创建IP、TCP或UDP类型的虚服务器,并进入虚服务器视图。
virtual-server virtual-server-name type { ip | tcp | udp }
创建虚服务器时必须为其指定类型;而在进入已创建的虚服务器视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致。
(3) (可选)配置虚服务器的描述信息。
description text
缺省情况下,未配置虚服务器的描述信息。
(1) 进入系统视图。
system-view
(2) 创建Diameter、快速HTTP、HTTP、MySQL、RADIUS、基于TCP的SIP或基于UDP的SIP类型的虚服务器,并进入虚服务器视图。
virtual-server virtual-server-name type { diameter | fast-http | http | mysql | radius | sip-tcp | sip-udp }
创建虚服务器时必须为其指定类型;而在进入已创建的虚服务器视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致。
(3) (可选)配置虚服务器的描述信息。
description text
缺省情况下,未配置虚服务器的描述信息。
如果TCP类型的虚服务器配置了工作在七层模式,则必须为虚服务器配置非0端口号,否则该模式不生效。虚服务器端口号的配置请参见“配置VSIP和端口号”。
(1) 进入系统视图。
system-view
(2) 进入TCP类型的虚服务器视图。
virtual-server virtual-server-name
(3) 配置TCP类型的虚服务器工作在七层。
application-mode enable
缺省情况下,TCP类型的虚服务器工作在四层。
Diameter、快速HTTP、HTTP、MySQL、RADIUS、基于TCP的SIP和TCP类型虚服务器的VSIP和端口号不能都相同。
UDP类型和基于UDP的SIP类型虚服务器的VSIP和端口号不能都相同。
管理员可选择为虚服务器配置一个IP地址网段或多个单个的IP地址。当配置IP地址网段时,多次执行本命令,最后一次执行的结果生效;当配置单个的IP地址时,则可以为该地址指定所属的VPN实例,最多可以配置256个单个的IPv4地址和256个单个的IPv6地址。需要注意的是,同一个虚服务器不支持同时配置IP地址网段和单个的IP地址。
若在虚服务器下配置了单个的IP地址,并且为IP地址指定了VPN实例,那么实服务器无法直接继承对应虚服务器下配置的VPN实例。建议关闭实服务器所属VPN实例的继承功能,或直接指定实服务器所属的VPN实例。
通过虚服务器视图下执行vpn-instance命令指定虚服务器所属的VPN实例,对虚服务器下所有未指定VPN的VSIP都生效;通过本功能指定虚服务器IP地址所属的VPN实例,只对当前VSIP生效,后者的配置优先级较高。
基于UDP的SIP类型和端口号为5060的UDP类型虚服务器,当通过udp per-packet命令开启UDP强制负载均衡功能,并通过loadbalance alg sip命令启用SIP协议类型的负载均衡ALG功能时,暂不支持处理多个IP地址,因此,建议只配置一条虚服务器IP地址。
(1) 进入系统视图。
system-view
(2) 进入IP、TCP或UDP类型的虚服务器视图。
virtual-server virtual-server-name
(3) 配置虚服务器的IP地址。
(IPv4网络)
virtual ip address ipv4-address [ mask-length | mask | vpn-instance vpn-instance-name ]
(IPv6网络)
virtual ipv6 address ipv6-address [ prefix-length | vpn-instance vpn-instance-name ]
缺省情况下,未配置虚服务器的IP地址。
若虚服务器的IP地址与设备连接客户端的接口IP地址在同一网段,则必须配置虚服务器IP地址的IPv4掩码长度为32或IPv6前缀长度为128,且必须指定发送免费ARP报文或ND报文的接口。否则,无需指定发送免费ARP报文或ND报文的接口。
(4) 配置虚服务器的端口号。
port { port-number [ to port-number ] } &<1-n>
缺省情况下,IP、TCP和UDP类型虚服务器的端口号为0(表示任意端口号)。
(1) 进入系统视图。
system-view
(2) 进入Diameter、快速HTTP、HTTP、MySQL、RADIUS、基于TCP的SIP或基于UDP的SIP类型的虚服务器视图。
virtual-server virtual-server-name
(3) 配置虚服务器的IP地址。
(IPv4网络)
virtual ip address ipv4-address [ mask-length | mask | vpn-instance vpn-instance-name ]
(IPv6网络)
virtual ipv6 address ipv6-address [ prefix-length | vpn-instance vpn-instance-name ]
缺省情况下,未配置虚服务器的IP地址。
(4) 配置虚服务器的端口号。
port { port-number [ to port-number ] } &<1-n>
缺省情况下,Diameter类型虚服务器的端口号为3868;快速HTTP和HTTP类型虚服务器的端口号为80;MySQL类型虚服务器的端口号为3306;RADIUS类型虚服务器的端口号为0(表示任意端口号);SIP类型虚服务器的端口号为5060。
如果虚服务器引用了SSL策略,则必须为其配置一个非缺省端口号(通常用443)。
管理员可以在配置VSIP时,为指定虚服务器IP配置所属的VPN实例;也可以通过本功能对未指定VPN实例的VSIP批量配置所属的VPN实例,前者的优先级较高。
(1) 进入系统视图。
system-view
(2) 进入虚服务器视图。
virtual-server virtual-server-name
(3) 指定虚服务器所属的VPN。
vpn-instance vpn-instance-name
缺省情况下,虚服务器属于公网。
当主用实服务组可用(该实服务组存在且有可用的实服务器)时,虚服务器通过主用实服务组进行转发;当主用实服务组不可用而备用实服务组可用时,虚服务器通过备用实服务组进行转发。
如果用户既配置了主用持续性组,也配置了备用持续性组,则会根据两个持续性组同时生成主用持续性表项和备用持续性表项。当有新的流量匹配已生成的持续性表项时,如果未能匹配到主用持续性表项,则进行备用持续性表项匹配。
若配置了备用持续性组,只有如下三种组合才会生成备用持续性表项,否则配置不生效:
· 主用持续性组为RADIUS类型,备用持续性组为地址端口类型;
· 主用持续性组为HTTP Cookie类型,备用持续性组为地址端口类型;
· 主用持续性组为HTTP Cookie类型,备用持续性组为HTTP passive类型。
(1) 进入系统视图。
system-view
(2) 进入虚服务器视图。
virtual-server virtual-server-name
(3) 指定实服务组。
default server-farm server-farm-name [ backup backup-server-farm-name ] [ sticky sticky-name [ backup backup-sticky-name ] ]
缺省情况下,未指定实服务组。
Diameter类型虚服务器不支持本功能。
虚服务器引用负载均衡策略,能够细化虚服务器负载均衡的粒度。根据策略中的匹配规则,使命中虚服务器的报文根据不同的报文内容进行不同的负载均衡处理,从而有效地丰富了负载均衡的负载功能。
(1) 进入系统视图。
system-view
(2) 进入虚服务器视图。
virtual-server virtual-server-name
(3) 指定虚服务器引用的负载均衡策略。
lb-policy policy-name
缺省情况下,虚服务器未引用任何负载均衡策略。
虚服务器只能引用与自身类型相关的负载均衡策略,如:Diameter类型虚服务器,只能引用Diameter类型的策略;快速HTTP和HTTP类型的虚服务器,可以引用通用或HTTP类型的策略;IP、SIP、TCP和UDP类型的虚服务器,只能引用通用类型的策略;MySQL类型的虚服务可以引用通用或MySQL类型的策略;RADIUS类型的虚服务器,可以引用通用或RADIUS类型的策略。
(1) 进入系统视图。
system-view
(2) 进入虚服务器视图。
virtual-server virtual-server-name
(3) 配置虚服务器所允许的最大带宽。
rate-limit bandwidth [ inbound | outbound ] bandwidth-value kbps
缺省情况下,虚服务器所允许的最大总带宽、最大入带宽和最大出带宽均为0,即不受限制。
Diameter类型虚服务器不支持本功能。
(4) 配置虚服务器所允许的最大连接数。
connection-limit max max-number
缺省情况下,虚服务器所允许的最大连接数为0,即不受限制。
(5) 配置虚服务器所允许的最大连接速率。
rate-limit connection connection-number
缺省情况下,虚服务器所允许的最大连接速率为0,即不受限制。
当UDP强制负载均衡功能关闭时,匹配虚服务器的流量按照数据流来进行负载均衡,即一个应用的流量会被负载均衡到同一个实服务器上;而当UDP强制负载均衡功能开启后,匹配虚服务器的流量不再按照流来进行负载均衡,而是按照每报文来进行负载均衡。
(1) 进入系统视图。
system-view
(2) 进入基于UDP的SIP或UDP类型的虚服务器视图。
virtual-server virtual-server-name
(3) 开启虚服务器的UDP强制负载均衡功能。
udp per-packet
缺省情况下,虚服务器的UDP强制负载均衡功能处于关闭状态。
在HTTP类型的虚服务器视图下开启了重定向功能后,所有匹配该虚服务器的HTTP请求报文都将被重定向到指定URL。
(1) 进入系统视图。
system-view
(2) 进入HTTP类型的虚服务器视图。
virtual-server virtual-server-name
(3) 开启虚服务器的重定向功能并指定重定向URL。
redirect relocation relocation
缺省情况下,虚服务器的重定向功能处于关闭状态。
(4) 配置负载均衡设备返回给客户端的重定向报文中的状态码。
redirect return-code { 301 | 302 | 307 }
缺省情况下,负载均衡设备返回给客户端的重定向报文中的状态码为302。
本命令只有在开启了虚服务器的重定向功能后才会生效。
(1) 进入系统视图。
system-view
(2) 进入MySQL类型的虚服务器视图。
virtual-server virtual-server-name
(3) 配置MySQL数据库的版本。
version { 5.0 | 5.1 | 5.5 | 5.6 | 5.7 }
缺省情况下,MySQL数据库的版本为5.6。
通过本配置可以指定设备代替MySQL服务器对客户端进行认证的用户名和密码。此用户名和密码必须与MySQL服务器实际的登录用户名和密码相同。
(1) 进入系统视图。
system-view
(2) 进入MySQL类型的虚服务器视图。
virtual-server virtual-server-name
(3) 配置登录MySQL数据库时使用的用户名和密码。
username username [ password { cipher | simple } string ]
缺省情况下,未配置登录MySQL数据库时使用的用户名和密码。
开启MySQL虚服务器的读写分离功能后,读SQL命令和写SQL命令将分别由读实服务组和写实服务组执行,一定程度上缓解读写并发数量较大时对数据库性能的影响。
(1) 进入系统视图。
system-view
(2) 进入MySQL类型的虚服务器视图。
virtual-server virtual-server-name
(3) 开启MySQL数据库读写分离功能。
readwirte-separation read-server-farm read-server-farm-name [ read-sticky-group read-sticky-group-name ] write-server-farm write-sever-farm-name [ write-sticky-group write-sticky-group-name ]
缺省情况下,MySQL数据库读写分离功能处于关闭状态。
设备支持通过以下三种方式引用持续性组:
· 在虚服务器视图下,指定缺省实服务组引用的持续性组;
· 在负载均衡动作视图下,指定实服务组引用的持续性组;
· 在虚服务器视图下,指定虚服务器引用的持续性组。
其中,通过本配置指定的虚服务器引用的持续性组优先级最高。即在进行流量分配时,优先根据虚服务器引用的持续性组生成持续性表项。
(1) 进入系统视图。
system-view
(2) 进入HTTP类型的虚服务器视图。
virtual-server virtual-server-name
(3) 指定虚服务器引用的持续性组。
sticky sticky-name
缺省情况下,未指定虚服务器引用的持续性组。
参数模板用来对虚服务器上的流量进行比较深入的解析、处理和优化。虚服务器引用了参数模板后,就要根据该参数模板的配置对匹配流量进行相应的处理。
(1) 进入系统视图。
system-view
(2) 进入IP、TCP或UDP类型的虚服务器视图。
virtual-server virtual-server-name
(3) 指定虚服务器引用的参数模板。
parameter { fast-l4 | ip | tcp } profile-name [ client-side | server-side ]
缺省情况下,虚服务器未引用任何参数模板。
TCP类型的虚服务器可以引用TCP类型的参数模板,IP、TCP和UDP类型的虚服务器能引用IP类型的参数模板,IP类型和工作在四层的TCP类型虚服务器可以引用Fast L4类型的参数模板。仅TCP类型参数模板支持客户端侧与服务器侧分别配置。
(1) 进入系统视图。
system-view
(2) 进入Diameter、快速HTTP、HTTP类型、MySQL、RADIUS、基于TCP的SIP或基于UDP的SIP的虚服务器视图。
virtual-server virtual-server-name
(3) 指定虚服务器引用的参数模板。
parameter { diameter-session | http | http-compression | http-statistics | ip | mysql | oneconnect | tcp-application } profile-name
parameter tcp profile-name [ client-side | server-side ]
缺省情况下,虚服务器未引用任何参数模板。
diameter-session参数仅在Diameter类型的虚服务器视图下支持,http参数仅在快速HTTP和HTTP类型的虚服务器视图下支持,http-compression、http-statistics和oneconnect参数仅在HTTP类型的虚服务器视图下支持,mysql参数仅在MySQL类型的虚服务视图下支持,客户端侧tcp参数仅在Diameter、快速HTTP、HTTP和MySQL类型的虚服务视图下支持,服务端侧tcp参数仅在HTTP和MySQL类型的虚服务视图下支持,tcp-application只在工作在七层的TCP类型的虚服务器视图下支持。
通过在HTTP类型的虚服务器视图下引用HTTP防护策略,可以对防护策略中指定的URL进行防护,从而保护负载均衡设备和内网服务器的安全。
(1) 进入系统视图。
system-view
(2) 进入HTTP类型的虚服务器视图。
virtual-server virtual-server-name
(3) 指定虚服务器引用的防护策略。
protection-policy http policy-name
缺省情况下,虚服务器未引用任何防护策略。
引用负载均衡连接数限制策略后,访问实服务器的连接数将会受到连接数限制策略的限制。
(1) 进入系统视图。
system-view
(2) 进入虚服务器视图。
virtual-server virtual-server-name
(3) 引用负载均衡连接数限制策略。
lb-limit-policy policy-name
缺省情况下,虚服服器中未引用任何负载均衡连接数限制策略。
通过指定虚服务器引用的SSL客户端策略,可以对负载均衡设备(作为SSL客户端)与SSL服务器之间传输的流量进行加密传输。
通过指定虚服务器引用的SSL服务器端策略,可以对负载均衡设备(作为SSL服务器)与SSL客户端之间传输的流量进行加密传输。
(1) 进入系统视图。
system-view
(2) 进入Diameter、TCP或HTTP类型的虚服务器视图。
virtual-server virtual-server-name
(3) 指定虚服务器引用的SSL客户端策略。
ssl-client-policy policy-name
缺省情况下,虚服务器未引用任何SSL客户端策略。
Diameter、TCP和快速HTTP类型的虚服务器不支持本功能。
(4) 指定虚服务器引用的SSL服务器端策略。
ssl-server-policy policy-name [ sni server-name ]
缺省情况下,虚服务器未引用任何SSL服务器端策略。
快速HTTP类型的虚服务器不支持本功能。
通过指定虚服务器引用的DPI应用profile,可以对匹配虚服务的流量进行深度报文检测(包括IPS、防病毒和WAF),识别出网络攻击和安全隐患,从而保护负载均衡设备和内网服务器的安全。有关DPI应用profile的详细介绍,请参见“DPI深度安全配置指导”中的“应用层检测引擎”。
(1) 进入系统视图。
system-view
(2) 进入IP、TCP、UDP或HTTP类型的虚服务器视图。
virtual-server virtual-server-name
(3) 指定虚服务器引用的DPI应用profile。
dpi-app-profile dpi-app-profile-name
缺省情况下,虚服务器未引用任何DPI应用profile。
网站页面(以下简称主站)中通常会包含其他网站的外部链接(以下简称外链),比如门户网站等。如果主站已经支持IPv6,但外链资源不支持IPv6,那么当IPv6单栈客户端访问主站页面时,就会出现页面加载缓慢、显示不全或外链无法访问的现象。这就是IPv6升级改造过程中常见的“天窗”问题。
为了解决“天窗”问题,外链代理功能应运而生。外链代理功能通过代理IPv6客户端的IPv4外链访问请求,使IPv6单栈用户可以正常访问IPv4外链,帮助用户实现从IPv4网络到IPv6网络的平滑过渡。此外,代理过程具有透明性,客户端不感知,有效保障了用户体验。
若未配置外链代理功能,当IPv6客户端访问包含IPv4外链的网站时,客户端浏览器会向本地DNS服务器发送请求外链域名的DNS请求报文。由于客户端是IPv6单栈客户端,DNS服务器无法解析出IPv4地址,外链资源访问失败。
配置了外链代理功能后,设备在响应IPv6客户端访问主站页面的请求时,会同时向客户端返回外链改写的脚本文件。客户端浏览器执行该脚本文件,对IPv4外链域名进行改写。然后,客户端向本地DNS服务器查询改写后的外链域名。本地DNS服务器根据查询的域名将DNS请求重定向至设备,由设备代替IPv6客户端请求外链资源,并将外链资源返回给客户端。详细处理流程如图1-15所示。
表1-1 外链代理流程简述
① |
IPv6 Host浏览器执行脚本文件,将外链域名改写为http://www.extlink.example.com.proxy.suffix.example.com |
② |
IPv6 Host向Local DNS server发送查询域名http://www.extlink.example.com.proxy.suffix.example.com的DNS请求报文。Local DNS server根据查询结果通知IPv6 Host解析该域名的权威DNS服务器为LB device |
③ |
IPv6 Host向LB device发送查询域名http://www.extlink.example.com.proxy.suffix.example.com的DNS请求报文 |
④ |
LB device收到包含改写后域名的DNS请求报文后,代替IPv6 Host向DNS sever发送查询原始外链域名http://www.extlink.example.com的DNS请求报文,获取外链资源的IPv4地址 |
⑤ |
LB device根据外链资源的IPv4地址获取外链资源 |
⑥ |
LB device将收到的外链资源发送给IPv6 Host |
当设备检测到服务器返回的HTTP应答报文中包含外链时,会向客户端返回外链改写的脚本文件,由客户端浏览器执行该脚本文件,对外链域名进行改写。在原始的外链域名后添加URI标识、域名后缀和虚服务器端口号。以便IPv6客户端以改写后的域名发送DNS请求报文,设备在收到包含指定URI标识的请求报文时,会代理IPv6客户端请求IPv4外链资源。
改写后的域名为:协议类型://原始外链域名+URI标识+域名后缀+:虚服务器端口号。协议类型包括HTTP和HTTPS。
例如,协议类型为HTTP,原始的IPv4外链域名为www.example1.com,若配置URI标识为proxy,域名后缀为example2.com,虚服务器端口号为8080,则改写后的外链域名为http://www.example1.com.proxy.example2.com:8080。
设备支持加载自定义外链改写文件,若未加载自定义外链改写文件,则使用缺省外链改写文件对外链域名进行改写。
在配置外链代理功能时,管理员需要联系运营商在Local DNS上进行配置,将负载均衡设备配置为解析改写后域名的权威DNS服务器。
管理员需要配置loadbalance dns-server命令在设备上指定解析原始外链域名的DNS服务器。有关DNS服务器的详细配置,请参见“负载均衡”中的“DNS透明代理”。
若DNS选路由入方向链路负载均衡完成,则外链代理的域名后缀应与DNS映射的域名后缀相同。
外链改写文件需要配置为客户端浏览器能够识别的格式,推荐配置为JS脚本文件。
不允许配置文件名称相同的外链改写文件和代答文件。
(1) 进入系统视图。
system-view
(2) 进入HTTP类型的虚服务器视图。
virtual-server virtual-server-name
(3) 配置外链代理的URI标识。
external-link inject-uri string
缺省情况下,未配置外链代理的URI标识。
URI标识用来识别请求报文中是否为改写后的域名。
(4) 配置外链代理的域名后缀。
external-link inject-domain-suffix domain-suffix
缺省情况下,未配置外链代理的域名后缀。
(5) (可选)指定外链代理的SNAT地址池。
external-link snat-pool pool-name
缺省情况下,未指定外链代理的SNAT地址池,使用设备通往服务器的出接口IP地址作为客户端IP地址。
当设备收到包含改写后外链域名的DNS请求报文后,设备会提取出原始的外链域名并使用外链代理SNAT地址池中的地址作为客户端IP地址,代替客户端请求IPv4外链资源。
(6) (可选)配置外链代理的白名单表项。
external-link whitelist domain domain-name
缺省情况下,未配置外链代理的白名单表项。
将指定域名添加到外链代理白名单中,设备不会对加入白名单中的外链进行代理。
(7) 开启外链代理功能。
external-link proxy enable
缺省情况下,外链代理功能处于关闭。
(8) 退回系统视图。
quit
(9) (可选)配置加载外链改写文件。
loadbalance reload external-link file filename
缺省情况下,使用缺省外链改写文件。
当外链改写文件内容发生变化后,需要再次执行本命令重新加载。
在HA组网中,HA的主管理设备上配置服务器负载均衡功能时,需要通过配置本功能,将虚服务器与VRRP备份组绑定,以保证正反向报文在同一台Master设备上处理。关于HA的详细介绍,请参见“高可靠性配置指导”中的“双机热备(RBM)”。
对于绑定了不同VRRP备份组的多个虚服务器,不允许引用同一个SNAT地址池。
同一个虚服务器最多只能绑定一个VRRP IPv4备份组和一个VRRP IPv6备份组。VRRP IPv4备份组仅对IPv4类型的虚服务器地址生效,VRRP IPv6备份组仅对IPv6类型的虚服务器地址生效。
(1) 进入系统视图。
system-view
(2) 进入虚服务器视图。
virtual-server virtual-server-name
(3) 配置虚服务器绑定的VRRP备份组。
vrrp vrid virtual-router-id interface interface-type interface-number
缺省情况下,未绑定任何VRRP备份组。
在集群组网中,流量组是集群中处理业务的基本逻辑单元。配置虚服务器引用的集群流量组,可以将匹配虚服务器的报文提交给集群流量组进行处理。关于流量组的详细介绍,请参见“高可靠性配置指导”中的“集群(RBM)”。
虚服务器引用集群流量组时,需保证当前设备已经加入引用的流量组。
不同类型的虚服务器可以引用相同的集群流量组。
多次执行本命令,最后一次执行的命令生效。
(1) 进入系统视图。
system-view
(2) 进入虚服务器视图。
virtual-server virtual-server-name
(3) 配置虚服务器引用的集群流量组。
traffic-group traffic-group-id
缺省情况下,未指定虚服务器引用的集群流量组。
配置热备份功能时,为达到主备切换时业务不中断的目的,需要在虚服务器下开启会话扩展信息和持续性表项的备份功能。
在开启虚服务器的持续性表项备份功能之前,请确保主用和备用设备上均不存在持续性表项。可以通过先开启持续性表项备份功能,再引用持续性组,保证备份前设备上不存在持续性表项。
在VRRP组网中,开启虚服务器的持续性表项备份功能时必须指定global参数,否则配置不生效。
若设备的配置发生以下变化,则设备会删除当前已有的持续性表项,后续流量将会重新触发生成新的持续性表项。
· 关闭持续性表项备份功能
· 持续性表项备份由组间备份切换为全局备份
· 持续性表项备份由全局备份切换为组间备份
(1) 进入系统视图。
system-view
(2) 进入虚服务器视图。
virtual-server virtual-server-name
(3) 开启虚服务器的会话扩展信息备份功能。
connection-sync enable
缺省情况下,虚服务器的会话扩展信息备份功能处于关闭状态。
Diameter、HTTP类型的虚服务器不支持本功能。
(4) 开启虚服务器的持续性表项备份功能。
sticky-sync enable [ global ]
缺省情况下,虚服务器的持续性表项备份功能处于关闭状态。
在多数据中心的容灾备份组网中,通过在各数据中心的负载均衡设备上开启虚服务器IP地址发布功能,可以实现多数据中心之间的全局负载均衡。
开启虚服务器IP地址发布功能后,设备会将虚服务器的IP地址发布给OSPF模块参与路由计算,当数据中心进行切换的时候,保证访问虚服务器的流量也可以自动切换,从而提高负载均衡服务的可靠性。有关OSPF的配置请参见“三层技术-IP路由”中的“OSPF”。
(1) 进入系统视图。
system-view
(2) 进入虚服务器视图。
virtual-server virtual-server-name
(3) 开启虚服务器IP地址发布功能。
route-advertisement enable
缺省情况下,虚服务器IP地址发布功能处于关闭状态。
通过本配置可从设备的指定接口发送免费ARP报文和ND报文。有关免费ARP的详细介绍,请参见“三层技术-IP业务配置指导”中的“ARP”。有关ND报文的详细介绍,请参见“三层技术-IP业务配置指导”中的“IPv6基础”。
若虚服务器的IP地址与设备连接客户端的接口IP地址在同一网段,则必须配置虚服务器IP地址的IPv4掩码长度为32或IPv6前缀长度为128,必须指定发送免费ARP报文或ND报文的接口。否则,无需指定发送免费ARP报文或ND报文的接口。
(1) 进入系统视图。
system-view
(2) 进入虚服务器视图。
virtual-server virtual-server-name
(3) 指定发送免费ARP报文或者ND报文的接口。
arp-nd interface interface-type interface-number
缺省情况下,未指定发送免费ARP报文或者ND报文的接口。
若开启虚服务不可用时立即断开TCP连接功能,当虚服务不可用后,收到客户端的SYN报文时会立即应答RST报文。
(1) 进入系统视图。
system-view
(2) 进入虚服务器视图。
virtual-server virtual-server-name
(3) 开启虚服务不可用时立即断开TCP连接功能。
service-down-action reset
缺省情况下,虚服务不可用时立即断开TCP连接功能处于关闭状态。
开启本功能后,当设备收到客户端的请求报文后,会在HTTP报文拓展头的X-Forwarded-For字段插入客户端的源IP地址。
(1) 进入系统视图。
system-view
(2) 进入HTTP类型的虚服务器视图。
virtual-server virtual-server-name
(3) 开启X-Forwarded-For字段源IP地址插入功能。
insert-xff enable
缺省情况下,X-Forwarded-For字段源IP地址插入功能处于关闭状态。
配置本命令后,设备通过代理协议来透传真实的源IP地址信息到后端实服务器。
若配置本命令时未指定代理协议版本,则默认为v1版本。配置本命令之前,请确保后端实服务器支持指定版本的代理协议,否则将导致设备与实服务器之间的新建连接失败。
仅工作在七层的TCP类型虚服务器配置本命令才生效。
(1) 进入系统视图。
system-view
(2) 进入TCP类型的虚服务器视图。
virtual-server virtual-server-name
(3) 开启TCP类型虚服务器的代理协议功能。
proxy-protocol enable [ v1 | v2 ]
缺省情况下,TCP类型虚服务器的代理协议功能处于关闭状态。
通过配置本功能,可以根据用户需求指定负载均衡快速日志的输出内容。设备将把指定内容的日志信息采用快速日志方式发往日志主机。有关快速日志的详细介绍,请参见“网络管理和监控配置指导”中的“快速日志输出”。
配置本功能前,请确保通过快速日志输出功能v2配置了快速日志主机(customlog host v2)且已配置了负载均衡模块输出参数(module loadbalance);或者通过快速日志输出功能v1开启了负载均衡模块的快速日志输出功能(customlog format)且已配置了快速日志输出参数(customlog host)。
快速日志输出内容支持配置变量,具体支持的变量请参见命令手册。
(1) 进入系统视图。
system-view
(2) 进入IP、TCP、UDP和HTTP类型的虚服务器视图。
virtual-server virtual-server-name
(3) 配置快速日志输出的内容。
customlog content content-value
缺省情况下,无快速日志输出。
配置完虚服务器后,需要将其开启后才能进入工作状态。
(1) 进入系统视图。
system-view
(2) 进入虚服务器视图。
virtual-server virtual-server-name
(3) 开启虚服务器。
service enable
缺省情况下,虚服务器处于关闭状态。
为了便于对实服务器进行统一管理,可将具有相同或相似功能的实服务器抽象成一个组,称为实服务组。比如,可按存储内容的不同划分为歌曲服务器组、视频服务器组和图片服务器组等。
四层和七层服务器负载均衡的实服务组配置完全相同。
实服务器配置任务如下:
(1) 创建实服务组
(2) (可选)添加并配置实服务组成员
(3) 配置实服务组的调度算法
(4) 配置NAT功能
请至少选择其中一项进行配置:
(5) 配置可用条件
(6) (可选)配置温暖上线功能
(7) (可选)配置健康检测功能
(8) (可选)配置自定义监控功能
(9) (可选)配置智能监控功能
(10) (可选)配置繁忙处理方式
(11) (可选)配置故障处理方式
(1) 进入系统视图。
system-view
(2) 创建实服务组,并进入实服务组视图。
server-farm server-farm-name
(3) (可选)配置实服务组的描述信息。
description text
缺省情况下,未配置实服务组的描述信息。
设备支持通过两种方式向实服务组中添加成员:
· 在实服务组视图下,通过本配置创建实服务组成员或添加已存在的实服务器。
· 在实服务器视图下,指定其所属的实服务组。具体配置请参见“创建实服务器并指定其所属实服务组”。
本配置用来指定实服务器在实服务组内的权值、调用优先级、连接参数、健康检测功能、慢宕功能以及平滑退出功能。基于实服务组成员的调度算法会依据这些配置,选出当前实服务组中最优的实服务器。
通过单独执行shutdown命令可以立即中断实服务组成员的已有连接,然而,慢宕和平滑退出功能不会立即中断实服务组成员的已有连接。开启慢宕功能后,首先不再建立新的连接,再等待已有连接自然老化,从而实现服务组成员平滑关闭。而开启平滑退出功能后,实服务组成员处理已建立连接的流量,以及匹配上现有持续性表项的流量,直到所有持续性表项老化后将不再建立新连接,并且一直保持对实服务组成员的健康检测。
当实服务组成员需要进行维护或升级时,为了避免突然中断连接导致用户体验下降,可以选择启用慢宕功能。而当需要暂时移除实服务组成员,并希望能够随时重新启用时,可以选择平滑退出功能,确保管理员可以实时监控移除的实服务组成员健康状态。
慢宕和平滑退出功能需要与shutdown命令配合使用。例如,开启了慢宕功能后再执行shutdown命令,该实服务组成员才会开始慢宕。单独执行shutdown命令将会立即关闭实服务组成员。
实服务组成员的慢宕功能与平滑退出功能互斥,后开启的功能生效。
(1) 进入系统视图。
system-view
(2) 进入实服务组视图。
server-farm server-farm-name
(3) 创建并添加实服务组成员,并进入实服务组成员视图。
real-server real-server-name port port-number
若指定名称的实服务器已存在,则本命令只是在实服务组视图下添加已存在的实服务器。
如果在实服务器中配置了域名,且收到了域名解析结果,实服务组在引用该实服务器后,会自动引用对应域名解析结果的临时实服务器组成员,临时成员的名称为“auto_IP地址”的形式,如“auto_1.1.1.1”。
(4) (可选)配置实服务组成员的描述信息。
description text
缺省情况下,未配置实服务组成员的描述信息。
(1) 进入系统视图。
system-view
(2) 进入实服务组视图。
server-farm server-farm-name
(3) 进入实服务组成员视图。
real-server real-server-name port port-number
(4) 配置实服务组成员的权值。
weight weight-value
缺省情况下,实服务组成员的权值为100。
(5) 配置实服务组成员的调用优先级
priority priority
缺省情况下,实服务组成员的调度优先级为4。
(1) 进入系统视图。
system-view
(2) 进入实服务组视图。
server-farm server-farm-name
(3) 进入实服务组成员视图。
real-server real-server-name port port-number
(4) 配置实服务组成员所允许的最大连接速率。
rate-limit connection connection-number
缺省情况下,实服务器所允许的最大连接速率为0,即不受限制。
(5) 配置实服务组成员所允许的最大连接数。
connection-limit max max-number
缺省情况下,实服务组成员所允许的最大连接数为0,即不受限制。
(6) 实服务组成员所允许的最大HTTP请求速率。
rate-limit http-request request-number
缺省情况下,实服务组成员所允许的最大HTTP请求速率为0,即不受限制。
(1) 进入系统视图。
system-view
(2) 进入实服务组视图。
server-farm server-farm-name
(3) 进入实服务组成员视图。
real-server real-server-name port port-number
(4) 指定实服务组成员的健康检测方法。
probe template-name [ nqa-template-port ]
缺省情况下,未指定实服务组成员的健康检测方法。
设备支持通过引用NQA模板进行健康探测。有关NQA模板的详细介绍,请参见“网络管理和监控配置指导”中的“NQA”。
(5) 配置实服务组成员健康检测的成功条件。
success-criteria { all | at-least min-number }
缺省情况下,只有全部方法都通过检测才认为健康检测成功。
(6) (可选)开启实服务组成员的健康检测日志功能。
probe log enable
缺省情况下,实服务组成员健康检测日志功能处于开启状态。
(1) 进入系统视图。
system-view
(2) 进入实服务组视图。
server-farm server-farm-name
(3) 进入实服务组成员视图。
real-server real-server-name port port-number
(4) 指定实服务组成员引用的自定义监控类型的负载均衡探测模板。
probe-template external-monitor template-name
缺省情况下,未指定实服务组成员引用的自定义监控类型的负载均衡探测模板。
(1) 进入系统视图。
system-view
(2) 进入实服务组视图。
server-farm server-farm-name
(3) 进入实服务组成员视图。
real-server real-server-name port port-number
(4) 开启实服务组成员的慢宕功能。
slow-shutdown enable
缺省情况下,实服务组成员的慢宕功能处于关闭状态。
(5) 关闭实服务组成员。
shutdown
缺省情况下,实服务组成员处于开启状态。
(1) 进入系统视图。
system-view
(2) 进入实服务组视图。
server-farm server-farm-name
(3) 进入实服务组成员视图。
real-server real-server-name port port-number
(4) 开启实服务组成员的平滑退出功能。
slow-offline enable
缺省情况下,实服务组成员的平滑退出功能处于关闭状态。
(5) 关闭实服务组成员。
shutdown
缺省情况下,实服务组成员处于开启状态。
(1) 进入系统视图。
system-view
(2) 进入实服务组视图。
server-farm server-farm-name
(3) 进入实服务组成员视图。
real-server real-server-name port port-number
(4) 配置实服务组成员关联的变量。
variable variable-name value value
缺省情况下,未配置实服务组成员关联的变量。
重写TCP载荷的负载均衡动作通过调用实服务组成员关联的变量将TCP报文载荷的指定内容替换为实服务组成员关联的变量值。
(1) 进入系统视图。
system-view
(2) 进入实服务组视图。
server-farm server-farm-name
(3) 配置查找所有可用实服务组成员失败时,将流量转发给最近一次选中的实服务组成员。
all-service-down action forward
缺省情况下,查找所有可用实服务组成员失败时丢弃报文。
仅当实服务组被工作在七层的TCP类型虚服务器引用时,配置才能生效。
设备根据实服务组中配置的调度算法,计算出处理用户请求的实服务器。对于调度算法的详细介绍,请参见“调度算法”。
加权最小连接算法和最快响应算法根据计算范围不同,可分为:
· 基于实服务器的调度算法:算法所使用的参数为实服务器的整体性能参数,使用的权值为实服务器视图下配置的权值。
· 基于实服务组成员的调度算法:算法所使用的参数为实服务组成员在当前实服务组中的性能参数,使用的权值为实服务组成员视图下配置的权值。
(1) 进入系统视图。
system-view
(2) 进入实服务组视图。
server-farm server-farm-name
(3) 配置实服务组的调度算法。
¡ 基于实服务器:
predictor { dync-round-robin | least-connection | least-time | { bandwidth | max-bandwidth } [ inbound | outbound ] }
¡ 基于实服务组成员:
predictor hash [ carp ] address { destination | source | source-ip-port } [ mask mask-length ] [ prefix prefix-length ]
predictor hash [ carp ] http [ offset offset ] [ start start-string ] [ [ end end-string ] | [ length length ] ]
predictor { least-connection member [ slow-online ] | random | round-robin }
缺省情况下,实服务组的调度算法为加权轮转算法。
(4) 配置实服务组中可被调度算法调用的实服务器数量限制。
selected-server min min-number max max-number
缺省情况下,实服务组中调用优先级最高的实服务器全部被调度算法调用。
在三角传输模式下,需要在实服务组中关闭NAT功能。
(1) 进入系统视图。
system-view
(2) 进入实服务组视图。
server-farm server-farm-name
(3) 在实服务组中关闭NAT功能。
transparent enable
缺省情况下,实服务组中的NAT功能处于开启状态。
实服务组被HTTP类型的虚服务器引用时,即使关闭了NAT功能也将仍按照NAT模式处理。
NAT模式又分为DNAT、SNAT和DNAT+SNAT这三种实现方式,对于DNAT方式,只需在实服务组中开启NAT功能即可;而对于SNAT和DNAT+SNAT这两种方式,还需配置SNAT地址转换方式。实服务组配置相应的SNAT转换方式之后,负载均衡设备将把收到报文的源IP地址按照对应的方式转换后再转发出去。设备在实服务组视图下支持配置三种源地址转换方式:
· 自动映射:采用设备与实服务器通信的接口IP地址进行源地址转换。
· TCP Option:根据收到报文的TCP Option字段携带的地址进行源地址转换。此方式还需要在TCP类型的参数模板中,配置进行SNAT地址转换的TCP选项。具体配置请参见“配置进行SNAT地址转换的TCP选项”。
· SNAT地址池:根据配置的SNAT地址池进行源地址转换。
当设备上部署了多块业务板时,由多块业务板同时处理业务,所以各业务板存在地址资源冲突问题。为了解决此问题,需要对SNAT地址池进行拆分,设备支持通过配置SNAT地址池的类型指定不同的拆分方式,具体类型包括:
· 地址拆分:SNAT地址池中的地址在各个备份组间进行均分,各备份组的地址范围不重复。
· 端口拆分:所有备份组的SNAT地址范围均相同,仅对端口进行平均拆分,各备份组的端口范围不同。
· 指定备份组:指定地址范围仅工作在特定的备份组。各备份组的SNAT地址范围在配置SNAT地址池成员时指定。
有关备份组的详细介绍,请参见“高可靠性配置指导”中的“VRRP”。
在双主模式的高可靠性组网中,主管理设备上配置负载均衡功能时,可以通过配置将SNAT地址池与VRRP备份组绑定,以保证该SNAT地址池的流量都上送到此VRRP备份组的Master设备上处理。关于高可靠性的详细介绍,请参见“高可靠性配置指导”中的“双机热备(RBM)”。
在双机热备组网中SNAT地址池中的地址在发布ARP或ND报文时,会根据当前配置取合适的MAC地址来发布通告报文和回复ARP或ND请求,优先级从高到低为:
· SNAT地址池绑定了VRRP备份组时,使用绑定的VRRP备份组的虚拟MAC地址;
· SNAT地址池对应的虚服务器绑定了VRRP备份组时,使用接口下同组的VRRP备份组的虚拟MAC地址;
· 使用对应的接口的MAC地址。
·
一个SNAT地址池由多个地址成员组成,每个地址成员最多包含256个IPv4地址或10000个IPv6地址,且不同SNAT地址成员中的IPv4或IPv6地址不允许重叠,同一SNAT地址池的不同地址成员中,也不允许包含相同的IPv4地址。
对于TCP Option类型的SNAT转换方式,需要在业务处理之前将所用到的源地址插入到指定的TCP Option中。
若SNAT地址池中的IP地址与设备连接服务器端的接口IP地址在同一网段,则必须指定发送免费ARP报文或ND报文的接口。否则,无需指定发送免费ARP报文或ND报文的接口。
(1) 进入系统视图。
system-view
(2) 进入实服务组视图。
server-farm server-farm-name
(3) 在实服务组中开启NAT功能。
undo transparent enable
缺省情况下,实服务组中的NAT功能处于开启状态。
实服务组被HTTP类型的虚服务器引用时,即使关闭了NAT功能也将仍按照NAT模式处理。
(1) 进入系统视图。
system-view
(2) (可选)创建SNAT地址池。
a. 创建SNAT地址池,并进入SNAT地址池视图。
loadbalance snat-pool pool-name
b. (可选)配置SNAT地址池的描述信息。
description text
缺省情况下,未配置SNAT地址池的描述信息。
c. 添加SNAT地址池的IP地址成员。
(IPv4网络)
ip range start start-ipv4-address end end-ipv4-address
(IPv6网络)
ipv6 range start start-ipv6-address end end-ipv6-address
缺省情况下,未配置SNAT地址池的IP地址成员。
d. 调整SNAT地址池成员的排序。
(IPv4网络)
move ip start start-ipv4-address1 end end-ipv4-address1 { after start start-ipv4-address2 end end-ipv4-address2 | top }
(IPv6网络)
move ipv6 start start-ipv6-address1 end end-ipv6-address1 { after start start-ipv6-address2 end end-ipv6-address2 | top }
e. (可选)配置SNAT地址池所属VPN实例。
vpn-instance vpn-instance-name
缺省情况下,SNAT地址池属于公网。
本命令仅用作配置隔离。当存在多个地址池出现地址资源重叠时,可以通过配置各个地址池属于不同的VPN实例进行配置隔离。
f. (可选)配置SNAT地址池绑定的VRRP备份组。
vrrp [ ipv6 ] vrid virtual-router-id interface interface-type interface-number
缺省情况下,SNAT地址池未绑定任何VRRP备份组。
同一个SNAT地址池最多只能绑定一个VRRP IPv4备份组和一个VRRP IPv6备份组。
g. (可选)配置SNAT地址池引用的集群流量组。
traffic-group traffic-group-id
缺省情况下,未指定SNAT地址池引用的集群流量组。
SNAT地址池引用集群流量组时,需保证当前设备已经加入引用的流量组。有关流量组的详细介绍,请参见“高可靠性配置指导”中的“集群(RBM)”。
配置SNAT地址转换方式为SNAT地址池方式时,必须配置本步骤。
(3) (可选)指定发送免费ARP报文或者ND报文的接口。
arp-nd interface interface-type interface-number
缺省情况下,未指定发送免费ARP报文或者ND报文的接口。
(4) 退回系统视图。
quit
(5) 进入实服务组视图。
server-farm server-farm-name
(6) 在实服务组中开启NAT功能。
undo transparent enable
缺省情况下,实服务组中的NAT功能处于开启状态。
实服务组被HTTP类型的虚服务器引用时,即使关闭了NAT功能也将仍按照NAT模式处理。
(7) 配置SNAT地址转换方式。请选其中一项进行配置。
¡ 配置自动映射方式的SNAT地址转换。
snat-mode auto-map
¡ 配置TCP Option方式的SNAT地址转换。
snat-mode tcp-option
¡ 配置SNAT地址池方式的SNAT地址转换。
snat-pool pool-name
缺省情况下,未配置SNAT地址转换方式。
通过配置实服务组的可用条件,可将流量在主用实服务组和备用实服务组之间进行切换:当主用实服务组中的实服务器可用率低于下限时,将流量切换到备用实服务组上,以防止服务器受到大流量的冲击;待主用实服务组中的实服务器可用率恢复到上限时,再将流量切换回来。
(1) 进入系统视图。
system-view
(2) 进入实服务组视图。
server-farm server-farm-name
(3) 配置实服务组的可用条件。
activate lower lower-percentage upper upper-percentage
缺省情况下,实服务组中只要有一个实服务器可用,该实服务组就被认为可用。
当向实服务组中添加实服务器时,某些新增的实服务器无法立即承担大量业务,此时可以开启温暖上线功能。这样,当实服务器上线后,在准备时间内,负载均衡设备不会向其分配任何业务;准备时间超时后,负载均衡设备在爬升时间内会逐步增加向其分配的业务量;爬升时间超时后,负载均衡设备开始向其正常分配业务。
(1) 进入系统视图。
system-view
(2) 进入实服务组视图。
server-farm server-farm-name
(3) 在实服务组中开启实服务器的温暖上线功能。
slow-online [ standby-time standby-time ramp-up-time ramp-up-time ]
缺省情况下,实服务组中实服务器的温暖上线功能处于关闭状态。
通过健康检测可以对实服务器进行检测,保证其能够提供有效的服务。
用户可在实服务组视图下对组内的所有实服务组成员进行配置,也可在实服务组成员视图下只对当前实服务组成员进行配置,或者在实服务器视图下只对当前实服务器进行配置,后两者的配置优先级相同且高于实服务组视图下的健康检测配置。建议优先在实服务组视图下配置健康检测。
设备支持通过引用NQA模板进行健康探测。有关NQA模板的详细介绍,请参见“网络管理和监控配置指导”中的“NQA”。
(1) 进入系统视图。
system-view
(2) 进入实服务组视图。
server-farm server-farm-name
(3) 指定实服务组的健康检测方法。
probe template-name [ nqa-template-port ]
缺省情况下,未指定实服务组的健康检测方法。
(4) 配置实服务组健康检测的成功条件。
success-criteria { all | at-least min-number }
缺省情况下,只有全部方法都通过检测才认为健康检测成功。
智能监控功能通过统计实服务器发出的RST报文的数量、零窗口报文的数量与HTTP响应报文中的异常URL次数来判断实服务组成员的健康状态,并执行相应的保护动作。通过在实服务组视图下引用TCP RST、TCP zero-window或HTTP passive类型的负载均衡探测模板,可以开启实服务组的智能监控功能。
如果智能监控功能将实服务器的状态置为Auto shutdown,则可以通过配置实服务器的智能监控自动恢复时间使得实服务器自动恢复为正常状态,也可以通过配置手动将实服务器或实服务组成员的状态恢复为正常状态。若开启健康检测手动恢复功能,当实服务组成员健康检测成功后,不会自动恢复为正常状态,需要在实服务组成员视图下手动恢复其为可用状态。
因为RST报文或零窗口报文达到阈值导致实服务器关闭或导致实服务器处于繁忙状态时,若删除实服务组引用的负载均衡探测模板,则实服务器的状态会立即恢复为正常。
异常URL次数达到阈值时,HTTP passive类型的负载均衡探测模板会将实服务器的状态置为Auto shutdown,若删除实服务组引用的负载均衡探测模板,则实服务器的状态会立即恢复为正常。
在配置智能监控功能前,请先完成负载均衡探测模板的相关配置,具体配置请参见“配置负载均衡探测模板”。
(1) 进入系统视图。
system-view
(2) 进入实服务组视图。
server-farm server-farm-name
(3) 指定实服务组引用的负载均衡探测模板。
probe-template { http-passive | tcp-rst | tcp-zero-window } template-name
缺省情况下,未指定实服务组引用的负载均衡探测模板。
(4) (可选)配置实服务器的智能监控自动恢复时间。
auto-shutdown recovery-time recovery-time
缺省情况下,实服务组的智能监控自动恢复时间为0。0表示不自动恢复。
(5) (可选)开启健康检测手动恢复功能。
manual-recover enable
缺省情况下,健康检测手动恢复功能处于关闭状态。
(1) 进入系统视图。
system-view
(2) 进入实服务器视图。
real-server real-server-name
(3) 手动恢复实服务器的状态。
recover-to-active
(1) 进入系统视图。
system-view
(2) 进入实服务组视图。
server-farm server-farm-name
(3) 进入实服务组成员视图。
real-server real-server-name port port-number
(4) 手动恢复实服务器的状态。
recover-to-active
自定义监控功能是指,通过执行用户自定义的监控脚本对实服务组成员的运行状态进行监控。
既可在实服务组视图下对组内的所有实服务组成员进行配置,也可在实服务组成员视图下只对当前实服务组成员进行配置,后者的配置优先级高。
在配置自定义监控功能前,请先完成负载均衡探测模板的相关配置,具体配置请参见“配置负载均衡探测模板”。
(1) 进入系统视图。
system-view
(2) 进入实服务组视图。
server-farm server-farm-name
(3) 指定实服务组引用的自定义监控类型的负载均衡探测模板。
probe-template external-monitor template-name
缺省情况下,未指定实服务组引用的自定义监控类型的负载均衡探测模板。
只有当组内所有实服务器均处于繁忙状态时,实服务组才处于繁忙状态。通过本配置可以指定实服务组处于繁忙状态的处理方式。设备支持以下三种繁忙处理方式:
· 调度失败:设备停止向处于繁忙状态实服务组分发流量,若配置负载均衡策略允许继续匹配下一条规则,则继续匹配下一条匹配规则,否则直接丢弃请求报文。
· 排队等待:设备停止向处于繁忙状态实服务组分发流量,并且将新的请求报文加入等待队列。若等待队列的长度超过配置的队列长度,后续的请求报文将会被丢弃;若请求报文加入队列后的等待时间超过配置的老化时间,请求报文将会被丢弃。
· 强制调度:实服务组内的所有实服务器均参与调度。
系统判断实服务器是否处于繁忙状态的依据包括:实服务器所允许的最大连接数、实服务器所允许的最大连接速率、实服务器所允许的最大HTTP请求速率、实服务器所允许的最大带宽(总带宽、入带宽和出带宽)和SNMP-DCA探测模板返回的探测状态。
(1) 进入系统视图。
system-view
(2) 进入实服务组视图。
server-farm server-farm-name
(3) 配置实服务组的繁忙处理方式。
busy-action { drop | enqueue length length timeout timeout-value | force }
缺省情况下,实服务组的繁忙处理方式为调度失败。
通过本配置可以选择某台实服务器故障时的处理方式:
· 保持已有连接:不主动断开与故障实服务器的连接,连接继续保持还是断开将由协议自身的超时机制决定。
· 重定向连接:把连接重定向到实服务组中其它可用的实服务器上。
· 断开已有连接:主动断开与故障实服务器的连接。对于TCP报文,将发送RST报文;对于其它类型的报文,将发送ICMP不可达报文。
(1) 进入系统视图。
system-view
(2) 进入实服务组视图。
server-farm server-farm-name
(3) 配置实服务器的故障处理方式。
fail-action { keep | reschedule | reset }
缺省情况下,实服务器的故障处理方式为保持已有连接。
实服务器是负载均衡设备上处理用户业务的实体。一个实服务器可以属于多个实服务组,一个实服务组也可以包含多个实服务器。
四层和七层服务器负载均衡的实服务器配置完全相同。
实服务器配置任务如下:
(1) 创建实服务器并指定其所属实服务组
(2) 配置IP地址、域名和端口号
(3) 配置权值和调用优先级
(4) (可选)配置带宽和连接参数
(5) (可选)配置健康检测功能
(6) (可选)配置自定义监控功能
(7) (可选)配置实服务器慢宕功能
(8) (可选)配置实服务器的平滑退出功能
(9) (可选)关闭指定IP地址的实服务器
(10) (可选)配置实服务器所属VPN实例
¡ (可选)指定实服务器所属的VPN实例
¡ (可选)关闭实服务器所属VPN实例的继承功能
(1) 进入系统视图。
system-view
(2) 创建实服务器,并进入实服务器视图。
real-server real-server-name
(3) (可选)配置实服务器的描述信息。
description text
缺省情况下,未配置实服务器的描述信息。
(4) 指定实服务器所属的实服务组。
server-farm server-farm-name
缺省情况下,实服务器不属于任何实服务组。
(1) 进入系统视图。
system-view
(2) 进入实服务器视图。
real-server real-server-name
(3) 配置实服务器的IP地址或域名,请选择其中一项进行配置。
¡ 配置实服务器的IP地址。
(IPv4网络)
ip address ipv4-address
(IPv6网络)
ipv6 address ipv6-address
缺省情况下,未配置实服务器的IP地址。
¡ 配置实服务器的域名。
domain-name domain-name
缺省情况下,未配置实服务器的域名。
(4) 配置实服务器的端口号。
port port-number
缺省情况下,实服务器的端口号为0(表示继续使用原报文携带的端口号)。
通过本配置可以调整实服务器的调度算法所使用的权值,以及实服务器在实服务组中的调用优先级。
(1) 进入系统视图。
system-view
(2) 进入实服务器视图。
real-server real-server-name
(3) 配置实服务器的权值。
weight weight-value
缺省情况下,实服务器的权值为100。
(4) 配置实服务器的调用优先级。
priority priority
缺省情况下,实服务器的调用优先级为4。
通过本配置可以调整实服务器所允许的最大带宽、最大连接数、最大连接速率和最大HTTP请求速率。这四个参数值都是判断实服务器是否繁忙的依据。若访问实服务器的带宽、连接数、每秒连接数或每秒HTTP请求数超过配置的数值,则实服务器进入繁忙状态。
(1) 进入系统视图。
system-view
(2) 进入实服务器视图。
real-server real-server-name
(3) 配置实服务器所允许的最大带宽。
rate-limit bandwidth [ inbound | outbound ] bandwidth-value kbps
缺省情况下,实服务器所允许的最大总带宽、最大入带宽和最大出带宽均为0,即不受限制。
(4) 配置实服务器所允许的最大连接数。
connection-limit max max-number
缺省情况下,实服务器所允许的最大连接数为0,即不受限制。
(5) 配置实服务器所允许的最大连接速率。
rate-limit connection connection-number
缺省情况下,实服务器所允许的最大连接速率为0,即不受限制。
(6) 实服务器所允许的最大HTTP请求速率。
rate-limit http-request request-number
缺省情况下,实服务器所允许的最大HTTP请求速率为0,即不受限制。
通过健康检测可以对实服务器进行检测,保证其能够提供有效的服务。
用户可在实服务组视图下对组内的所有实服务组成员进行配置,也可在实服务组成员视图下只对当前实服务组成员进行配置,或者在实服务器视图下只对当前实服务器进行配置,后两者的配置优先级相同且高于实服务组视图下的健康检测配置。建议优先在实服务组视图下配置健康检测。
实服务器的健康检测结果影响实服务器组成员的使用,实服务器组成员的健康检测结果不影响实服务器的使用。
(1) 进入系统视图。
system-view
(2) 进入实服务器视图。
real-server real-server-name
(3) 指定实服务器的健康检测方法。
probe template-name [ nqa-template-port ]
缺省情况下,未指定实服务器的健康检测方法。
(4) 配置实服务器健康检测的成功条件。
success-criteria { all | at-least min-number }
缺省情况下,只有全部方法都通过检测才认为健康检测成功。
(5) 退回系统视图。
quit
(6) (可选)开启实服务器的健康检测日志功能。
probe log enable
缺省情况下,实服务器的健康检测日志功能处于开启状态。
自定义监控功能是指,通过执行用户自定义的监控脚本对实服务组成员的运行状态进行监控。
在配置自定义监控功能前,请先完成负载均衡探测模板的相关配置,具体配置请参见“配置负载均衡探测模板”。
(1) 进入系统视图。
system-view
(2) 进入实服务器视图。
real-server real-server-name
(3) 指定实服务器引用的自定义监控类型的负载均衡探测模板。
probe-template external-monitor template-name
缺省情况下,未指定实服务器引用的自定义监控类型的负载均衡探测模板。
通过shutdown命令可以立即中断实服务器的已有连接,而慢宕则不会立即中断实服务器的已有连接,而是让其自然老化,并且不再建立新的连接。
当实服务器需要进行维护或升级时,为了避免突然中断连接导致用户体验下降,可以选择启用慢宕功能。
慢宕功能需要与shutdown命令配合使用,即在开启了慢宕功能之后再关闭实服务器,该实服务器才会开始慢宕。
实服务器的慢宕功能与平滑退出功能互斥,后开启的功能生效。
(1) 进入系统视图。
system-view
(2) 进入实服务器视图。
real-server real-server-name
(3) 开启实服务器的慢宕功能。
slow-shutdown enable
缺省情况下,实服务器的慢宕功能处于关闭状态。
(4) 关闭实服务器。
shutdown
缺省情况下,实服务器处于开启状态。
开启平滑退出功能后,实服务器处理已建立连接的流量,以及匹配上现有持续性表项的流量,直到所有持续性表项老化后将不再建立新连接,并且一直保持对实服务器的健康检测。
当需要暂时移除实服务器,并希望能够随时重新启用时,可以选择平滑退出功能,确保管理员可以实时监控移除的实服务器健康状态。
本功能需要与shutdown命令配合使用。
实服务器的慢宕功能与平滑退出功能互斥,后开启的功能生效。
(1) 进入系统视图。
system-view
(2) 进入实服务器视图。
real-server real-server-name
(3) 开启实服务器的平滑退出功能。
slow-offline enable
缺省情况下,实服务器的平滑退出功能处于关闭状态。
(4) 关闭实服务器。
shutdown
缺省情况下,实服务器处于开启状态。
系统中可能存在多个相同地址的实服务器,当管理员需要将这些实服务器都关闭时,则可以通过此功能批量关闭这些实服务器。
在网络中,当一台物理服务器支持多种服务时,管理员可以在设备上配置多个相同IP地址的实服务器或实服务组成员,使其承担不同的业务。当后台物理服务器出现故障,需要立即关闭设备上对应的实服务器时,可以通过本功能批量关闭该IP地址的所有实服务器,以节省人工查找和逐个关闭实服务器的时间,提高网络运维的效率。
当一个实服务器下同时配置了IPv4地址和IPv6地址,通过本命令关闭任意一个地址时,该实服务器都将处于关闭状态。
(1) 进入系统视图。
system-view
(2) 关闭指定IP地址的实服务器。
(IPv4网络)
shutdown-real-servers ip ip-address [ vpn-instance vpn-instance-name ]
(IPv6网络)
shutdown-real-servers ipv6 ipv6-address [ vpn-instance vpn-instance-name ]
缺省情况下,指定IP地址的实服务器处于开启状态。
(1) 进入系统视图。
system-view
(2) 进入实服务器视图。
real-server real-server-name
(3) 指定实服务器所属的VPN实例。
vpn-instance vpn-instance-name
缺省情况下,当实服务器所属VPN实例的继承功能处于开启状态时,实服务器所属的VPN实例与虚服务器所属的VPN实例一致;当实服务器所属VPN实例的继承功能处于关闭状态时,实服务器服务于公网。
实服务器所属VPN实例的继承功能是指实服务器所属的VPN实例继承对应虚服务器所属的VPN实例。若在实服务器视图下执行vpn-instance命令指定了实服务器所属的VPN实例,则实服务器属于该VPN实例。若未指定实服务器所属的VPN实例,当实服务器所属VPN实例的继承功能处于开启状态时,实服务器所属的VPN实例与虚服务器所属的VPN实例一致;当该功能处于关闭状态时,实服务器服务于公网。
(1) 进入系统视图。
system-view
(2) 进入实服务器视图。
real-server real-server-name
(3) 关闭实服务器所属VPN实例的继承功能。
inherit vpn-instance disable
负载均衡类的作用是将报文分类,即通过匹配规则将报文按照一定条件进行匹配,以便将不同类型的报文在不同的负载均衡动作流程中处理。一个负载均衡类中最多允许创建65535条匹配规则。
负载均衡类配置任务如下:
(1) 配置通用类型负载均衡类
a. 创建负载均衡类
b. 创建匹配规则
请至少选择其中一项进行配置:
(2) 配置Diameter类型负载均衡类
a. 创建负载均衡类
b. 创建匹配规则
请至少选择其中一项进行配置:
(3) 配置HTTP类型负载均衡类
a. 创建负载均衡类
b. 创建匹配规则
请至少选择其中一项进行配置:
(4) 配置MySQL类型负载均衡类
a. 创建负载均衡类
b. 创建匹配规则
请至少选择其中一项进行配置:
(5) 配置RADIUS类型负载均衡类
a. 创建负载均衡类
b. 创建匹配规则
请至少选择其中一项进行配置:
(1) 进入系统视图。
system-view
(2) 创建通用类型的负载均衡类,并进入负载均衡类视图。
loadbalance class class-name type generic [ match-all | match-any ]
创建负载均衡类时必须为其指定类型;而在进入已创建的负载均衡类视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致。
(3) (可选)配置负载均衡类的描述信息。
description text
缺省情况下,未配置负载均衡类的描述信息。
(1) 进入系统视图。
system-view
(2) 创建Diameter、HTTP、MySQL或RADIUS类型的负载均衡类,并进入负载均衡类视图。
loadbalance class class-name type { diameter | http | mysql | radius } [ match-all | match-any ]
创建负载均衡类时必须为其指定类型;而在进入已创建的负载均衡类视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致。
(3) (可选)配置负载均衡类的描述信息。
description text
缺省情况下,未配置负载均衡类的描述信息。
(1) 进入系统视图。
system-view
(2) 进入负载均衡类视图。
loadbalance class class-name
(3) 创建嵌套类的匹配规则。
match [ match-id ] class class-name
(1) 进入系统视图。
system-view
(2) 进入负载均衡类视图。
loadbalance class class-name
(3) 创建源IP地址类型的匹配规则。
match [ match-id ] source { ip address ipv4-address [ mask-length | mask ] | ipv6 address ipv6-address [ prefix-length ] }
(1) 进入系统视图。
system-view
(2) 进入负载均衡类视图。
loadbalance class class-name
(3) 创建ACL类型的匹配规则。
match [ match-id ] acl [ ipv6 ] { acl-number | name acl-name }
(1) 进入系统视图。
system-view
(2) 进入通用类型或HTTP类型的负载均衡类视图。
loadbalance class class-name
(3) 创建基于入接口的匹配规则。
match [ match-id ] interface interface-type interface-number
(1) 进入系统视图。
system-view
(2) 进入通用类型或HTTP类型的负载均衡类视图。
loadbalance class class-name
(3) 创建基于用户的匹配规则。
match [ match-id ] [ identity-domain domain-name ] user user-name
(1) 进入系统视图。
system-view
(2) 进入通用类型或HTTP类型的负载均衡类视图。
loadbalance class class-name
(3) 创建基于用户组的匹配规则。
match [ match-id ] [ identity-domain domain-name ] user-group user-group-name
当在通用类型的负载均衡类中配置了TCP载荷类型的匹配规则,则TCP流量匹配上指定的正则表达式之后,执行相应的负载均衡动作。若在配置TCP载荷类型的匹配规则时,指定了not参数,则在TCP流量未匹配指定的正则表达式时,执行相应的负载均衡动作。
(1) 进入系统视图。
system-view
(2) 进入通用类型的负载均衡类视图。
loadbalance class class-name
(3) 创建TCP载荷类型的匹配规则。
match [ match-id ] payload payload [ case-insensitive ] [ not ]
当在Diameter类型的负载均衡类中配置了应用ID类型的匹配规则,则Diameter报文匹配上指定的应用ID之后,执行相应的负载均衡动作。
指定的应用ID应为Diameter基础协议和扩展协议中定义的应用识别号,如果指定的应用ID不存在,此匹配规则将不参与匹配。
(1) 进入系统视图。
system-view
(2) 进入Diameter类型的负载均衡类视图。
loadbalance class class-name
(3) 创建应用ID类型的匹配规则。
match [ match-id ] application-id [ application-id | all ]
当在Diameter类型的负载均衡类中配置了目的域类型的匹配规则,则流量匹配上指定的目的域名之后,执行相应的负载均衡动作。如果指定的域名不存在,此匹配规则将不参与匹配。
(1) 进入系统视图。
system-view
(2) 进入Diameter类型的负载均衡类视图。
loadbalance class class-name
(3) 创建目的域类型的匹配规则。
match [ match-id ] destination-realm realm-name
(1) 进入系统视图。
system-view
(2) 进入HTTP类型的负载均衡类视图。
loadbalance class class-name
(3) 创建HTTP实体类型的匹配规则。
match [ match-id ] content content [ offset offset ]
快速HTTP类型虚服务器不支持本功能。
(1) 进入系统视图。
system-view
(2) 进入HTTP类型的负载均衡类视图。
loadbalance class class-name
(3) 创建HTTP Cookie类型的匹配规则。
match [ match-id ] cookie cookie-name value value
(1) 进入系统视图。
system-view
(2) 进入HTTP类型的负载均衡类视图。
loadbalance class class-name
(3) 创建HTTP首部类型的匹配规则。
match [ match-id ] header header-name value value
(1) 进入系统视图。
system-view
(2) 进入HTTP类型的负载均衡类视图。
loadbalance class class-name
(3) 创建HTTP URL类型的匹配规则。
match [ match-id ] url url
(1) 进入系统视图。
system-view
(2) 进入HTTP类型的负载均衡类视图。
loadbalance class class-name
(3) 创建HTTP方法类型的匹配规则。
match [ match-id ] method { ext ext-type | rfc rfc-type }
(1) 进入系统视图。
system-view
(2) 进入HTTP类型的负载均衡类视图。
loadbalance class class-name
(3) 创建HTTP版本类型的匹配规则。
match [ match-id ] version { 1.0 | 1.1 | 2.0 }
(1) 进入系统视图。
system-view
(2) 进入MySQL类型的负载均衡类视图。
loadbalance class class-name
(3) 创建MySQL语句类型的匹配规则。
match [ match-id ] sql sql [ case-insensitive ] [ not ]
(1) 进入系统视图。
system-view
(2) 进入RADIUS类型的负载均衡类视图。
loadbalance class class-name
(3) 创建RADIUS属性的匹配规则。
match [ match-id ] radius-attribute { code attribute-code | user-name } value attribute-value
负载均衡动作可分为三大类:
· 转发类动作:确定是否转发以及如何转发报文。如果没有配置转发类动作,报文将被丢弃处理。
· 修改类动作:对报文执行一些修改行为。修改类动作应配合转发类动作使用,否则修改后的报文终将被丢弃。
· 代答类动作:用指定的文件对客户端HTTP请求进行应答。
如果用户想对报文进行丢弃处理,则可在创建负载均衡动作后,不为其指定任何上述动作。
· 对于四层服务器负载均衡,在配置转发类动作时,配置报文的转发模式为转发和配置指导转发的实服务组互斥。
· 对于七层服务器负载均衡,在配置负载均衡动作时,配置指导转发的实服务组、配置重定向功能和配置对指定的HTTP请求进行代答两两互斥。
· 对于七层服务器负载均衡,在配置负载均衡动作时,配置查找可用实服务器失败时继续匹配下一条引用规则和配置负载均衡处理失败时的代答文件互斥。
负载均衡动作配置任务如下:
(1) 配置通用类型负载均衡动作
a. 创建负载均衡动作
b. (可选)配置转发类动作
请从配置报文的转发模式为转发、指定指导转发的实服务组和关闭TCP连接中选择一项进行配置。
c. (可选)配置修改类动作
(2) 配置Diameter类型负载均衡动作
a. 创建负载均衡动作
b. (可选)配置转发类动作
请从指定指导转发的实服务组和关闭TCP连接中选择一项进行配置。
c. (可选)配置修改类动作
请至少选择其中一项进行配置。
(3) 配置HTTP类型负载均衡动作
a. 创建负载均衡动作
b. (可选)配置转发类动作
请从指定指导转发的实服务组和关闭TCP连接中选择一项进行配置。
c. (可选)配置修改类动作
请至少选择其中一项进行配置。
重写服务器发送的HTTP应答报文Location首部的URL
d. (可选)配置代答类动作
e. (可选)开启外链代理功能
(4) 配置RADIUS类型负载均衡动作
a. 创建负载均衡动作
b. (可选)配置转发类动作
c. (可选)配置修改类动作
(1) 进入系统视图。
system-view
(2) 创建通用类型的负载均衡动作,并进入负载均衡动作视图。
loadbalance action action-name type generic
创建负载均衡动作时必须为其指定类型;而在进入已创建的负载均衡动作视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致。
(3) (可选)配置负载均衡动作的描述信息。
description text
缺省情况下,未配置负载均衡动作的描述信息。
(1) 进入系统视图。
system-view
(2) 创建Diameter、HTTP或RADIUS类型的负载均衡动作,并进入负载均衡动作视图。
loadbalance action action-name type { diameter | http | radius }
创建负载均衡动作时必须为其指定类型;而在进入已创建的负载均衡动作视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致。
(3) (可选)配置负载均衡动作的描述信息。
description text
缺省情况下,未配置负载均衡动作的描述信息。
设备支持配置以下几种转发类动作,包括:
· 报文的转发模式为转发:当配置本功能的动作在负载均衡策略中被引用时,直接对匹配当前策略的报文进行转发。
· 指定指导转发的实服务组:当主用实服务组可用(该实服务组存在且有可用的实服务器)时,使用主用实服务组指导转发;当主用实服务组不可用而备用实服务组可用时,使用备用实服务组指导转发。
· 关闭TCP连接:当配置本功能的动作在负载均衡策略中被引用时,设备直接向客户端发送FIN报文或RST报文关闭匹配当前策略的TCP连接。
· 查找实服务器失败时继续匹配下一条引用规则:当配置本功能的动作在负载均衡策略中被引用时,在转发中根据该配置判断当前动作查找可用实服务器失败时,可继续顺序匹配策略中的下一条引用规则。
· 查找可用服务器失败时关闭TCP连接:当配置本功能的动作在负载均衡策略中被引用时,在转发中根据该配置判断当前动作查找可用实服务器失败时,设备直接向客户端发送FIN报文或RST报文关闭TCP连接。
(1) 进入系统视图。
system-view
(2) 进入通用类型的负载均衡动作视图。
loadbalance action action-name
(3) 配置报文的转发模式为转发。
forward all
缺省情况下,报文转发模式为丢弃。
(1) 进入系统视图。
system-view
(2) 进入负载均衡动作视图。
loadbalance action action-name
(3) 指定指导转发的实服务组。
server-farm server-farm-name [ backup backup-server-farm-name ] [ sticky sticky-name [ backup backup-sticky-name ] ]
缺省情况下,未指定指导转发的实服务组。
只有指定主用持续性组为RADIUS类型,备用持续性组为地址端口类型;或者主用持续性组为HTTP Cookie类型,被用持续性组为地址端口或HTTP passive类型时,才会生成备用持续性表项,否则备用持续性组的配置不生效。
(1) 进入系统视图。
system-view
(2) 进入Diameter、通用和HTTP类型的负载均衡动作视图。
loadbalance action action-name
(3) 配置关闭TCP连接的方式。
tcp-close { fin | rst }
缺省情况下,关闭TCP连接的方式为发送TCP FIN报文。
(1) 进入系统视图。
system-view
(2) 进入负载均衡动作视图。
loadbalance action action-name
(3) 配置查找实服务器失败时继续匹配下一条引用规则。
fallback-action continue
缺省情况下,查找可用实服务器失败时直接丢弃报文。
(1) 进入系统视图。
system-view
(2) 进入通用和HTTP类型的负载均衡动作视图。
loadbalance action action-name
(3) 配置查找可用实服务器失败时关闭TCP连接。
fallback-action close { fin | rst }
缺省情况下,查找可用实服务器失败时直接丢弃报文。
(1) 进入系统视图。
system-view
(2) 进入负载均衡动作视图。
loadbalance action action-name
(3) 配置发往服务器的IP报文中的ToS字段。
set ip tos tos-number
缺省情况下,不改变发往服务器的IP报文中的ToS字段。
(1) 进入系统视图。
system-view
(2) 进入TCP类型负载均衡动作视图。
loadbalance action action-name
(3) 重写TCP载荷。
payload rewrite { both | request | response } value value replace replace-string
缺省情况下,未对TCP载荷进行重写。
若指定方向的TCP报文中携带有指定的载荷,系统会将该载荷中的指定内容重写为新的内容。
仅七层TCP类型的虚服务器支持引用包含该动作的负载均衡策略。
(1) 进入系统视图。
system-view
(2) 进入Diameter类型负载均衡动作视图。
loadbalance action action-name
(3) 引用参数模板。
parameter { diameter-session | tcp } profile-name [ server-side ]
缺省情况下,未引用任何参数模板。
引用Diameter-Session类型参数模板,用来对负载均衡动作为转发到服务器组的流量根据该参数模板进行相应的处理;引用TCP类型的参数模板,用来对设备与服务器之间建立的TCP连接根据该参数模板进行处理和优化。
(1) 进入系统视图。
system-view
(2) 进入HTTP类型的负载均衡动作视图。
loadbalance action action-name
(3) 删除HTTP首部。
header delete { both | request | response } name header-name
缺省情况下,未配置删除HTTP首部。
如果指定方向的HTTP报文中携带有指定名称的首部,系统会将该首部从报文中删除。
(4) 插入HTTP首部。
header insert { both | request | response } name header-name value value [ encode { base64 | url } ]
缺省情况下,未配置插入HTTP首部。
系统将在指定方向的HTTP报文中插入指定名称和内容的首部。
若通过本功能,在请求方向的HTTP报文首部X-Forwarded-For字段插入客户端侧的源IP地址,则不需要在虚服务器视图下开启X-Forwarded-For字段源IP地址插入功能。若同时配置了这两个功能,则后者的配置优先级较高。
(5) 重写HTTP首部。
header rewrite { both | request | response } name header-name value value replace replace [ encode { base64 | url } ]
缺省情况下,未配置重写HTTP首部。
如果指定方向的HTTP报文中携带有指定名称的首部,系统会将该首部中的指定内容重写为新的内容。
(6) 重写HTTP请求首部中的URL。
header rewrite request url value value replace replace [ encode { base64 | url } ]
缺省情况下,未配置重写HTTP请求首部中的URL。
(1) 进入系统视图。
system-view
(2) 进入HTTP类型的负载均衡动作视图。
loadbalance action action-name
(3) 重写服务器发送的HTTP应答报文Location首部的URL。
ssl url rewrite location location [ clearport clear-port ] [ sslport ssl-port ]
缺省情况下,未配置重写服务器发送的HTTP应答报文Location首部的URL。
如果HTTP应答报文Location首部匹配了指定的URL和HTTP端口号,系统会将Location首部的URL由HTTP重写为HTTPS,并将原HTTP端口号重写为新的SSL端口号。
(1) 进入系统视图。
system-view
(2) 进入HTTP类型的负载均衡动作视图。
loadbalance action action-name
(3) 配置重写服务器发送的HTTP应答报文Location首部的内容。
location rewrite match regex match-pattern replace replace-string
缺省情况下,未对服务器发送的HTTP应答报文Location首部的内容进行重写。
如果HTTP应答报文包含302重定向且匹配了指定的Location首部的正则表达式,系统会将Location首部的内容按照匹配的match-pattern重写为replace-value。
在同一HTTP类型的负载均衡动作视图下,建议配置不超过16条。若通过多次配置本功能对相同内容的Location首部进行重写,则最后一次配置生效。
Location首部的重定向会在SSL URL重定向改写之后执行,匹配SSL URL改写后的结果再进行Location首部内容的改写。
(4) 调整Location首部内容的重写规则排序。
move location rewrite match regex match-pattern1 { before match-pattern2 | bottom }
(1) 进入系统视图。
system-view
(2) 进入Diameter、HTTP类型的负载均衡动作视图。
loadbalance action action-name
(3) 指定引用的SSL客户端策略。
ssl-client-policy policy-name
缺省情况下,未引用任何SSL客户端策略。
通过引用SSL客户端策略,可以对负载均衡设备(作为SSL客户端)与SSL服务器之间传输的流量进行加密传输。
(1) 进入系统视图。
system-view
(2) 进入HTTP类型的负载均衡动作视图。
loadbalance action action-name
(3) 修改HTTP应答报文体中指定内容。
content rewrite value value replace replace
缺省情况下,未配置修改HTTP应答报文体中指定内容。
(1) 进入系统视图。
system-view
(2) 进入HTTP类型的负载均衡动作视图。
loadbalance action action-name
(3) 开启动作的重定向功能并指定重定向URL。
redirect relocation relocation
缺省情况下,动作的重定向功能处于关闭状态。
在HTTP类型的负载均衡动作视图下开启了重定向功能后,所有匹配对应负载均衡动作的HTTP请求报文都将被重定向到指定URL。
(4) 配置负载均衡设备返回给客户端的重定向报文中的状态码。
redirect return-code { 301 | 302 | 307 }
缺省情况下,负载均衡设备返回给客户端的重定向报文中的状态码为302。
本命令只有在开启了动作的重定向功能后才会生效。
设备支持配置用压缩文件和非压缩文件对客户端的指定HTTP请求进行应答。
· 如果客户端请求URL中的资源路径匹配指定的url,则用指定的非压缩文件对客户端请求进行应答。
· 如果客户端请求URL中的资源路径匹配指定的workpath+ZIP压缩包内相对路径,则使用ZIP压缩包内的文件对客户端请求进行应答。
若配置了用压缩文件和非压缩文件对同一HTTP请求进行应答,且压缩文件和非压缩文件的路径相同,则使用非压缩文件进行代答。
(1) 进入系统视图。
system-view
(2) 进入HTTP类型的负载均衡动作视图。
loadbalance action action-name
(3) 配置对指定的HTTP请求进行代答。
response { url url file filename | workpath workpath zip-file zip-filename }
缺省情况下,未配置对HTTP请求进行代答。
通过配置负载均衡处理失败时的代答文件,可在以下两种情况下使用指定文件对客户端请求进行应答:
· 查找可用实服务器失败。
· 配置了对指定的HTTP请求进行代答后,查找代答文件失败。
代答文件必须是一个完整的HTTP报文,不能只是HTTP报文体的内容。
(1) 进入系统视图。
system-view
(2) 进入HTTP类型的负载均衡动作视图。
loadbalance action action-name
(3) 配置负载均衡处理失败时的代答文件。
fallback-action response raw-file raw-filename
缺省情况下,根据当前动作查找可用服务器失败时直接丢弃报文。
在HTTP类型的负载均衡动作视图下,开启了外链功能后,要使外链代理功能生效,还需要在虚服务器视图下配置外链代理相关参数。有关外链代理功能的详细配置,请参见“配置外链代理功能”。
若开启了外链代理功能且配置了以下负载均衡动作时,外链代理功能优先生效。
· 转发类动作,请参见“配置转发类动作”
· HTTP重定向功能,请参见“配置HTTP重定向功能”
· 对指定的HTTP请求进行代答,请参见“配置对指定的HTTP请求进行代答”
· 负载均衡处理失败时的代答文件,请参见“配置负载均衡处理失败时的代答文件”
(1) 进入系统视图。
system-view
(2) 进入HTTP类型的负载均衡动作视图。
loadbalance action action-name
(3) 开启外链代理功能。
external-link proxy enable
缺省情况下,外链代理功能处于关闭状态。
将负载均衡类和负载均衡动作关联起来就构成了负载均衡策略。负载均衡策略是指导报文转发的一种方式,用户可以为匹配特定负载均衡类的报文指定执行的负载均衡动作,以及为未匹配任何负载均衡类的报文指定缺省负载均衡动作。
用户可以在一个负载均衡策略中指定多个负载均衡类,转发报文时会按照配置顺序来匹配负载均衡类,匹配成功则执行相应的负载均衡动作,不会继续匹配下一条负载均衡类,否则继续匹配下一条负载均衡类。因此,当负载均衡类之间存在包含关系时,建议将更精细的负载均衡类放在前面,宽泛的负载均衡类放在后面。如果所有负载均衡类均未匹配,则执行缺省负载均衡动作。
四层和七层服务器负载均衡的负载均衡策略配置基本相同。
负载均衡策略配置任务如下:
(1) 创建负载均衡策略
(2) 指定负载均衡动作
(3) 指定缺省负载均衡动作
(1) 进入系统视图。
system-view
(2) 创建通用类型的负载均衡策略,并进入负载均衡策略视图。
loadbalance policy policy-name type generic
创建负载均衡策略时必须为其指定类型;而在进入已创建的负载均衡策略视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致。
(3) (可选)配置负载均衡策略的描述信息。
description text
缺省情况下,未配置负载均衡策略的描述信息。
(1) 进入系统视图。
system-view
(2) 创建Diameter、HTTP或RADIUS类型的负载均衡策略,并进入负载均衡策略视图。
loadbalance policy policy-name type { diameter | http | mysql | radius }
创建负载均衡策略时必须为其指定类型;而在进入已创建的负载均衡策略视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致。
(3) (可选)配置负载均衡策略的描述信息。
description text
缺省情况下,未配置负载均衡策略的描述信息。
通用类型的负载均衡策略只能引用通用类型的负载均衡类和负载均衡动作;HTTP类型的负载均衡策略可以引用HTTP或通用类型的负载均衡类和负载均衡动作;MySQL类型的负载均衡策略可以引用MySQL或通用类型的负载均衡类和通用类型负载均衡动作;RADIUS类型的负载均衡策略可以引用RAIDIUS或通用类型的负载均衡类和负载均衡动作。
(1) 进入系统视图。
system-view
(2) 进入负载均衡策略视图。
loadbalance policy policy-name
(3) 为负载均衡类指定负载均衡动作。
class class-name [ insert-before before-class-name | insert-after [ after-class-name ] ] action action-name
缺省情况下,没有为任何负载均衡类指定负载均衡动作。
不同的负载均衡类可以与同一负载均衡动作组成匹配规则。
通用类型的负载均衡策略只能引用通用类型的负载均衡动作作为其缺省负载均衡动作,HTTP类型的负载均衡策略则无此限制。
(1) 进入系统视图。
system-view
(2) 进入负载均衡策略视图。
loadbalance policy policy-name
(3) 指定缺省负载均衡动作。
default-class action action-name
缺省情况下,未指定缺省负载均衡动作。
持续性组是一个优化流量分配和提高处理效率的技术,它的主要作用是确保具有相同特征的流量被连续地分配到同一台实服务器上处理,保持了用户会话的连续性,同时避免了重复的调度运算。
当设备首次收到具有某种特征的访问请求时,会基于配置的持续性方法生成持续性表项。该表项在老化之前用于将来自同一用户的后续请求直接转发到先前选定的实服务器,从而跳过调度算法的重复计算。
例如,在购物网站中,每个用户在浏览商品时、加入购物车和结账时都会产生多次请求。如果每次请求都由不同的实服务器处理,可能会出现多次访问数据不一致的问题。而持续性组就可以确保同一个用户的所有请求都由同一台实服务器处理,从而保证数据的一致性和用户体验的流畅性。
设备的处理流程如下:
(1) 当设备首次收到具有某种特征的用户请求时,会根据调度算法将请求分发给某台实服务器,并且生成持续性表项;
(2) 在持续性表项老化之前,设备再次收到具有相同特征的用户请求时,将直接转发到先前选定的实服务器,跳过重复的调度计算。
持续性方法是生成持续性表项的依据。管理员可以根据需要在持续性组中指定持续性方法。
在持续性组的配置完成后,为了使其生效,管理员需要通过以下任意一种方式引用它:
· 在虚服务器视图下,指定缺省实服务组引用的持续性组,请参见“指定实服务组”;
· 在负载均衡动作视图下,指定实服务组引用的持续性组,请参见“指定指导转发的实服务组”;
· 在HTTP类型的虚服务器视图下,引用HTTP Cookie类型的持续性组,请参见“引用持续性组”。
在虚服务器中引用的持续性组优先级最高。即在进行流量分配时,优先根据虚服务器引用的持续性组生成持续性表项。
管理员为实服务组指定持续性组时,可同时指定主用持续性组和备用持续性组。此时,会根据两个持续性组同时生成主用持续性表项和备用持续性表项。当有新的流量匹配已生成持续性表项时,如果未能匹配到主用持续性表项,则进行备用持续性表项匹配。
若配置了备用持续性组,只有如下三种组合才会生成备用持续性表项,否则配置不生效:
· 主用持续性组为RADIUS类型,备用持续性组为地址端口类型;
· 主用持续性组为HTTP Cookie类型,备用持续性组为地址端口类型;
· 主用持续性组为HTTP Cookie类型,备用持续性组为HTTP passive类型。
Diameter、HTTP实体、HTTP Cookie、HTTP首部、HTTP passive、HTTP载荷、RADIUS、SIP、SSL、TCP载荷和UDP passive类型的持续性组需要安装License才能使用。有关License的详细介绍,请参见“基础配置指导License管理配置指导”中的“License管理”。
持续性组配置任务如下:
(1) 创建持续性组
(2) 配置指定类型的持续性
请至少选择其中一项进行配置,持续性组中至少配置一种持续性方法。
¡ 配置TCP持续性
¡ 配置UDP持续性
¡ 配置SIP持续性
¡ 配置SSL持续性
(3) (可选)配置持续性表项超时时间
(4) (可选)配置持续性表项匹配范围
(5) (可选)开启匹配持续性表项的会话不受连接数限制影响功能
(6) (可选)开启持续性处理优先于繁忙功能
在配置持续性组之前,需要先创建持续性组。设备支持创建的持续性组包括:
· 四层服务器负载均衡:地址端口类型。
· 七层服务器负载均衡:Diameter、HTTP实体、HTTP Cookie、HTTP首部、HTTP passive、HTTP/UDP载荷、RADIUS、SIP、SSL、TCP载荷和UDP passive类型
创建持续性组时必须为其指定类型;而在进入已创建的持续性组视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致。
(1) 进入系统视图。
system-view
(2) 创建地址端口类型的持续性组,并进入持续性组视图。
sticky-group group-name type address-port
(3) (可选)配置持续性组的描述信息。
description text
缺省情况下,未配置持续性组的描述信息。
(1) 进入系统视图。
system-view
(2) 创建Diameter、HTTP实体、HTTP Cookie、HTTP首部、HTTP/UDP载荷、RADIUS、SIP或SSL类型的持续性组,并进入持续性组视图。
sticky-group group-name type { diameter | http-content | http-cookie | http-header | http-passive | payload | radius | sip | ssl | tcp-payload | udp-passive }
(3) (可选)配置持续性组的描述信息。
description text
缺省情况下,未配置持续性组的描述信息。
设备根据用户请求的源IP地址、源端口、目的IP地址或目的端口生成持续性表项。
(1) 进入系统视图。
system-view
(2) 进入地址端口类型的持续性组。
sticky-group group-name [ type address-port ]
创建持续性组时必须为其指定类型;而在进入已创建的持续性组视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致。
(3) 配置IP持续性方法。
(IPv4网络)
ip [ port ] { both | destination | source } [ mask mask-length ]
(IPv6网络)
ipv6 [ port ] { both | destination | source } [ prefix prefix-length ]
缺省情况下,未配置IP持续性方法。
设备根据TCP载荷的指定部分来生成持续性表项。这种方法允许设备识别和提取TCP流中特定数据段的信息,并基于这些信息保持会话的连续性。
(1) 进入系统视图。
system-view
(2) 进入TCP载荷类型的持续性组视图。
sticky-group group-name [ type tcp-payload ]
创建持续性组时必须为其指定类型;而在进入已创建的持续性组视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致。
(3) 配置TCP载荷持续性方法。
payload [ offset offset ] [ start start-string ] [ end end-string | length length ]
缺省情况下,未配置TCP载荷持续性方法。
UDP持续性是根据UDP请求或应答报文的载荷来生成持续性表项,以保证用户会话的连续性。UDP持续性可通过以下持续性方法实现:
· UDP载荷持续性方法:设备根据UDP请求报文载荷中的指定部分来生成持续性表项。这种方法允许设备识别和提取UDP流中特定数据段的信息,并基于这些信息保持会话的连续性。
· UDP passive持续性方法:配置UDP passive持续性方法后,设备会依次进行以下处理:
¡ 应答报文处理:当设备首次收到UDP应答报文时,系统会根据payload get命令的配置提取UDP应答报文的载荷信息。这些信息用于生成持续性表项,这些表项记录了特定的载荷特征,以便能够识别具有相同特征的流量。
¡ 请求报文的匹配与转发:对于后续收到的UDP请求报文,设备将根据payload match命令的配置来获取请求报文中的指定载荷信息。如果这些载荷信息与持续性表项中的信息匹配,那么请求将根据持续性表项转发到相应的实服务器。
UDP passive持续性方法确保了所有与特定会话关联的请求都被连续地转发到同一台服务器,从而保持了会话的连续性和数据的一致性。
UDP passive持续性方法需要get和match命令的配合才能生成。
(1) 进入系统视图。
system-view
(2) 进入UDP载荷类型的持续性组视图。
sticky-group group-name [ type payload ]
创建持续性组时必须为其指定类型;而在进入已创建的持续性组视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致。
(3) 配置UDP载荷持续性方法。
payload [ offset offset ] [ start start-string ] [ end end-string | length length ]
缺省情况下,未配置UDP载荷持续性方法。
(1) 进入系统视图。
system-view
(2) 进入UDP passive类型的持续性组视图。
sticky-group group-name [ type udp-passive ]
创建持续性组时必须为其指定类型;而在进入已创建的持续性组视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致。
(3) 配置UDP passive持续性方法。
payload get [ offset offset ] [ start start-string ] [ end end-string | length length ]
payload match [ offset offset ] [ start start-string ] [ end end-string | length length ]
缺省情况下,未配置UDP passive类型持续性方法。
HTTP持续性是根据HTTP报文的不同部分来生成持续性表项,以保证用户会话的连续性,这些部分包括HTTP请求报文首部、HTTP请求报文实体、HTTP Cookie、HTTP载荷、HTTP应答报文的首部和HTTP应答报文的实体,可通过以下持续性方法实现:
· HTTP首部持续性方法:根据HTTP请求报文的首部信息(如Request-Method或自定义首部字段)生成持续性表项。这种方法确保具有相同首部值的客户端的所有请求都被转发到同一台实服务器。
例如,使用Request-Method字段生成持续性表项。HTTP请求方法(如GET、POST、PUT、DELETE等)定义了客户端希望在给定资源上执行的操作。我们可以根据请求方法的不同来生成持续性表项,将具有相同请求方法的所有请求转发到同一台实服务器。
比如,GET请求的处理服务器的性能消耗较小,而POST请求的处理包括了数据写入和复杂的后端逻辑。在这种情况下,我们可以将所有GET请求转发到处理能力较低的实服务器,而将POST请求转发到具有更多资源的实服务器。这样做可以根据实服务器的性能来优化服务器负载均衡。
· HTTP实体持续性:根据HTTP请求的实体部分(即请求的Body内容)来生成持续性表项。适用于POST或PUT请求。
· HTTP Cookie持续性:使用HTTP请求中的Cookie信息来生成持续性表项,包括:
¡ Cookie截取:用于从HTTP报文中提取特定的Cookie信息,根据Cookie信息生成持续性表项。大致过程是,服务器使用Set-Cookie字段来设置Cookie,客户端浏览器负责存储这些Cookie并在后续请求中发送给服务器,SLB设备通过截取请求中的Cookie来维持用户与服务器的会话持续性。
¡ Cookie插入:Cookie插入是一种通过修改实服务器响应来实现持续性的方式。SLB设备在首次选择实服务器处理用户请求后,会在该实服务器的HTTP响应中新插入一个特殊的Set-Cookie字段,这个字段包含一个指向该实服务器的唯一标识符。
¡ Cookie重写:Cookie重写是一种通过修改实服务器响应来实现持续性的方式。通过修改实服务器HTTP响应中现有Set-Cookie首部字段,以便在客户端存储更新后的Cookie。SLB设备在首次选择实服务器处理用户请求后,会根据预配置的规则修改Cookie的值或其他属性。例如,管理员可以在所有的Set-Cookie首部字段添加HttpOnly属性,一旦客户端存储了这个Cookie,它就不能通过客户端JavaScript脚本访问,增加了会话的安全性。
· HTTP载荷持续性:类似于HTTP实体持续性方法,但更加广泛地应用于HTTP请求中的负载部分,包括URL、HTTP首部和Body内容。这种方法根据整个HTTP请求的指定内容来生成持续性表项。
· HTTP passive持续性方法:包括HTTP首部被动持续性方法和HTTP实体被动持续性方法。
¡ HTTP首部被动持续性:在接收到HTTP响应时,根据响应的HTTP首部信息来创建持续性表项。这种方法允许实服务器根据返回的响应首部来确定后续请求的目标实服务器,适用于HTTP响应首部中包含会话控制信息(例如:Set-Cookie首部包含的会话ID等)的场景。
¡ HTTP实体被动持续性:基于响应实体(即响应报文的Body部分)中包含的信息来生成持续性表项的方法。这种方法适用于HTTP响应报文中包含了关键的会话信息(例如:动态生成的令牌等)的场景。
配置HTTP passive类型的持续性方法后,设备会根据header get或content get命令获取HTTP应答报文首部或实体中的指定字符串,生成持续性表项。对于后续收到的所有HTTP请求报文,根据header match或content match命令获取HTTP请求报文首部或实体中的指定字段,若该字段匹配上持续性表项,则按照持续性表项转发。
HTTP首部被动持续性方法和HTTP实体被动持续性方法都包括get和match命令,其配置遵循以下原则:
· n条get命令获取到的n个字符串,其中任意1~n个字符串又可以按照ID顺序组合成2n-1个字符串,若match命令获取到字符串匹配上任意一个组合后的字符串,则认为匹配成功。
· n条match命令获取到的n个字符串按照ID顺序结合成一个字符串进行匹配。
假设,用户配置了ID为1、2、3的三条get命令,使得设备可以获取到HTTP应答报文首部中的字符串a、b、c,组合成七个匹配字符串a、b、c、ab、ac、bc、abc,并生成七条持续性表项。同时用户配置了ID为2、3、4的三条match命令,当设备收到HTTP请求报文后,若基于这三条规则获取到了字符串a、b、c,且它们按照ID顺序组合成的字符串abc能够与通过get命令获取到的字符串abc匹配成功,则认为HTTP请求报文与持续性表项匹配成功,按照持续性表项转发。
创建持续性组时必须为其指定类型;而在进入已创建的持续性组视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致。
HTTP passive持续性方法需要get和match命令结合使用,来创建和匹配持续性表项。
同一HTTP passive类型的持续性组视图下,最多允许通过配置4条get命令在HTTP应答报文中获取4个指定字符串,最多允许通过配置4条match命令在HTTP请求报文中获取4个指定字符串。
(1) 进入系统视图。
system-view
(2) 进入HTTP首部类型的持续性组视图。
sticky-group group-name [ type http-header ]
(3) 配置HTTP首部持续性方法。
header { { { host | name header-name | url } [ offset offset ] [ start start-string] [ end end-string | length length ] } | request-method | version }
缺省情况下,未配置HTTP首部持续性方法。
(1) 进入系统视图。
system-view
(2) 进入HTTP实体类型的持续性组视图。
sticky-group group-name [ type http-content ]
(3) 配置HTTP实体持续性方法。
content [ offset offset ] [ start start-string ] [ end end-string | length length ]
缺省情况下,未配置HTTP实体持续性方法。
快速HTTP类型的虚服务器不支持本功能。
(1) 进入系统视图。
system-view
(2) 进入HTTP Cookie类型的持续性组。
sticky-group group-name [ type http-cookie ]
(3) 配置HTTP Cookie持续性方法。
cookie { get name cookie-name [ offset offset ] [ start start-string] [ end end-string | length length ] | { insert [ name cookie-name ] [ domain domain-name ] [ path path ] [ httponly ] [ secure ] | rewrite [ name cookie-name ] [ httponly ] [ secure ] }
缺省情况下,未配置HTTP Cookie持续性方法。
(4) (可选)指定需在URI中查找的Secondary Cookie的名称。
cookie secondary name value
缺省情况下,未指定需在URI中查找的Secondary Cookie名称。
(5) (可选)配置检查所有报文。
check all-packet
缺省情况下,不检查所有报文。
(1) 进入系统视图。
system-view
(2) 进入HTTP载荷类型的持续性组视图。
sticky-group group-name [ type payload ]
(3) 配置HTTP载荷持续性方法。
payload [ offset offset ] [ start start-string ] [ end end-string | length length ]
缺省情况下,未配置HTTP载荷持续性方法。
快速HTTP类型的虚服务器不支持本功能。
(1) 进入系统视图。
system-view
(2) 进入HTTP passive类型的持续性组视图。
sticky-group group-name [ type http-passive ]
(3) 配置HTTP passive持续性方法。请至少选择其中一项进行配置。
¡ 配置HTTP首部被动持续性方法。
header get id name header-name start start-string { end end-string | length length }
header match id { name header-name | url } start start-string { end end-string | length length }
缺省情况下,未配置HTTP首部被动持续性方法。
¡ 配置HTTP实体被动持续性方法。
content get id start start-string { end end-string | length length }
content match id start start-string { end end-string | length length }
缺省情况下,未配置HTTP实体被动持续性方法。
(4) (可选)配置检查所有报文。
check all-packet
缺省情况下,不检查所有报文。
(1) 进入系统视图。
system-view
(2) 进入HTTP Cookie类型的持续性组视图。
sticky-group group-name
(3) 配置HTTP Cookie持续性方法。
cookie { get name cookie-name [ offset offset ] [ start start-string] [ end end-string | length length ] | { insert [ domain domain-name ] [ path path ] [ httponly ] [ secure ] | rewrite } [ name cookie-name ] [ httponly ] [ secure ] }
缺省情况下,未配置HTTP Cookie持续性方法。
(4) (可选)指定需在URI中查找的Secondary Cookie的名称。
cookie secondary name value
缺省情况下,未指定需在URI中查找的Secondary Cookie名称。
(5) (可选)配置检查所有报文。
check all-packet
缺省情况下,不检查所有报文。
(1) 进入系统视图。
system-view
(2) 进入HTTP首部类型的持续性组视图。
sticky-group group-name
(3) 配置HTTP首部持续性方法。
header { { { host | name header-name | url } [ offset offset ] [ start start-string] [ end end-string | length length ] } | request-method | version }
缺省情况下,未配置HTTP首部持续性方法。
HTTP passive类型持续性方法包括HTTP首部被动持续性方法和HTTP实体被动持续性方法。
配置HTTP passive类型的持续性方法后,设备会根据header get或content get命令获取HTTP应答报文首部或实体中的指定字符串,生成持续性表项。对于后续收到的所有HTTP请求报文,根据header match或content match命令获取HTTP请求报文首部或实体中的指定字段,若该字段匹配上持续性表项,则按照持续性表项转发。
HTTP首部被动持续性方法和HTTP实体被动持续性方法都包括get和match命令,其配置遵循以下原则:
· n条get命令获取到的n个字符串,其中任意1~n个字符串又可以按照ID顺序组合成2n-1个字符串,若match命令获取到字符串匹配上任意一个组合后的字符串,则认为匹配成功。
· n条match命令获取到的n个字符串按照ID顺序结合成一个字符串进行匹配。
假设,用户配置了ID为1、2、3的三条get命令,使得设备可以获取到HTTP应答报文首部中的字符串a、b、c,组合成七个匹配字符串a、b、c、ab、ac、bc、abc,并生成七条持续性表项。同时用户配置了ID为2、3、4的三条match命令,当设备收到HTTP请求报文后,若基于这三条规则获取到了字符串a、b、c,且它们组合成的字符串abc能够与通过get命令获取到的字符串abc匹配成功,则认为HTTP请求报文与持续性表项匹配成功,按照持续性表项转发。
HTTP首部被动持续性方法和实体被动持续性方法需要get和match命令的配合才能生成。
同一HTTP passive类型的持续性组视图下,最多允许通过配置4条get命令在HTTP应答报文中获取4个指定字符串,最多允许通过配置4条match命令在HTTP请求报文中获取4个指定字符串。
(1) 进入系统视图。
system-view
(2) 进入HTTP passive类型的持续性组视图。
sticky-group group-name
(3) 配置HTTP passive持续性方法。请至少选择其中一项进行配置。
¡ 配置HTTP首部被动持续性方法。
header get id name header-name start start-string { end end-string | length length }
header match id { name header-name | url } start start-string { end end-string | length length }
缺省情况下,未配置HTTP首部被动持续性方法。
¡ 配置HTTP实体被动持续性方法。
content get id start start-string { end end-string | length length }
content match id start start-string { end end-string | length length }
缺省情况下,未配置HTTP实体被动持续性方法。
(4) (可选)配置检查所有报文。
check all-packet
缺省情况下,不检查所有报文。
(1) 进入系统视图。
system-view
(2) 进入HTTP或UDP载荷类型的持续性组视图。
sticky-group group-name
(3) 配置HTTP或UDP载荷持续性方法。
payload [ offset offset ] [ start start-string ] [ end end-string | length length ]
缺省情况下,未配置HTTP或UDP载荷持续性方法。
快速HTTP类型的虚服务器不支持本功能。
设备根据RADIUS属性生成持续性表项。当设备收到一个RADIUS请求时,它会检查RADIUS属性值,如果与已知的持续性表项匹配,该请求将被转发到表项中记录的RADIUS服务器处理。
例如:对于经常远程办公或出差的员工,他们可能需要频繁连接和断开企业的VPN服务。通过使用User-Name作为关键属性生成持续性表项,可以确保基于同一用户名的所有RADIUS请求都被转发至最初处理该用户请求的RADIUS服务器。这样做可以提高认证过程的效率和一致性。
(1) 进入系统视图。
system-view
(2) 进入RADIUS类型的持续性组视图。
sticky-group group-name
(3) 进入RADIUS类型的持续性组视图。
sticky-group group-name [ type radius ]
创建持续性组时必须为其指定类型;而在进入已创建的持续性组视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致。
(4) 配置RADIUS属性持续性方法。
radius-attribute { code attribute-code | framed-ip-address | user-name }
缺省情况下,未配置RADIUS属性持续性方法。
Diameter属性的持续性方法仅对Diameter报文有效。
配置Diameter属性的持续性方法后,设备会根据请求报文中的指定属性,生成持续性表项。对于后续收到的所有Diameter类型请求报文,根据请求报文中的指定属性,若匹配上持续性表项,则按照持续性表项转发。
常用的Diameter属性类型对应的编号包括:
· 编号为258表示Diameter属性类型为Auth-Application-Id。
· 编号为259表示Diameter属性类型为Acct-Application-Id。
· 编号为263表示Diameter属性类型为Session-Id。
· 编号为264表示Diameter属性类型为Origin-Host。
· 编号为283表示Diameter属性类型为Destination-Realm。
· 编号为293表示Diameter属性类型为Destination-Host。
· 编号为296表示Diameter属性类型为Origin-Realm。
· 编号为443表示Diameter属性类型为Subscription-Id。
· 编号为444表示Diameter属性类型为Subscription-Id-Data。
一个持续性组中只能配置1条Diameter属性持续性方法。重复配置时,新的配置会覆盖原有配置。
(1) 进入系统视图。
system-view
(2) 进入Diameter类型的持续性组视图。
sticky-group group-name [ type diameter ]
创建持续性组时必须为其指定类型;而在进入已创建的持续性组视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致。
(3) 配置Diameter属性持续性方法。
diameter-attribute { code attribute-code [ index index-value ] } &<1-4>
缺省情况下,未配置Diameter属性持续性方法。
当AVP的数据类型为Grouped时,指定属性编号后,需要指定该属性编号所在AVP序列的索引值index。若不指定本参数,则AVP序列索引值为0。
SIP持续性是通过基于SIP信令报文Call ID的持续性方法实现的,设备会根据SIP信令报文首部的Call ID字段生成持续性表项,将具有相同Call ID的SIP报文都分配给同一台实服务器处理。
(1) 进入系统视图。
system-view
(2) 进入SIP类型的持续性组视图。
sticky-group group-name [ type sip ]
创建持续性组时必须为其指定类型;而在进入已创建的持续性组视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致。
(3) 配置基于SIP信令报文Call ID的持续性方法。
header call-id
缺省情况下,未配置基于SIP信令报文Call ID的持续性方法。
SSL持续性通过使用SSL会话ID确保SSL/TLS加密连接的会话一致性。基于SSL会话ID的持续性方法允许系统识别和重用同一会话ID的既有会话,避免重复的握手过程。这样不仅减少了延迟,提高了效率,还增强了连接的安全性。
(1) 进入系统视图。
system-view
(2) 进入SSL类型的持续性组视图。
sticky-group group-name [ type ssl ]
创建持续性组时必须为其指定类型;而在进入已创建的持续性组视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致。
(3) 配置SSL持续性方法为基于SSL会话ID。
ssl session-id
缺省情况下,未配置SSL持续性方法。
本功能允许管理员灵活调整持续性表项的超时时间,超时时间定义了一个持续性表项在被自动清除前可以保持活跃的最长时间。通过正确配置超时时间,管理员可以确保系统在维持必要的会话持久性的同时,避免资源浪费和潜在的性能瓶颈。
不同类型的持续性组可能需要不同的超时时间,例如,对于需要长时间维持状态的应用,如HTTP Cookie,可能设定较长的超时时间。而对于需要快速更新状态的服务,如Diameter协议,超时时间则相对较短。
(1) 进入系统视图。
system-view
(2) 进入持续性组视图。
sticky-group group-name [ type { address-port | diameter | http-content | http-cookie | http-header | http-passive | payload | radius | sip | ssl | tcp-payload | udp-passive } ]
创建持续性组时必须为其指定类型;而在进入已创建的持续性组视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致。
(3) 配置持续性表项的超时时间。
timeout { indefinite | timeout-value }
缺省情况下,对于HTTP Cookie、HTTP passive和UDP passive类型的持续性组,持续性表项的超时时间为86400秒;Diameter类型的持续性组,持续性表项的超时时间为180秒;对于其它类型的持续性组,持续性表项的超时时间为60秒。
缺省情况下,某虚服务器的持续性表项仅对访问当前虚服务器的流量生效。通过配置本功能,可以调整持续性表项的匹配范围,当用户流量未匹配上当前虚服务器的持续性表项时,可以继续进行跨服务匹配或者跨虚服务器匹配。通过配置跨服务或跨虚服务器匹配持续性表项,对于访问不同虚服务器的具有一定相关性的会话,设备可以将其分配给同一台实服务器。
若同时配置跨服务匹配和跨虚服务器匹配,持续性表项的匹配顺序依次为:匹配当前虚服务器,跨服务匹配,跨虚服务器匹配。在持续性表项的每种匹配范围内,设备总是优先匹配最新生成的持续性表项。匹配成功则转发报文,不再匹配其他表项。
下面分别对持续性表项的三种匹配范围进行介绍:
· 匹配当前虚服务器:设备仅匹配当前虚服务器的持续性表项。此为设备缺省匹配范围,无需配置。
· 跨服务匹配:设备在未匹配到当前虚服务器的持续性表项时,可以继续匹配IP地址相同的其他虚服务器的持续性表项。使用场景为,存在多个IP地址相同,端口不同的虚服务器,且这些虚服务器共用相同的实服务器资源。
· 跨虚服务器匹配:设备在未匹配到当前虚服务器的持续性表项时,可以继续匹配他所有虚服务器的持续性表项。使用场景为,存在多个共用相同实服务器资源的虚服务器。
例如,设备上存在虚服务器A、B、C同时对外提供服务,且所有虚服务器均采用源IP地址持续性方法,生成的持续性表项如图1-16所示(为了便于说明,图中仅列举了持续性表项的部分信息)。
下图以Host A、B、C均访问虚服务器A作为示例,若管理员配置不同的持续性表项生效范围,则会产生不同的匹配结果,进而将用户流量转发至不同的实服务组。
匹配范围 |
匹配结果示例 |
匹配当前虚服务器 |
设备将请求报文的源IP地址与当前虚服务器A的持续性表项匹配 · Host A匹配成功,设备根据持续性表项,将Host A的请求报文转发至实服务器RS A · Host B和Host C匹配失败,持续性匹配结束,设备根据调度算法或负载均衡策略分发请求报文 |
跨服务匹配 |
设备将请求报文的源IP地址优先与当前虚服务器A的持续性表项匹配 · Host A匹配成功,设备根据持续性表项,将Host A的请求报文转发至实服务器RS A · Host B和Host C匹配不成功,设备会继续将请求报文的源IP地址与虚服务器B(与虚服务器A的IP地址相同)的持续性表项匹配 ¡ Host B匹配成功,设备根据虚服务器B的持续性表项,将Host B的请求报文转发至实服务器RS B ¡ Host C匹配不成功,持续性匹配结束,设备根据调度算法或负载均衡策略分发请求报文 |
跨虚服务器匹配 |
设备将请求报文的源IP地址优先与当前虚服务器A的持续性表项匹配 · Host A匹配成功,设备根据持续性表项,将Host A的请求报文转发至实服务器RS A · Host B和Host C匹配不成功,设备会继续将请求报文的源IP地址与其他所有虚服务器的持续性表项匹配 ¡ Host B与虚服务器B的持续性表项匹配成功,设备根据虚服务器B的持续性表项,将Host B的请求报文转发至实服务器RS B ¡ Host C与虚服务器C的持续性表项匹配成功,设备根据虚服务器C的持续性表项,将Host C的请求报文转发至实服务器RS A |
(1) 进入系统视图。
system-view
(2) 进入地址端口、Diameter或RADIUS类型的持续性组视图。
sticky-group group-name [ type { address-port | diameter | radius } ]
创建持续性组时必须为其指定类型;而在进入已创建的持续性组视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致。
(3) 开启跨服务匹配持续性表项功能。
match-across-service enable
缺省情况下,跨服务匹配持续性表项功能处于关闭状态。
(4) 开启跨虚服务器匹配持续性表项功能。
match-across-virtual-server enable
缺省情况下,跨虚服务器匹配持续性表项功能处于关闭状态。
开启该功能后,如果该连接匹配了已有的持续性表项,将不受实服务器上带宽及连接参数的影响,也不受虚服务器上引用的负载均衡策略连接数限制的影响。
Diameter类型的持续性组不支持配置本功能。
(1) 进入系统视图。
system-view
(2) 进入持续性组视图。
sticky-group group-name [ type { address-port | http-content | http-cookie | http-header | http-passive | payload | radius | sip | ssl | tcp-payload | udp-passive } ]
创建持续性组时必须为其指定类型;而在进入已创建的持续性组视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致。
(3) 开启匹配持续性表项的会话不受连接数限制影响功能。
override-limit enable
缺省情况下,匹配持续性表项的会话受连接数限制配置的影响。
开启持续性处理优先于繁忙功能后,在持续性表项老化之前,无论实服务器是否处于繁忙状态,设备都会依据持续性表项为其分配流量。
若持续性处理优先于繁忙功能处于关闭状态,则在持续性表项老化之前,设备会依据持续性表项仅为处于正常状态的实服务器分配流量。
Diameter类型的持续性组不支持配置本功能。
(1) 进入系统视图。
system-view
(2) 进入持续性组视图。
sticky-group group-name [ type { address-port | http-content | http-cookie | http-header | http-passive | payload | radius | sip | ssl | tcp-payload | udp-passive } ]
创建持续性组时必须为其指定类型;而在进入已创建的持续性组视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致。
(3) 开启持续性处理优先于繁忙功能。
sticky-over-busy enable
缺省情况下,持续性处理优先于繁忙功能处于关闭状态。
参数模板的作用主要是预处理进入虚服务器的流量,以便根据设定的规则和配置对进入虚服务器的流量进行必要的调整。这些调整可能包括设置IP报文的ToS字段、修改TCP连接参数、应用HTTP请求的特定处理规则等。
管理员配置了参数模板后,通常需要在虚服务器配置中引用模板才能生效。虚服务器作为客户端请求的入口,通过引用参数模板,可以确保流经该虚服务器的流量都按照预定义的参数模板进行处理。通过配置参数模板,不仅提高了配置的一致性,而且增强了网络服务的灵活性和可管理性。
Diameter-session、Fast L4、HTTP、HTTP2.0、HTTP压缩、MySQL、HTTP统计、OneConnect和TCP-application类型的参数模板需要安装License才能使用。有关License的详细介绍,请参见“基础配置指导License管理配置指导”中的“License管理”。
参数模板配置任务如下:
(1) 创建参数模板
(2) 配置IP类型参数模板
(3) 配置TCP类型参数模板
请至少选择其中一项进行配置。
¡ 配置对客户端发来的HTTP请求报文中超出MSS的数据段的处理方式
(4) 配置TCP-application类型的参数模板
(5) 配置Diameter-session类型的参数模板
请至少选择其中一项进行配置。
(6) 配置HTTP类型的参数模板
请至少选择其中一项进行配置。
¡ 配置对每个HTTP请求或应答报文的首部都执行插入、删除或修改操作
¡ 配置当HTTP请求或应答报文首部超出最大长度时的处理方式
(7) 配置HTTP压缩类型的参数模板
(8) 配置HTTP统计类型的参数模板
(9) 配置HTTP2.0类型的参数模板
(10) 配置MySQL类型的参数模板
在配置参数模板之前,需要先创建参数模板。设备支持创建的参数模板包括:
· 四层服务器负载均衡:IP、Fast L4类型。
· 七层服务器负载均衡:Diameter-session、HTTP、HTTP压缩、HTTP统计、HTTP2.0、MySQL、OneConnect、TCP和TCP-application类型。
创建参数模板时必须为其指定类型;而在进入已创建的参数模板视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致。
(1) 进入系统视图。
system-view
(2) 创建IP或Fast L4类型的参数模板,并进入参数模板视图。
parameter-profile profile-name type { ip | fast-l4 }
(3) (可选)配置参数模板的描述信息。
description text
缺省情况下,未配置参数模板的描述信息。
(1) 进入系统视图。
system-view
(2) 创建Diameter-session、HTTP、HTTP压缩、HTTP统计、HTTP2.0、MySQL、OneConnect、TCP或TCP-application类型的参数模板,并进入参数模板视图。
parameter-profile profile-name type { diameter-session | http | http-compression | http-statistics | http2 | mysql | oneconnect | tcp | tcp-application }
(3) (可选)配置参数模板的描述信息。
description text
缺省情况下,未配置参数模板的描述信息。
(1) 进入系统视图。
system-view
(2) 进入IP类型的参数模板视图。
parameter-profile profile-name [ type ip ]
(3) 配置发往客户端的IP报文中的ToS字段。
set ip tos tos-number
缺省情况下,不改变发往客户端的IP报文中的ToS字段。
在TCP类型的参数模板中,管理员可以针对特定的网络环境和应用需求调整和优化TCP连接参数,对这些参数的选择和调整应基于对当前网络状况和应用特性的深入了解。通常情况下,建议采用缺省值。设备支持配置以下TCP连接参数:
· TCP连接中的本地最大窗口值
· TCP连接的空闲超时时间
· SYN报文的重传超时时间
· 四层模式下TCP连接保活定时器的空闲超时时间
· 七层模式下TCP连接保活定时器的空闲超时时间
· 七层模式下TCP保活报文的重传时间间隔与重传次数
· TCP连接中数据报文重传的总超时时间
· TIME-WAIT状态的超时时间
· FIN-WAIT-1状态的超时时间
· FIN-WAIT-2状态的超时时间
(1) 进入系统视图。
system-view
(2) 进入TCP类型的参数模板视图。
parameter-profile profile-name [ type tcp ]
(3) 配置TCP连接参数模板,请至少选择其中一项进行配置。
¡ 配置TCP连接中的本地最大窗口值。
tcp window-size size
缺省情况下,TCP连接中的本地最大窗口值为65535。
¡ 配置TCP连接的空闲超时时间。
tcp connection idle-timeout value
缺省情况下,TCP连接的空闲超时时间为0,即不超时。
¡ 配置TCP连接SYN报文的重传超时时间。
syn retransmission-timeout timeout-value
缺省情况下,TCP连接SYN报文的重传超时时间为10秒。
¡ 配置四层模式下TCP连接保活定时器的空闲超时时间。
keepalive l4 idle-timeout timeout-value
缺省情况下,四层模式下TCP连接保活定时器的空闲超时时间为0秒,表示未开启四层模式下的TCP保活功能。
本功能仅对TCP参数模板被四层虚服务器引用时才生效。
¡ 配置七层模式下TCP连接保活定时器的空闲超时时间。
keepalive idle-timeout timeout-value
缺省情况下,TCP连接保活定时器的空闲超时时间为1800秒。
本功能仅对TCP参数模板被HTTP类型的虚服务器引用时才生效。
¡ 配置七层模式下TCP保活报文的重传时间间隔与重传次数。
keepalive retransmission interval interval count count
缺省情况下,TCP保活报文的重传时间间隔为10秒,重传次数为3次。
本功能仅对TCP参数模板被HTTP类型的虚服务器引用时才生效。
¡ 配置TCP连接中数据报文重传的总超时时间。
retransmission-timeout timeout-value
缺省情况下,TCP连接中数据报文重传的总超时时间为120秒。
¡ 配置TCP连接TIME-WAIT状态的超时时间。
time-wait timeout value
缺省情况下,TCP连接TIME-WAIT状态的超时时间为2秒。
¡ 配置TCP连接FIN-WAIT-1状态的超时时间。
fin-wait1 timeout timeout-value
缺省情况下,TCP连接FIN-WAIT-1状态的超时时间为5秒。
¡ 配置TCP连接FIN-WAIT-2状态的超时时间。
fin-wait2 timeout timeout-value
缺省情况下,TCP连接FIN-WAIT-2状态的超时时间为5秒。
本功能用于定义如何处理客户端发送的HTTP请求报文中超出MSS(Maximum Segment Size)的数据段。可选的处理方式包括:
· 允许:允许那些超出MSS大小的数据段通过。
· 丢弃:丢弃那些超出MSS大小的数据段。
通过本配置,设备可以根据实际需求,有效管理过大的TCP数据段。
(1) 进入系统视图。
system-view
(2) 进入TCP类型的参数模板视图。
parameter-profile profile-name [ type tcp ]
(3) 配置对客户端发来的HTTP请求报文中超出MSS的数据段的处理方式。
exceed-mss { allow | drop }
缺省情况下,对客户端发来的HTTP请求报文中超出MSS的数据段的处理方式为允许超出MSS的数据段。
在客户端与负载均衡设备建立TCP连接时,客户端将MSS值通告给负载均衡设备,负载均衡设备会记录下这个MSS值,并将配置的MSS值发送给客户端,客户端与负载均衡设备将使用较小的MSS值作为双方通信的最大分段长度。
在负载均衡设备与服务器建立TCP连接时,负载均衡设备将配置的MSS值通告给服务器,服务器会记录下这个MSS值,并将自身的MSS值发送给负载均衡设备,负载均衡设备与服务器将使用较小的MSS值作为双方通信的最大分段长度。
(1) 进入系统视图。
system-view
(2) 进入TCP类型的参数模板视图。
parameter-profile profile-name [ type tcp ]
(3) 配置负载均衡设备与对端建立TCP连接时的MSS值。
tcp mss value
缺省情况下,未配置负载均衡设备与对端建立TCP连接时的MSS值。
在TCP类型的参数模板中,管理员可以插入、清除、保持或重写特定的TCP选项,以满足不同的网络策略和应用需求。
管理员可通过配置在负载均衡设备发送给服务器的TCP报文头的指定选项中插入客户端的指定内容,包括:客户端真实源IP地址、字符串以及支持以下改写变量:
· %{is}:客户端侧的源IP地址。
· %{isl}:客户端侧的源IP地址长度,1字节。
· %{ps}:客户端侧的源端口号。
· %{psl}:客户端侧的源端口号长度,1字节。
当TCP参数模板被工作在四层的TCP类型虚服务器引用时,指定内容只会在SYN、首个ACK以及首个PSH ACK报文中插入(包括重传的报文);而被工作在七层的TCP类型虚服务器引用时,则可以通过配置TCP选项插入模式,选择只在数据报文中插入,或在TCP协商报文和每个数据报文中都插入指定内容。
缺省情况下,TCP选项的插入模式为插入数据报文以及握手阶段报文,管理员也可指定在TCP选项中插入内容时的插入模式为只插入数据报文。
本功能用来清除负载均衡设备发送给服务器的TCP报文头中的指定选项。
本功能用来保持负载均衡设备发送给服务器的TCP报文头中指定选项的不变。当前仅支持配置TCP时间戳选项的保持功能,即TCP选项编号为8。
本功能用来重写负载均衡设备发送给服务器的TCP报文头中的指定选项。当前仅支持配置TCP时间戳选项的重写功能,即TCP选项编号为8。
通过本功能可以重写TCP报文头中的时间戳选项字段的值为设备当前时间值。
仅允许通过多次配置tcp option insert命令插入5个TCP选项。
插入TCP选项仅在以下几种类型的虚服务器引用TCP类型的参数模板时才会生效:
· HTTP类型的虚服务器
· TCP类型的虚服务器
· MySQL类型的虚服务器
仅允许通过多次配置tcp option remove命令清除5个TCP选项。
在通过tcp option remove、tcp option rewrite或tcp option preserve命令对TCP报文头中类型编号为8的TCP选项进行配置时,最后一次执行的命令生效。当同时配置了系统视图下的loadbalance tcp-timestamp-mode命令时,则loadbalance tcp-timestamp-mode命令的优先级低。
(1) 进入系统视图。
system-view
(2) 进入TCP类型的参数模板视图。
parameter-profile profile-name [ type tcp ]
(3) 插入TCP选项,请至少选择其中一项进行配置。
¡ 配置在TCP选项中插入内容。
tcp option insert option-number { src-addr | value value } [ encode { binary | string } ]
缺省情况下,未在TCP选项中插入内容。
¡ 配置TCP选项插入模式为只插入数据报文。
tcp option insert-mode data-packet
缺省情况下,插入模式为插入数据报文以及握手阶段报文。
(4) 清除TCP报文头中的指定选项。
tcp option remove option-number
缺省情况下,未对TCP报文头中的指定选项进行清除。TCP报文头中的时间戳选项使用loadbalance tcp-timestamp-mode命令的当前配置作为缺省情况。
(5) 保持TCP报文头中的指定选项。
tcp option preserve option-number
缺省情况下,未配置TCP选项的保持功能。TCP报文头中的时间戳选项使用loadbalance tcp-timestamp-mode命令的当前配置作为缺省情况。
(6) 重写TCP报文头中的指定选项。
tcp option rewrite option-number
缺省情况下,未配置TCP选项的重写功能。TCP报文头中的时间戳选项使用loadbalance tcp-timestamp-mode命令的当前配置作为缺省情况。
通过开启本功能,设备会对接收报文进行TCP校验和检查,从而判断报文从发送端到设备之间是否发生任何改动。若检测到TCP校验和没有差错,则会对报文进行处理;否则对报文进行丢弃。
(1) 进入系统视图。
system-view
(2) 进入TCP类型的参数模板视图。
parameter-profile profile-name [ type tcp ]
(3) 开启强制检查接收报文的TCP校验和功能。
tcp checksum-force-verify enable
缺省情况下,未开启强制检查接收报文的TCP校验和功能。
通过本配置可以指定用来进行SNAT地址转换的TCP选项,即将指定TCP选项中携带的IP地址作为SNAT转换地址。实现本功能还需配置SNAT转换方式为TCP Option方式,具体配置请参见“配置NAT模式的NAT功能”。
(1) 进入系统视图。
system-view
(2) 进入TCP类型的参数模板视图。
parameter-profile profile-name [ type tcp ]
(3) 配置进行SNAT地址转换的TCP选项。
src-addr-option option-number [ encode { binary | string } ]
缺省情况下,未配置进行SNAT地址转换的TCP选项。
此命令仅在客户端侧的参数模板下生效。
一般情况下,TCP连接的建立需要经过三次握手,一些恶意的攻击者利用TCP连接的建立过程进行SYN Flood攻击,从而达到耗费服务器资源,使服务器无法处理正常业务的目的。
管理员可配置本命令,当虚服务器与客户端之间的半开连接数达到配置的门限值时,就会触发SYN Cookie保护功能。通过这种方式,可以避免在设备上建立大量的半开连接,防止受到SYN Flood攻击。
半开连接,即客户端与虚服务器建立TCP连接过程中,虚服务器在收到TCP连接请求SYN报文之后到收到ACK报文之前,连接尚未建立的状态。
仅当TCP类型参数模板被TCP类型虚服务器引用,且虚服务器配置了工作在四层模式时,本配置才生效
(1) 进入系统视图。
system-view
(2) 进入TCP类型的参数模板视图。
parameter-profile profile-name [ type tcp ]
(3) 配置触发SYN Cookie保护功能的门限值。
syn-cookie threshold threshold
缺省情况下,触发SYN Cookie功能的门限值为0,即不会触发SYN Cookie功能。
配置TCP延迟ACK的接收数据包数量,当设备接收到指定数量的数据包后将统一发送ACK响应,以减少ACK报文的发送次数。
管理员需要根据实际网络环境合理设置延迟ACK的数据包数量。通常情况下,保持缺省情况即可。而在网络环境较差的情况下,建议将延迟ACK的数据包数量配置为1,以确保设备能够及时回复ACK响应,从而维持连接的稳定性,避免因网络延迟导致连接断开。
在网络环境良好的情况下,可以适量调高延迟ACK的数据包数量,以减少ACK报文的发送频率,提高网络传输效率。
(1) 进入系统视图。
system-view
(2) 进入TCP类型的参数模板视图。
parameter-profile profile-name
(3) 配置TCP延迟ACK的接收数据包数量。
tcp delayed-acks number
缺省情况下,TCP延迟ACK的接收数据包数量为2。
配置TCP载荷类型的匹配规则后,在TCP载荷匹配的缓冲时间内,设备会缓冲客户端发给虚服务器的流量进行TCP载荷匹配。直到出现以下任意一种情况才结束缓冲:
· 收到缓冲结束符。
· 缓冲数据长度超过配置的TCP缓冲数据大小。
· 缓冲数据已经与匹配规则匹配。
(1) 进入系统视图。
system-view
(2) 进入TCP-Application类型的参数模板视图。
parameter-profile profile-name [ type tcp-application ]
(3) 配置TCP载荷匹配的缓冲时间。
match-buffer-time time
缺省情况下,TCP载荷匹配的缓冲时间为3秒。
(4) 配置对TCP载荷结束缓冲的匹配条件。请至少选择其中一项进行配置。
¡ 配置TCP载荷匹配的缓冲数据大小。
match-buffer-size size
缺省情况下,TCP载荷匹配的缓冲数据大小为4096字节。
¡ 配置TCP载荷匹配的缓冲结束符。
match-buffer-end string
缺省情况下,未配置TCP载荷匹配的缓冲结束符。
当设备与客户端或服务器端建立TCP连接后,首先会通过CER请求报文和CEA应答报文进行信息交换,交换的信息包括:源主机名、源域名、厂商ID、产品名称及本机地址等。通过配置设备的源主机名、源域名、厂商ID及产品名称等信息,管理员可以自由指定设备Diameter协商时发送给对端的参数信息。
如果在设置的Diameter协商超时时间到期时,设备和对端一直没有CER和CEA报文交互,设备将认为该TCP连接已失效,并直接断开该连接,从而避免系统资源被持续占用而造成的浪费。
配置的源主机名应为FQDN(Fully Qualified Domain Name,完全合格域名)形式,即同时带有主机名和源域名的名称。例如:主机名为host1,源域名为example.com,则源主机名应配置为host1.example.com。
(1) 进入系统视图。
system-view
(2) 进入Diameter-session类型的参数模板视图。
parameter-profile profile-name [ type diameter-session ]
(3) 配置Diameter协商信息。
¡ 配置源主机名。
origin-host host-name
缺省情况下,源主机名为host.h3c.com。
¡ 配置源域名。
origin-realm realm-name
缺省情况下,源域名为h3c.com。
¡ 配置厂商ID。
vendor-id vendor-id
缺省情况下,厂商ID为25506,表示厂商为H3C。
¡ 配置产品的名称。
product-name product-name
缺省情况下,产品名称为管理员配置的设备名称,若管理员未修改过设备名称,则产品名称为H3C。
管理员可以通过sysname命令配置设备缺省情况下的产品名称。关于sysname命令的详细介绍请参见“基础配置命令参考”中的“设备管理”。
¡ 配置本机IP地址。
host { ip | ipv6 } address ip-address
缺省情况下,未配置本机IP地址。
(4) 配置Diameter协商超时时间。
capability-exchange timeout timeout-value
缺省情况下,Diameter协商超时时间为10秒。
当设备向服务器发送Diameter数据报文一段时间后,仍没有得到服务器的响应,则有必要重传Diameter数据报文,以保证用户尽可能地获得相应的服务。
开启Diameter数据重传功能后,当设备向实服务器发送数据报文时,在数据重传超时时间内没有收到实服务器的应答报文,将选择同一实服务组内另一台实服务器重新发送该数据报文,并重新开始计时,若在重传超时时间到期时依旧没有收到应答,则认为该Diameter数据发送失败,通知客户端不可达。
设备仅支持对数据报文重传一次。
(1) 进入系统视图。
system-view
(2) 进入Diameter-session类型的参数模板视图。
parameter-profile profile-name [ type diameter-session ]
(3) 开启Diameter数据报文重传功能。
retransmission enable
缺省情况下,Diameter数据报文重传功能处于关闭状态。
(4) 配置Diameter数据报文重传超时时间。
retransmission timeout timeout-value
缺省情况下,Diameter数据报文重传超时时间为5秒。
(1) 进入系统视图。
system-view
(2) 进入HTTP类型的参数模板视图。
parameter-profile profile-name [ type http ]
(3) 配置对每个HTTP请求报文都进行负载均衡。
rebalance per-request
缺省情况下,只对一条连接的第一个HTTP请求报文进行负载均衡,其余请求报文的处理方式与第一个相同。
通过开启负载均衡设备与服务器的连接复用功能,可在负载均衡设备与服务器之间建立一条长时间不会老化的连接,使多个客户端复用同一条与服务器的TCP连接。
开启了负载均衡设备与服务器的连接复用功能后,可通过配置以下参数对TCP连接的复用时间、复用次数、复用范围以及连接池大小进行限制:
· 空闲超时时间:当负载均衡设备与服务器之间TCP连接的空闲时间达到配置的空闲超时时间时,此连接将会被删除,后续客户端发起的连接请求将触发建立新的TCP连接。
· 最大复用次数:当负载均衡设备与服务器TCP连接的复用次数达到配置的最大复用次数时,此连接将会被删除,后续客户端发起的连接请求将触发建立新的TCP连接。
· IPv4网络掩码/IPv6前缀:通过配置连接复用的IPv4网络掩码或IPv6前缀,可对负载均衡设备与服务器之间连接复用的客户端网段进行限制。当负载均衡设备收到客户端的连接请求时,若客户端网段与已建立的TCP空闲连接的网段相同,则复用已建立的空闲连接。否则,触发建立新的TCP连接。
· MySQL连接池大小:当MySQL数据传输完成后,不立即断开TCP连接,而是将TCP连接保存在MySQL连接池中。当需要建立新的连接时,优先从MySQL连接池中获取可用连接,而不是重新建立一个新连接。若MySQL连接池中的连接数达到配置的上限,则不再将空闲连接保存在连接池中。
(1) 进入系统视图。
system-view
(2) 进入HTTP或MySQL类型的参数模板视图。
parameter-profile profile-name [ type { http | mysql } ]
(3) 开启负载均衡设备与服务器的连接复用功能。
server-connection reuse
缺省情况下,负载均衡设备与服务器的连接复用功能处于关闭状态。
快速HTTP类型的虚服务器不支持本功能。
(4) 退回系统视图。
quit
(1) 进入MySQL或OneConnect类型的参数模板视图。
parameter-profile profile-name [ type { mysql | oneconnect } ]
(2) (可选)配置负载均衡设备与服务器之间TCP连接的空闲超时时间。
idle-time idle-time
缺省情况下,负载均衡设备与服务器之间TCP连接的空闲超时时间为86400秒。
(3) (可选)配置负载均衡设备与服务器之间TCP连接的最大复用次数。
max-reuse reuse-number
缺省情况下,负载均衡设备与服务器之间TCP连接的最大复用次数为1000。
(4) (可选)配置连接复用的IPv4网络掩码。
ip source mask { mask-length | mask }
缺省情况下,连接复用的IPv4网络掩码为自然掩码。
(5) (可选)配置连接复用的IPv6前缀长度。
ipv6 source prefix prefix-length
缺省情况下,连接复用的IPv6前缀长度为0。
(6) (可选)配置连接复用的连接池大小。
pool-size pool-size
缺省情况下,连接复用的连接池大小为1024。
仅MySQL类型的参数模板支持本配置。
(1) 进入系统视图。
system-view
(2) 进入HTTP类型的参数模板视图。
parameter-profile profile-name [ type http ]
(3) 配置对每个HTTP请求或应答报文的首部都执行插入、删除或修改操作。
header modify per-request
缺省情况下,只对每个连接的第一个HTTP请求或应答报文的首部执行插入、删除或修改操作。
(1) 进入系统视图。
system-view
(2) 进入HTTP类型的参数模板视图。
parameter-profile profile-name [ type http ]
(3) 配置匹配字符串时对大小写不敏感。
case-insensitive
缺省情况下,匹配字符串时对大小写敏感。
(1) 进入系统视图。
system-view
(2) 进入HTTP类型的参数模板视图。
parameter-profile profile-name [ type http ]
(3) 配置HTTP实体的最大解析长度。
content maxparse-length length
缺省情况下,HTTP实体的最大解析长度为4096。
快速HTTP类型的虚服务器不支持本功能。
(4) 配置HTTP首部的最大解析长度。
header maxparse-length length
缺省情况下,HTTP首部的最大解析长度为4096。
快速HTTP类型的虚服务器不支持本功能。
(1) 进入系统视图。
system-view
(2) 进入HTTP类型的参数模板视图。
parameter-profile profile-name [ type http ]
(3) 配置URL中分隔Secondary Cookie的字符。
secondary-cookie delimiters text
缺省情况下,URL中分隔Secondary Cookie的字符为“/”、“&”、“#”或“+”。
(4) 配置URL中Secondary Cookie的起始位置标示字符。
secondary-cookie start text
缺省情况下,URL中Secondary Cookie的起始位置标示字符为“?”。
(1) 进入系统视图。
system-view
(2) 进入HTTP类型的参数模板视图。
parameter-profile profile-name [ type http ]
(3) 配置当HTTP请求或应答报文首部超出最大长度时的处理方式。
header exceed-length { continue | drop }
缺省情况下,当HTTP请求或应答报文首部超出最大长度时,继续进行负载均衡处理。
快速HTTP类型的虚服务器不支持本功能。
若HTTP请求报文实体的长度超出配置的最大长度,设备会丢弃报文。
(1) 进入系统视图。
system-view
(2) 进入HTTP类型的参数模板视图。
parameter-profile profile-name [ type http ]
(3) 配置允许通过的HTTP请求报文实体的最大长度。
content request-max-length length
缺省情况下,允许通过的请求报文实体的最大长度不受限制。
配置本功能后,设备会将服务器发送的HTTP响应报文中Set-Cookie字段加密后发往客户端,以防止保存在Cookie中的用户关键信息泄露。客户端携带加密后的Cookie值访问服务器时,设备会将Cookie字段解密后再发往服务器。
(1) 进入系统视图。
system-view
(2) 进入HTTP类型的参数模板视图。
parameter-profile profile-name [ type http ]
(3) 配置Cookie加密功能。
encrypt-cookie name cookie-name key { cipher | simple } string
缺省情况下,不对任何Cookie加密。
快速HTTP类型的虚服务器不支持本功能。
(1) 进入系统视图。
system-view
(2) 进入HTTP压缩类型的参数模板视图。
parameter-profile profile-name [ type http-compression ]
(3) 设置进行压缩的应答报文体最小长度。
content length-threshold length
缺省情况下,压缩的应答报文体最小长度为1024字节。
(4) 设置应答报文的压缩级别。
compression level level
缺省情况下,应答报文的压缩级别为1。
(5) 设置应答报文压缩所占用的内存大小。
memory-size size
缺省情况下,应答报文压缩所占用的内存大小为8KB。
(6) 配置对HTTP1.0的请求报文的应答进行压缩处理。
request-version all
缺省情况下,不对HTTP1.0的请求报文的应答进行压缩处理。
(7) 配置应答报文首选的压缩算法。
prefer-method { deflate | gzip }
缺省情况下,首选压缩算法为gzip。
(8) 配置删除请求报文中的Accept-Encoding首部。
header delete request accept-encoding
缺省情况下,删除请求中的Accept-Encoding首部。
(9) 设置在应答报文中插入Vary首部,内容为Accept-Encoding 。
header insert response vary
缺省情况下,在应答报文中插入Vary首部,内容为Accept-Encoding。
(10) 配置进行压缩的过滤条件。
rule [ rule-id ] { permit | deny } { content-type | url } expression
缺省情况下,未配置任何过滤条件。
(11) 配置压缩使用的窗口大小。
window-size size
缺省情况下,压缩窗口大小为16KB。
通过配置HTTP统计类型的参数模板,可对访问指定URL的流量进行统计。
若HTTP流量匹配了指定URL,并且HTTP流量的源IP地址匹配了指定的源IP地址对象组,则按照源IP地址对象组进行流量统计。若未匹配指定的源IP地址对象组,则按照单个源IP地址进行流量统计。
设备支持在统计节点视图下配置多条URL类型的统计匹配规则,通过该配置可统计出访问多个URL的总流量。
(1) 进入系统视图。
system-view
(2) 进入HTTP统计类型的参数模板视图。
parameter-profile profile-name [ type http-statistics ]
(3) (可选)配置按照指定源IP地址对象组进行HTTP流量统计。
source-ip object-group object-group-name
缺省情况下,按照单个源IP地址进行HTTP流量统计。
(4) 创建统计节点,并进入统计节点视图。
node node-name
(5) 配置URL类型的统计匹配规则。
statistics-match [ rule-id ] url url
(6) (可选)配置统计节点的描述信息。
description text
缺省情况下,未配置统计节点的描述信息。
HTTP2.0协议支持在同一TCP连接上并发处理和响应多个HTTP2.0请求。若并发请求过大,则容易影响设备或服务器的并发处理能力。管理员可通过配置一条TCP连接的最大并发请求功能调整一条TCP连接所支持的最大并发请求数,当请求数到达上限后,就会自动断开该HTTP2.0的TCP连接。也可以通过配置HTTP2.0最大接收窗口值,当并发请求报文超过最大接收窗口大小时,则将并发请求按接收窗口大小分多次接收处理。
帧是HTTP2.0报文的最小单位,一条HTTP2.0报文可以由多个帧构成。管理员可通过配置HTTP2.0报文的数据帧大小,调整HTTP2.0报文中数据帧的大小,若一条报文的某个数据帧超过指定大小,则会将该帧的数据部分按照指定数据帧大小进行分装。
HTTP2.0协议实现了为大量并发请求和响应报文的头部压缩。随着在同一TCP连接上发送的HTTP2.0报文数量越来越多,且头部字符串重复少的情况下,客户端和服务器双方的头部表项就会积累得越来越大,占用的内存也就越来越多,直接影响了设备或服务器并发处理能力。管理员通过配置HTTP2.0报文头部表大小可以限制HTTP2.0报文头部表最大值,当头部表大小到达上限后,就会关闭该TCP连接并释放内存,避免头部表无限增大,而降低设备或服务器性能。
通过向HTTP2.0版本的请求报文插入头部字段,便于实服务器识别HTTP2.0版本的请求报文。
如果配置的最大并发请求数过大,可能会导致客户端或服务器的头部表项积累过大,占用大量内存,影响客户端或服务器并发处理能力;如果配置的最大并发请求数过小,可能出现建立多次TCP连接传输报文,从而降低报文传输效率的情况。管理员可根据实际网络情况,合理配置HTTP2.0连接的最大并发请求数。
本功能仅对HTTP2.0协议版本的请求报文生效。
(1) 进入系统视图。
system-view
(2) 进入HTTP2.0类型的参数模板视图。
parameter-profile profile-name [ type http2 ]
(3) 配置一条TCP连接的最大并发请求。
concurrent-streams-per-connection connection-number
缺省情况下,一条TCP连接的最大并发请求为10。
(4) 配置HTTP2.0最大接收窗口值。
recv-window size size
缺省情况下,HTTP2.0最大接收窗口值为32KB。
(5) 配置HTTP2.0报文的数据帧大小。
frame size size
缺省情况下,HTTP2.0报文的数据帧大小为16384。
(6) 配置HTTP2.0报文头部表大小。
header-table size size
缺省情况下,HTTP2.0报文的头部表大小为4096。
(7) 配置向HTTP2.0请求报文中插入头部字段。
insert-header-field field-name
缺省情况下,未插入任何头部字段。
(8) 配置关闭设备与实服务器TCP连接的方式。
connection close { fin | rst }
缺省情况下,关闭与实服务器的TCP连接方式为RST。
(9) 配置HTTP2.0请求报文TCP连接的空闲超时时间。
connection idle-timeout timeout-value
缺省情况下,TCP连接的空闲超时时间为300秒。
防护策略可以对负载均衡设备和服务器进行保护,防止攻击者在短时间内发送大量的虚假请求,致使服务器疲于应付无用信息,无法处理正常的业务。
防护策略配置任务如下:
(1) 创建防护策略
(2) 配置URL防护
(3) 配置防护动作
(1) 进入系统视图。
system-view
(2) 创建HTTP类型的防护策略,并进入防护策略视图。
loadbalance protection-policy policy-name [ type http ]
创建防护策略时必须为其指定类型;而在进入已创建的防护策略视图时可以不指定类型,但若要指定类型,则必须与创建时的类型一致。
(3) (可选)配置防护策略的描述信息。
description text
缺省情况下,未配置防护策略的描述信息。
URL防护规则定义了需要保护的URL和防护的阈值(一段时间内用户最多可以访问的次数),在防护周期内,若同一用户访问指定URL的次数超过请求报文数阈值,则执行防护动作。设备支持基于源IP地址或Cookie来判断请求报文是否来自同一用户。
· 基于源IP地址:设备将来自相同源IP地址的请求报文判断为来自同一用户。
· 基于Cookie:若请求报文中对应于指定Cookie名称的Cookie值相同,则认为请求报文来自同一用户。
设备支持在防护策略中配置多条URL防护规则,转发报文时会按照配置的URL防护规则ID顺序匹配防护规则。若用户访问的URL与某防护规则下的URL匹配成功且访问指定URL的次数超过请求报文数阈值,则执行相应的防护动作;若与某防护规则下的URL匹配不成功,则继续匹配下一条防护规则。
请根据实际的业务流量配置合适的防护周期。以免防护周期配置较大遗漏攻击报文或者防护周期配置较小频繁产生误报。
(1) 进入系统视图。
system-view
(2) 进入HTTP类型的防护策略视图。
loadbalance protection-policy policy-name
(3) 创建防护规则,并进入防护规则视图。
rule rule-id
(4) 配置防护URL。
protected-url url
缺省情况下,不存在防护URL。
(5) 配置URL防护阈值。请至少选择其中一项进行配置。
¡ 配置基于源IP地址的防护阈值。
source-ip request-threshold threshold
¡ 配置基于Cookie的防护阈值。
cookie cookie-name request-threshold threshold
缺省情况下,未配置URL防护阈值。
若同时配置基于源IP地址的防护阈值和基于Cookie的防护阈值,则当携带相同源IP或者相同Cookie值的报文达到配置的阈值时,执行相应的动作。
(6) 配置URL防护周期。
protection-period period
缺省情况下,URL防护周期为120秒。
设备支持为匹配URL防护规则的流量配置以下三种防护动作:
· 输出告警日志:生成告警信息并发送到信息中心。
· 丢弃报文:丢弃请求报文。
· 客户端验证:设备检测到请求报文个数达到阈值限制时,向客户端返回携带指定Cookie的响应报文。若客户端后续请求报文中携带的Cookie值与设备返回的Cookie值相同,则认为客户端请求报文通过验证。若请求报文中未携带Cookie值或携带的Cookie值与设备返回值不同,则认为客户端请求报文未通过验证,直接丢弃报文。设备支持通过插入HTTP首部和响应JS脚本的方式向客户端返回Cookie值。
(1) 进入系统视图。
system-view
(2) 进入HTTP类型的防护策略视图。
loadbalance protection-policy policy-name
(3) 配置防护动作。
protection-action { warning | { drop | verify { insert-header | js } } } *
缺省情况下,未配置防护动作。
服务器负载均衡支持配置TCP RST、TCP zero-window、HTTP passive和自定义监控类型的负载均衡探测模板。
当TCP RST、TCP zero-window或HTTP passive类型的负载均衡探测模板被实服务组引用后,在负载均衡探测模板的监控周期内,设备可以统计出实服务组中每个实服务器发送的RST报文的个数和zero-window(零窗口)报文的个数以及HTTP响应报文中的异常URL次数,以此来判断实服务器的健康状态,并执行相应的保护动作。设备支持配置以下两种保护动作:
· 设置实服务器为繁忙状态:当实服务器发送的RST报文或零窗口报文达到配置的阈值时,系统会将实服务器的状态标记为繁忙,然后以繁忙保护时间为间隔再次对实服务器进行检查。若实服务器在繁忙保护时间内发送的RST报文或零窗口报文未达到配置的阈值,则实服务器恢复正常状态,否则继续以繁忙保护时间为间隔检查实服务器,直到达到实服务器的繁忙保护次数为止。达到繁忙保护次数后,系统会自动关闭实服务器,此时实服务器的状态为Auto shutdown。
· 关闭实服务器:当实服务器发送的RST报文、零窗口报文或异常URL次数达到配置的阈值时,系统会自动关闭实服务器,此时实服务器的状态为Auto shutdown。
当自定义监控类型的负载均衡探测模板被实服务组、实服务组成员或实服务器引用后,在负载均衡探测模板的监控周期内,设备通过调用用户配置的监控脚本文件,完成对实服务器状态的监控。
HTTP passive类型的负载均衡探测模板的保护动作只有Auto shutdown且不可配置。
在双机热备的组网环境中,建议通过Web页面上传自定义监控模板引用的脚本文件。
(1) 进入系统视图。
system-view
(2) 创建RST类型负载均衡探测模板,并进入负载均衡探测模板视图。
loadbalance probe-template tcp-rst template-name
(3) (可选)配置负载均衡探测模板的描述信息。
description text
缺省情况下,未配置负载均衡探测模板的描述信息。
(4) 配置TCP RST类型负载均衡探测模板的监控周期。
monitor-interval interval-time
缺省情况下,TCP RST类型负载均衡探测模板的监控周期为10秒。
(5) 配置RST报文的上限阈值。
rst threshold number
缺省情况下,RST报文的上限阈值为1000000。
(6) 配置负载均衡探测模板的保护动作。
protect-action { auto-shutdown | busy [ probe-interval interval ] [ probe-times times ] }
缺省情况下,负载均衡探测模板的保护动作为设置实服务器为繁忙状态。
(1) 进入系统视图。
system-view
(2) 创建TCP zero-window类型负载均衡探测模板,并进入负载均衡探测模板视图。
loadbalance probe-template tcp-zero-window template-name
(3) (可选)配置负载均衡探测模板的描述信息。
description text
缺省情况下,未配置负载均衡探测模板的描述信息。
(4) 配置TCP zero-window类型负载均衡探测模板的监控周期。
monitor-interval interval-time
缺省情况下,TCP zero-window类型负载均衡探测模板的监控周期为10秒。
(5) 配置零窗口报文的上限阈值。
zero-window threshold percentage
缺省情况下,零窗口报文的上限阈值为40%。
(6) 配置负载均衡探测模板的保护动作。
protect-action { auto-shutdown | busy [ probe-interval interval ] [ probe-times times ] }
缺省情况下,负载均衡探测模板的保护动作为设置实服务器为繁忙状态。
(1) 进入系统视图。
system-view
(2) 创建HTTP passive类型负载均衡探测模板,并进入负载均衡探测模板视图。
loadbalance probe-template http-passive template-name
(3) (可选)配置负载均衡探测模板的描述信息。
description text
缺省情况下,未配置负载均衡探测模板的描述信息。
(4) 配置HTTP passive类型负载均衡探测模板的监控周期。
monitor-interval interval-time
缺省情况下,HTTP passive类型负载均衡探测模板的监控周期为1秒。
(5) 配置异常URL次数的上限阈值。
abnormal-url threshold number
缺省情况下,异常URL次数的上限阈值为10000。
(6) 配置负载均衡探测模板所要检查的URL。
check-url url
缺省情况下,未配置HTTP passive类型探测模板所要检查的URL。
每个探测模板最多允许配置10个URL的正则表达式。
(7) 配置负载均衡探测模板所要检查的响应状态码。
status-code code
缺省情况下,未配置HTTP passive类型探测模板所要检查的响应状态码。
每个探测模板最多允许配置10个响应状态码。
(8) 配置HTTP passive类型探测模板的响应超时时间。
timeout timeout
缺省情况下,HTTP passive类型探测模板的响应超时时间为5秒。
(1) 进入系统视图。
system-view
(2) 创建自定义监控类型负载均衡探测模板,并进入负载均衡探测模板视图。
loadbalance probe-template external-monitor template-name
(3) (可选)配置负载均衡探测模板的描述信息。
description text
缺省情况下,未配置负载均衡探测模板的描述信息。
(4) 配置自定义监控类型负载均衡探测模板的监控周期。
monitor-interval interval-time
缺省情况下,自定义监控类型负载均衡探测模板的监控周期为5秒。
(5) 配置自定义监控类型负载均衡探测模板引用的脚本文件。
external-script file-name
缺省情况下,未配置自定义监控类型负载均衡探测模板引用的脚本文件。
(6) 配置自定义监控的环境变量。
env-variables variable-name value variable-value
缺省情况下,未配置自定义监控的环境变量。
(7) 配置自定义监控的用户自定义信息。
argument text
缺省情况下,未配置自定义监控的用户自定义信息。
(8) 配置自定义监控类型负载均衡探测模板的响应超时时间。
timeout timeout
缺省情况下,自定义监控类型负载均衡探测模板的响应超时时间为3秒。
(9) 退回系统视图。
quit
(10) 配置设备允许启动的自定义监控进程个数。
loadbalance process-limit number
缺省情况下,设备允许启动的自定义监控进程个数为1个。
通过配置SNAT全局策略可将设备收到报文的源地址转换为指定地址。
用户既可在系统视图下配置SNAT全局策略,也可在实服务组视图下配置SNAT功能,后者的配置优先级较高。只有在实服务组视图下未配置SNAT功能时,SNAT全局策略才会生效,即所有实服务组均采用SNAT全局策略进行源地址转换。
SNAT全局策略配置任务如下:
(1) 创建SNAT全局策略
(2) 配置SNAT地址转换方式
(3) (可选)配置SNAT全局策略匹配优先级
(4) (可选)配置进行SNAT地址转换的过滤条件
(5) (可选)指定SNAT全局策略所属的VPN实例
(6) 开启SNAT全局策略
(1) 进入系统视图。
system-view
(2) 创建SNAT全局策略,并进入SNAT全局策略视图。
loadbalance snat-global-policy policy-name
(3) (可选)配置SNAT全局策略的描述信息。
description text
缺省情况下,未配置SNAT全局策略的描述信息。
设备支持在SNAT全局策略中配置两种SNAT地址转换方式:
· 自动映射:采用设备与实服务器通信的接口地址进行SNAT地址转换。
· SNAT地址池:根据配置的SNAT地址池进行SNAT地址转换。设备将报文的源地址修改为SNAT地址池中的地址后再转发出去。
(1) 进入系统视图。
system-view
(2) 进入SNAT全局策略视图。
loadbalance snat-global-policy policy-name
(3) 配置SNAT地址转换方式。
translation-mode { auto-map | snat-pool pool-name }
缺省情况下,未配置SNAT地址转换方式。
设备允许同时配置多个SNAT全局策略,优先级越大,越优先匹配。
(1) 进入系统视图。
system-view
(2) 进入SNAT全局策略视图。
loadbalance snat-global-policy policy-name
(3) 配置SNAT全局策略的优先级。
priority priority
缺省情况下,SNAT全局策略的优先级为0。
若配置了进行SNAT地址转换的源IP地址对象组,则仅对匹配指定源IP地址的流量进行SNAT地址转换。有关IP地址对象的配置请参见“安全配置指导”中的“对象组”。
(1) 进入系统视图。
system-view
(2) 进入SNAT全局策略视图。
loadbalance snat-global-policy policy-name
(3) 配置进行SNAT地址转换的源IP地址对象组。
source-ip object-group object-group-name
缺省情况下,对所有源IP地址的流量都进行SNAT地址转换。
若配置了进行SNAT地址转换的目的IP地址对象组,则仅对匹配指定目的IP地址的流量进行SNAT地址转换。有关IP地址对象的配置请参见“安全配置指导”中的“对象组”。
(1) 进入系统视图。
system-view
(2) 进入SNAT全局策略视图。
loadbalance snat-global-policy policy-name
(3) 配置进行SNAT地址转换的目的IP地址对象组。
destination-ip object-group object-group-name
缺省情况下,对所有流量都进行SNAT地址转换。
若配置了进行SNAT地址转换的服务对象组,则仅对匹配指定服务的流量进行SNAT地址转换。有关服务对象组的配置请参见“安全配置指导”中的“对象组”。
(1) 进入系统视图。
system-view
(2) 进入SNAT全局策略视图。
loadbalance snat-global-policy policy-name
(3) 配置进行SNAT地址转换的服务对象组。
service object-group object-group-name
缺省情况下,对所有服务类型的流量都进行SNAT地址转换。
(1) 进入系统视图。
system-view
(2) 进入SNAT全局策略视图。
loadbalance snat-global-policy policy-name
(3) 指定SNAT全局策略所属的VPN实例。
vpn-instance vpn-instance-name
缺省情况下,SNAT全局策略属于公网。
(1) 进入系统视图。
system-view
(2) 进入SNAT全局策略视图。
loadbalance snat-global-policy policy-name
(3) 开启SNAT全局策略。
snat enable
缺省情况下, SNAT全局策略处于关闭状态。
通过引用负载均衡连接数限制,可以对设备上建立的连接数进行统计和限制,能够有效解决因某些用户在短时间内经过设备向内部网络发起大量连接,导致设备系统或服务器资源迅速消耗,其它用户无法正常使用网络资源的问题,实现保护内部网络资源(主机或服务器)以及合理分配设备系统资源的目的。
一个连接数限制策略中可配置多条连接数限制规则,每条规则中指定一个连接数限制的用户范围,属于该范围的用户可建立的连接数将受到该规则中指定参数的限制。当某类型的连接数达到上限值(max-amount)时,设备将不接受该类型的新建连接请求,直到设备上已有连接因老化而删除,使得当前该类型的连接数低于连接数下限(min-amount)后,才允许新建连接。对于未匹配连接数限制规则的用户所建立的连接,设备不对其连接数进行限制。
目前,连接数限制支持根据ACL来限定用户范围,对匹配ACL规则的访问实服务器的连接数进行统计和限制。
(1) 进入系统视图。
system-view
(2) 创建负载均衡连接数限制策略,并进入连接数限制策略视图。
loadbalance limit-policy policy-name
(3) 配置负载均衡连接数限制规则。
limit limit-id acl [ ipv6 ] { acl-number | name acl-name } [ per-destination | per-service | per-source ] * amount max-amount min-amount
缺省情况下,负载均衡连接数限制策略中不存在任何限制规则。
(4) (可选)配置负载均衡连接数限制策略的描述信息。
description text
缺省情况下,未配置负载均衡连接数限制策略的描述信息。
负载均衡ALG(Application Level Gateway,应用层网关)功能用于将父、子会话分发到同一条链路上。
SIP分片报文不支持负载均衡ALG功能。
(1) 进入系统视图。
system-view
(2) 开启指定协议的负载均衡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功能均处于开启状态。
(3) 开启所有协议的负载均衡ALG功能。
loadbalance alg all-enable
缺省情况下,dns、ftp、pptp、rtsp和icmp-error协议的负载均衡ALG功能均处于开启状态。
若配置了对指定的HTTP请求进行代答或配置了负载均衡处理失败时的代答文件,当指定的代答文件发生变化后,需要通过本配置进行重新加载,否则代答文件无法生效。
(1) 进入系统视图。
system-view
(2) 配置重新加载代答文件。
reload http-response { file filename }
本命令用来对负载均衡设备发送给服务器的TCP报文头中的时间戳选项进行保持、重写或清除操作。
· 保持TCP时间戳:保持TCP报文头中的时间戳选项字段的值不变。
· 重写TCP时间戳:修改TCP报文头中的时间戳选项字段的值为设备当前时间戳值。
· 清除TCP时间戳:去除TCP报文头中的时间戳选项字段。在某些网络环境下,不需要TCP时间戳机制,去除时间戳可以减少数据包的大小,提高网络传输性能。此外,当后台实服务器不支持时间戳机制时,也可以通过本功能清除TCP报文头中的时间戳选项。
通过本功能配置全局TCP时间戳选项时,对所有TCP、HTTP、Diameter和Mysql类型的虚服务器生效;而通过在TCP类型参数模板视图下执行tcp option preserve、tcp option rewrite或tcp option remove命令来配置TCP时间戳选项时,则对引用该参数模板的虚服务器生效,后者的配置优先级较高。
(1) 进入系统视图。
system-view
(2) 配置全局TCP时间戳选项的动作。
loadbalance tcp-timestamp-mode { preserve | rewrite | remove }
缺省情况下,全局TCP时间戳选项的动作为保持。
开启本功能后,设备开始记录实服务器健康检测失败的信息。通过执行display loadbalance probe failed-record命令,可查看健康检测失败的历史记录。
(1) 进入系统视图。
system-view
(2) 开启健康检测失败信息的记录功能。
loadbalance probe failed-record enable
缺省情况下,健康检测失败信息的记录功能处于关闭状态。
(3) 配置可记录的健康检测失败信息的最大条数。
loadbalance probe failed-record max-number max-number
缺省情况下,可记录的健康检测失败信息的最大条数为50000条。
在RBM双机热备主备模式的组网环境,缺省情况下,业务主和业务备均启动NQA健康检测,各自使用自己的探测结果,主备探测结果不同步。开启本功能,只有业务主启动健康检测,业务备不启动健康检测,主设备将后台实服务器的健康检测结果同步到备设备。
本功能仅适用于以下两种组网场景:
· HA联动虚拟地址。
· HA联动VRRP主备模式。
在其他高可靠性组网场景下配置不生效。关于HA联动虚拟地址和HA联动VRRP的详细介绍,请参见“高可靠性配置指导”中的“双机热备(RBM)”。
在以上组网环境下,业务主和业务备均启动NQA健康检测,此时,可能会出现业务备探测的后台服务器结果全是失败。如果主备切换发生时,就会导致部分流量丢失。为了避免这种情况,建议开启本功能。
(1) 进入系统视图。
system-view
(2) 开启主备NQA健康检测结果同步功能。
loadbalance probe-result synchronization enable
缺省情况下,主备NQA健康检测结果同步功能处于关闭状态。
通过配置本命令,指定SSL性能优化的缓存值大小,当SSL缓存达到配置的阈值时,将统一发送至服务器。
(1) 进入系统视图。
system-view
(2) 配置SSL性能优化的缓存值。
loadbalance ssl performance-optimize cache-value cache-value
缺省情况下,SSL性能优化的缓存值为0KB,表示缓存大小不受限制。
用户可以通过指定报文的协议类型、源IPv4/IPv6地址、源端口、目的IPv4/IPv6地址和目的端口,测试报文的负载均衡效果。
可在任意视图下执行本命令,测试IPv4负载均衡的效果。
loadbalance schedule-test ip [ vpn-instance vpn-instance-name ] { application http { message-file file-name | method { get | post } url url [ header header ]&<1-10> [ content content-value ] } | protocol { protocol-number | icmp | tcp | udp } } destination destination-address destination-port destination-port source source-address source-port source-port [ slot slot-number ]
可在任意视图下执行本命令,测试IPv6负载均衡的效果。
loadbalance schedule-test ipv6 [ vpn-instance vpn-instance-name ] { application http { message-file file-name | method { get | post } url url [ header header ]&<1-10> [ content content-value ] } | protocol { protocol-number | icmpv6 | tcp | udp } } destination destination-address destination-port destination-port source source-address source-port source-port [ slot slot-number ]
开启了负载均衡的告警功能之后,负载均衡会生成告警信息,以向网管软件报告本模块的重要事件。该信息将发送至SNMP模块,通过设置SNMP中告警信息的发送参数,来决定告警信息输出的相关属性。有关告警信息的详细介绍,请参见“网络管理和监控配置指导”中的“SNMP”。
四层和七层服务器负载均衡的负载均衡告警功能配置完全相同。
(1) 进入系统视图。
system-view
(2) 开启负载均衡的告警功能。
snmp-agent trap enable loadbalance
缺省情况下,负载均衡的告警功能处于开启状态。
负载均衡日志是为了满足网络管理员安全审计的需要,对负载均衡相关信息进行的记录,包括负载均衡基本日志和负载均衡NAT日志。
通过开启负载均衡基本日志功能,可在以下几种情况下输出日志信息:
· 实服务器或实服务组的状态变化。
· 实服务器的健康检测结果发生变化。
· 实服务器或虚服务器的连接数达到上限或者恢复到正常范围内。
· 实服务器或虚服务器的连接速率达到上限或者恢复到正常范围内。
· 虚服务器引用的缺省实服务器组主备切换。
· 负载均衡动作引用的实服务器组主备切换。
通过开启负载均衡NAT日志功能,可以实现对源或目的地址进行过NAT转换的连接信息进行记录,包括IP地址及端口的转换信息、用户的访问信息等。
(1) 进入系统视图。
system-view
(2) 开启负载均衡基本日志功能。
loadbalance log enable base
缺省情况下,负载均衡基本日志功能处于开启状态。
(1) 进入系统视图。
system-view
(2) 开启负载均衡NAT日志功能。
loadbalance log enable nat
在完成上述配置后,在任意视图下执行display命令可以显示配置后服务器负载均衡的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除服务器负载均衡的统计信息。
非缺省vSystem不支持部分显示和维护命令,具体情况请见本特性的命令参考。
配置 |
命令 |
显示负载均衡动作的信息 |
display loadbalance action [ name action-name ] |
显示负载均衡类的信息 |
display loadbalance class [ name class-name ] |
显示七层负载均衡的TCP连接信息 |
display loadbalance connections [ client-side{ ipv4 | ipv6 } [ cs-client-ip ip-address [ cs-client-port port-number ] ] [ cs-server-ip ip-address [ cs-server-port port-number ] ] [ state { closed | close_wait | closing | established | fin_wait_1 | fin_wait_2 | last_ack | listening | syn_received | syn_sent | time_wait } ] ] [ server-side { ipv4 | ipv6 } [ ss-client-ip ip-address [ ss-client-port port-number ] ] [ ss-server-ip ip-address [ ss-server-port port-number ] ] [ state { closed | close_wait | closing | established | fin_wait_1 | fin_wait_2 | last_ack | listening | syn_received | syn_sent | time_wait } ] ] [ slot slot-number ] [ verbose ] |
显示七层负载均衡的Diameter连接信息 |
display loadbalance diameter connections [ slot slot-number ] [ verbose ] |
显示外链代理正在查询的域名信息 |
display loadbalance dns-query [ vpn-instance vpn-instance-name ] [ slot slot-number ] |
显示负载均衡热备份的统计信息 |
display loadbalance hot-backup statistics [ slot slot-number ] |
显示负载均衡连接数限制策略配置信息 |
display loadbalance limit-policy [ name policy-name ] |
显示负载均衡策略的信息 |
display loadbalance policy [ name policy-name ] |
显示设备允许启动的自定义监控进程个数 |
display loadbalance process-limit |
显示实服务器健康检测失败的历史记录 |
display loadbalance probe failed-record real-server [ name name ] |
显示负载均衡探测模板的信息 |
display loadbalance probe-template [ name template-name ] |
显示防护策略的配置信息 |
display loadbalance protection-policy [ name policy-name ] |
显示SNAT IP地址的统计信息 |
display loadbalance snat-address statistics { ip ip-address | ipv6 ipv6-address } [ slot slot-number ] |
显示SNAT全局策略的信息 |
display loadbalance snat-global-policy [ name policy-name ] |
显示SNAT地址池的信息 |
display loadbalance snat-pool [ name pool-name ] |
查询SNAT地址池被引用的信息 |
display loadbalance snat-pool reference [ brief | name pool-name ] |
显示SNAT地址池的统计信息 |
display loadbalance snat-pool statistics [ name pool-name ] [ slot slot-number ] |
显示负载均衡各项的配置总数 |
display loadbalance total-count |
显示设备整机所有虚服务器的统计信息 |
display loadbalance virtual-server overall-total-statistics |
显示所有虚服务器的累加统计信息 |
display loadbalance virtual-server total-statistics [ slot slot-number ] |
显示参数模板的信息 |
display parameter-profile [ name parameter-name ] |
显示实服务器的信息 |
display real-server [ brief | name real-server-name ] |
显示实服务组成员的信息 |
display real-server server-farm server-farm-name [ name real-server-name port port-number ] |
显示实服务器的统计信息 |
display real-server statistics [ name real-server-name ] [ slot slot-number ] |
显示实服务组成员的统计信息 |
display real-server statistics server-farm server-farm-name [ name real-server-name port port-number ] [ slot slot-number ] |
显示设备整机实服务器或实服务器组成员的统计信息 |
display real-server overall-statistics [ name real-server-name ] [ slot slot-number ] display real-server overall-statistics server-farm server-farm-name [ name real-server-name port port-number ] [ slot slot-number ] |
显示实服务组的信息 |
display server-farm [ brief | name server-farm-name ] |
显示持续性表项的统计信息 |
display sticky statistics [ dns-proxy | virtual-server ] [ slot slot-number ] |
显示虚服务器的持续性表项信息 |
display sticky virtual-server [ virtual-server-name virtual-server-name ] [ [ link { ip ipv4-address | ipv6 ipv6-address | interface { interface-type interface-number | interface-name } } | link-group link-group-name ] * | [ real-server-addr { ipv4-address | ipv6-address } | real-server-port port-number | server-farm server-farm-name | text text ] * ] [ class { class-name | default-class } | client-addr { ipv4-address | ipv6-address } | client-port port-number | sticky-type { diameter | address-port | http-content | http-cookie | http-header | http-passive | payload | radius | sip | ssl | tcp-payload | udp-passive } [ key sticky-key ] ] * [ traffic-group traffic-group-id ] [ brief ] [ slot slot-number ] |
显示持续性组的信息 |
display sticky-group [ name group-name ] |
显示临时生成的临时实服务器信息 |
display temporary-real-server [ brief | name temporary-real-server-name ] display temporary-real-server server-farm server-farm-name [ name temporary-real-server-name port port-number ] |
显示虚服务器的信息 |
display virtual-server [ brief | name virtual-server-name ] |
显示整机虚服务器统计信息 |
display virtual-server overall-statistics [ name virtual-server-name ] [ slot slot-number ] |
显示虚服务器的统计信息 |
display virtual-server statistics [ name virtual-server-name ] [ slot slot-number ] |
显示所有协议的负载均衡ALG状态 |
display loadbalance alg |
测试PCRE正则表达式的匹配效果,并显示匹配结果 |
loadbalance test pcre value value { string string | file file-name } [ offset offset ] [ case-insensitive ] |
测试根据正则表达式重写的效果,并显示重写结果 |
loadbalance test rewrite value value replace replace-string { string string | file file-name } [ offset offset ] [ case-insensitive ] |
清除负载均衡热备份的统计信息 |
reset loadbalance hot-backup statistics |
清除实服务器健康检测失败的历史记录 |
reset loadbalance probe failed-record real-server [ name name ] |
清除SNAT地址池的统计信息 |
reset loadbalance snat-pool statistics [ pool-name ] |
清除实服务器的统计信息 |
reset real-server statistics [ real-server-name ] |
清除实服务组成员的统计信息 |
reset real-server statistics server-farm server-farm-name [ name real-server-name port port-number ] |
清除虚服务器的持续性表项信息 |
reset sticky virtual-server [ virtual-server-name virtual-server-name ] [ [ link { ip ipv4-address | ipv6 ipv6-address | interface { interface-type interface-number | interface-name } } | link-group link-group-name ] * | [ real-server-addr { ipv4-address | ipv6-address } | real-server-port port-number | server-farm server-farm-name | text text ] * ] [ class { class-name | default-class } | client-addr { ipv4-address | ipv6-address } | client-port port-number | sticky-type { diameter | address-port | http-content | http-cookie | http-header | http-passive | payload | radius | sip | ssl | tcp-payload | udp-passive } [ key sticky-key ] ] * [ traffic-group traffic-group-id ] [ slot slot-number ] |
清除虚服务器的统计信息 |
reset virtual-server statistics [ virtual-server-name ] |
三台物理服务器Server A、Server B和Server C均可提供FTP服务,且这三台服务器的硬件配置顺次降低。通过配置服务器负载均衡,在考虑硬件性能的前提下让这三台服务器联合提供FTP服务,并通过健康检测来监控这些服务器是否可达。
图1-17 四层服务器负载均衡基本功能配置组网图
(1) 配置接口IP地址
# 根据组网图中规划的信息,配置各接口的IP地址,具体配置步骤如下。
<Device> system-view
[Device] interface gigabitethernet 1/0/1
[Device-GigabitEthernet1/0/1] ip address 61.159.4.100 255.255.255.0
[Device-GigabitEthernet1/0/1] quit
请参考以上步骤配置其他接口的IP地址,具体配置步骤略。
(2) 配置静态路由
本举例仅以静态路由方式配置路由信息。实际组网中,请根据具体情况选择相应的路由配置方式。
# 请根据组网图中规划的信息,配置静态路由,本举例假设到达Host的下一跳IP地址为61.159.4.1,实际使用中请以具体组网情况为准,具体配置步骤如下。
[Device] ip route-static 1.1.1.1 24 61.159.4.1
(3) 配置接口加入安全域。
# 请根据组网图中规划的信息,将接口加入对应的安全域,具体配置步骤如下。
[Device] security-zone name untrust
[Device-security-zone-Untrust] import interface gigabitethernet 1/0/1
[Device-security-zone-Untrust] quit
[Device] security-zone name trust
[Device-security-zone-Trust] import interface gigabitethernet 1/0/2
[Device-security-zone-Trust] quit
(4) 配置安全策略
配置安全策略放行Untrust与Trust安全域、Local与Trust安全域之间的流量,用于用户访问FTP服务器。
# 配置名称为lbrule1的安全策略规则,使用户可以访问FTP服务器,具体配置步骤如下。
[Device] security-policy ip
[Device-security-policy-ip] rule name lbrule1
[Device-security-policy-ip-1-lbrule1] source-zone untrust
[Device-security-policy-ip-1-lbrule1] destination-zone trust
[Device-security-policy-ip-1-lbrule1] destination-ip-subnet 192.168.1.0 255.255.255.0
[Device-security-policy-ip-1-lbrule1] action pass
[Device-security-policy-ip-1-lbrule1] quit
# 配置名称为lblocalout的安全策略规则,使Device可以向FTP服务器发送健康检测报文,具体配置步骤如下。
[Device-security-policy-ip] rule name lblocalout
[Device-security-policy-ip-2-lblocalout] source-zone local
[Device-security-policy-ip-2-lblocalout] destination-zone trust
[Device-security-policy-ip-2-lblocalout] destination-ip-subnet 192.168.1.0 255.255.255.0
[Device-security-policy-ip-2-lblocalout] action pass
[Device-security-policy-ip-2-lblocalout] quit
[Device-security-policy-ip] quit
(5) 配置实服务组
# 创建ICMP类型的NQA模板t1。
实服务组引用NQA模板后,设备就会自动探测实服务组下成员的IP地址和端口。缺省情况下,连续两次探测开始时间的时间间隔为5000毫秒,连续探测成功和失败的次数分别为3,探测的超时时间为3000毫秒。本举例NQA模板的各参数均采用缺省值。实际组网中,请根据具体情况配置相应的参数值。
[Device] nqa template icmp t1
[Device-nqatplt-icmp-t1] quit
# 创建实服务组sf,配置其调度算法为加权轮转算法,并指定其健康检测方法为t1。
[Device] server-farm sf
[Device-sfarm-sf] predictor round-robin
[Device-sfarm-sf] probe t1
[Device-sfarm-sf] quit
(6) 配置实服务器
# 创建实服务器rs1,配置其IPv4地址为192.168.1.1、端口号为21、权值为150,并加入实服务组sf。
[Device] real-server rs1
[Device-rserver-rs1] ip address 192.168.1.1
[Device-rserver-rs1] port 21
[Device-rserver-rs1] weight 150
[Device-rserver-rs1] server-farm sf
[Device-rserver-rs1] quit
# 创建实服务器rs2,配置其IPv4地址为192.168.1.2、端口号为21、权值为120,并加入实服务组sf。
[Device] real-server rs2
[Device-rserver-rs2] ip address 192.168.1.2
[Device-rserver-rs2] port 21
[Device-rserver-rs2] weight 120
[Device-rserver-rs2] server-farm sf
[Device-rserver-rs2] quit
# 创建实服务器rs3,配置其IPv4地址为192.168.1.3、端口号为21、权值为80,并加入实服务组sf。
[Device] real-server rs3
[Device-rserver-rs3] ip address 192.168.1.3
[Device-rserver-rs3] port 21
[Device-rserver-rs3] weight 80
[Device-rserver-rs3] server-farm sf
[Device-rserver-rs3] quit
(7) 配置虚服务器
# 创建TCP类型的虚服务器vs,配置其VSIP为61.159.4.200,指定其缺省主用实服务组为sf,并开启此虚服务器。
[Device] virtual-server vs type tcp
[Device-vs-tcp-vs] virtual ip address 61.159.4.200
[Device-vs-tcp-vs] default server-farm sf
[Device-vs-tcp-vs] service enable
#指定发送免费ARP报文或者ND报文的接口。当设备接口IP地址与虚服务器的IP地址同网段时,通过指定接口发送免费ARP报文或者ND报文。
[Device-vs-tcp-vs] arp-nd interface GigabitEthernet 1/0/1
[Device-vs-tcp-vs] quit
在三台物理服务器Server A、Server B和Server C上,将缺省网关都配置为192.168.1.100。
# 显示所有实服务器的简要信息。
[Device] display real-server brief
Real server Address Port State VPN instance Server farm
rs1 192.168.1.1 21 Active sf
rs2 192.168.1.2 21 Active sf
rs3 192.168.1.3 21 Active sf
# 显示所有实服务组的详细信息。
[Device] display server-farm
Server farm: sf
Description:
Predictor: Round robin
Proximity: Disabled
NAT: Enabled
SNAT pool:
Failed action: Keep
Active threshold: Disabled
Slow-online: Disabled
Selected server: Disabled
Probe information:
Probe success criteria: All
Probe method:
t1
Total real server: 3
Active real server: 3
Real server list:
Name State VPN instance Address Port Weight Priority
rs1 Active 192.168.1.1 21 150 4
rs2 Active 192.168.1.2 21 120 4
rs3 Active 192.168.1.3 21 80 4
# 显示所有虚服务器的详细信息。
[Device] display virtual-server
Virtual server: vs
Description:
Type: TCP
State: Active
VPN instance:
Virtual IPv4 address: 61.159.4.200/32
Virtual IPv6 address: --
Port: 0
Primary server farm: sf (in use)
Backup server farm:
Sticky:
LB policy:
LB limit-policy:
Connection limit: --
Rate limit:
Connections: --
Bandwidth: --
Inbound bandwidth: --
Outbound bandwidth: --
SSL server policy:
Connection synchronization: Disabled
Sticky synchronization: Disabled
Bandwidth busy protection: Disabled
Interface bandwidth statistics: Disabled
Route advertisement: Disabled
三台物理服务器Server A、Server B和Server C均可提供FTP服务,通过配置服务器负载均衡,在考虑硬件性能的前提下让这三台服务器联合提供FTP服务。为提高业务运行稳定性,使用两台Device进行双机热备组网。具体需要实现如下需求:
· Device A作为主设备,Device B作为备设备。
· 当Device A设备或其他链路出现故障时,由Device B接替Device A继续工作。
· 主设备恢复正常后,流量重新切回原主,备设备不处理业务,原主设备正常处理业务。
· 设备与交换机上、下连接的主机和Router之间需要运行VRRP进行路由互通。
图1-18 四层服务器负载均衡双机热备配置物理组网图
图1-19 四层服务器负载均衡双机热备配置逻辑组网图
(1) 确保主备设备的软硬件环境一致
# 在配置HA功能之前,请先保证主/备设备的硬件环境和软件环境的一致性。
(2) 配置Switch
# 在Switch上创建VLAN 10,将GigabitEthernet1/0/1、GigabitEthernet1/0/3和GigabitEthernet1/0/5的接口链路类型设置为Access,并将接口加入VLAN 10。
# 在Switch上创建VLAN 20,将GigabitEthernet1/0/2、GigabitEthernet1/0/4和GigabitEthernet1/0/6的接口链路类型设置为Access,并将接口加入VLAN 20。
(3) 配置Router
# 配置接口GigabitEthernet1/0/7的IPv4地址为10.0.0.3/24。
# 配置路由信息,去往内网流量的下一跳IPv4地址为VRRP备份组1的虚拟IPv4地址10.0.0.1,去往Internet流量的下一跳IPv4地址为出接口对端的IPv4地址。
(4) 配置Device A
a. 配置接口IPv4地址
# 根据组网图中规划的信息,配置各接口的IPv4地址,具体配置步骤如下。
<DeviceA> system-view
[DeviceA] interface gigabitethernet 1/0/1
[DeviceA-GigabitEthernet1/0/1] ip address 10.0.0.253 255.255.255.0
[DeviceA-GigabitEthernet1/0/1] quit
请参考以上步骤配置其他接口的IP地址,具体配置步骤略。
# 创建三层聚合接口1,配置接口IPv4地址,将端口GigabitEthernet 1/0/3和GigabitEthernet 1/0/4加入到聚合组1中,具体配置步骤如下。
[DeviceA] interface route-aggregation 1
[DeviceA-Route-Aggregation1] ip address 1.1.1.1 255.255.255.0
[DeviceA-Route-Aggregation1] quit
[DeviceA] interface GigabitEthernet 1/0/3
[DeviceA-GigabitEthernet1/0/3] port link-aggregation group 1
[DeviceA-GigabitEthernet1/0/3] quit
[DeviceA] interface GigabitEthernet 1/0/4
[DeviceA-GigabitEthernet1/0/4] port link-aggregation group 1
[DeviceA-GigabitEthernet1/0/4] quit
b. 配置接口加入安全域。
# 请根据组网图中规划的信息,将接口加入对应的安全域,具体配置步骤如下。
[DeviceA] security-zone name untrust
[DeviceA-security-zone-Untrust] import interface gigabitethernet 1/0/1
[DeviceA-security-zone-Untrust] quit
[DeviceA] security-zone name trust
[DeviceA-security-zone-Trust] import interface gigabitethernet 1/0/2
[DeviceA-security-zone-Trust] quit
c. 配置静态路由,保证路由可达
本举例仅以静态路由方式配置路由信息。实际组网中,请根据具体情况选择相应的路由配置方式。
# 请根据组网图中规划的信息,配置静态路由使设备与内外网之间路由可达。本举例假设到达外网的下一跳IPv4地址为10.0.0.3,实际环境中请以具体组网情况为准,具体配置步骤如下。
[DeviceA] ip route-static 0.0.0.0 0.0.0.0 10.0.0.3
d. 配置安全策略,允许所需的业务报文通过
此部分安全策略只需在主管理设备配置,HA组网完成后,从管理设备会自动同步这些安全策略配置信息。
# 配置名称为untrust-trust的安全策略规则,使用户可以访问服务器,具体配置步骤如下。
[DeviceA] security-policy ip
[DeviceA-security-policy-ip] rule name untrust-trust
[DeviceA-security-policy-ip-1-untrust-trust] source-zone untrust
[DeviceA-security-policy-ip-1-untrust-trust] destination-zone trust
[DeviceA-security-policy-ip-1-untrust-trust] destination-ip-subnet 192.168.1.0 24
[DeviceA-security-policy-ip-1-untrust-trust] action pass
[DeviceA-security-policy-ip-1-untrust-trust] quit
# 配置名称为localout的安全策略规则,使DeviceA可以向服务器发送健康检测报文,具体配置步骤如下。
[DeviceA-security-policy-ip] rule name localout
[DeviceA-security-policy-ip-2-localout] source-zone local
[DeviceA-security-policy-ip-2-localout] destination-zone trust
[DeviceA-security-policy-ip-2-localout] destination-ip-subnet 192.168.1.0 24
[DeviceA-security-policy-ip-2-localout] action pass
[DeviceA-security-policy-ip-2-localout] quit
# 配置安全策略规则,允许VRRP协议报文通过。当HA通道断开时,使Device A与Device B之间可以交换VRRP报文,进行VRRP角色竞选,保证网络互通。
[DeviceA-security-policy-ip] rule name vrrp1
[DeviceA-security-policy-ip-3-vrrp1] source-zone trust
[DeviceA-security-policy-ip-3-vrrp1] destination-zone local
[DeviceA-security-policy-ip-3-vrrp1] service vrrp
[DeviceA-security-policy-ip-3-vrrp1] action pass
[DeviceA-security-policy-ip-3-vrrp1] quit
[DeviceA-security-policy-ip] rule name vrrp2
[DeviceA-security-policy-ip-4-vrrp2] source-zone local
[DeviceA-security-policy-ip-4-vrrp2] destination-zone trust
[DeviceA-security-policy-ip-4-vrrp2] service vrrp
[DeviceA-security-policy-ip-4-vrrp2] action pass
[DeviceA-security-policy-ip-4-vrrp2] quit
[DeviceA-security-policy-ip] rule name vrrp3
[DeviceA-security-policy-ip-5-vrrp3] source-zone untrust
[DeviceA-security-policy-ip-5-vrrp3] destination-zone local
[DeviceA-security-policy-ip-5-vrrp3] service vrrp
[DeviceA-security-policy-ip-5-vrrp3] action pass
[DeviceA-security-policy-ip-5-vrrp3] quit
[DeviceA-security-policy-ip] rule name vrrp4
[DeviceA-security-policy-ip-6-vrrp4] source-zone local
[DeviceA-security-policy-ip-6-vrrp4] destination-zone untrust
[DeviceA-security-policy-ip-6-vrrp4] service vrrp
[DeviceA-security-policy-ip-6-vrrp4] action pass
[DeviceA-security-policy-ip-6-vrrp4] quit
[DeviceA-security-policy-ip] quit
e. 配置高可靠性
# 配置Device A作为主管理设备,对端IP地址为1.1.1.2,本端IP地址为1.1.1.1,主备设备之间建立数据通道需要使用的接口为RAGG1,运行模式为主备模式(缺省情况下,HA工作模式为主备模式),管理角色选择主管理设备,配置信息一致性检查开启,时间间隔为12小时。
[DeviceA] remote-backup group
[DeviceA-remote-backup-group] remote-ip 1.1.1.2
[DeviceA-remote-backup-group] local-ip 1.1.1.1
[DeviceA-remote-backup-group] data-channel interface route-aggregation 1
[DeviceA-remote-backup-group] device-role primary
RBM_P[DeviceA-remote-backup-group] undo backup-mode
RBM_P[DeviceA-remote-backup-group] hot-backup enable
RBM_P[DeviceA-remote-backup-group] configuration auto-sync enable
RBM_P[DeviceA-remote-backup-group] configuration sync-check interval 12
RBM_P[DeviceA-remote-backup-group] quit
# 配置VRRP备份组,并与HA关联。实现HA对VRRP备份组的统一管理和流量引导。
RBM_P[DeviceA] interface gigabitethernet 1/0/1
RBM_P[DeviceA-GigabitEthernet1/0/1] vrrp vrid 1 virtual-ip 10.0.0.1 active
RBM_P[DeviceA-GigabitEthernet1/0/1] quit
RBM_P[DeviceA] interface gigabitethernet 1/0/2
RBM_P[DeviceA-GigabitEthernet1/0/2] vrrp vrid 2 virtual-ip 192.168.1.254 active
RBM_P[DeviceA-GigabitEthernet1/0/2] quit
以下步骤仅需要在此主管理设备上(Device A)进行配置即可,从管理设备(Device B)会自动同步这些负载均衡配置信息。
f. 配置NQA健康检测模板
# 创建ICMP类型的NQA模板t1。
实服务组引用NQA模板后,设备就会自动探测实服务组下成员的IP地址和端口。缺省情况下,连续两次探测开始时间的时间间隔为5000毫秒,连续探测成功和失败的次数分别为3,探测的超时时间为3000毫秒。本举例NQA模板的各参数均采用缺省值。实际组网中,请根据具体情况配置相应的参数值。
RBM_P[DeviceA] nqa template icmp t1
RBM_P[DeviceA-nqatplt-icmp-t1] quit
g. 配置源地址池
# 创建源地址池snat,配置地址范围为192.168.1.101~192.1.168.110,配置发送免费ARP或ND报文的接口。
RBM_P[DeviceA] loadbalance snat-pool snat
RBM_P[DeviceA-lbsnat-pool-addr-snat] ip range start 192.168.1.101 end 192.168.1.110
RBM_P[DeviceA-lbsnat-pool-addr-snat] arp-nd interface gigabitethernet 1/0/2
RBM_P[DeviceA-lbsnat-pool-addr-snat] quit
h. 配置实服务组
# 创建实服务组sf,配置其调度算法为加权轮转算法,并指定其健康检测方法为t1,配置SNAT地址池转换方式。
RBM_P[DeviceA] server-farm sf
RBM_P[DeviceA-sfarm-sf] predictor round-robin
RBM_P[DeviceA-sfarm-sf] probe t1
RBM_P[DeviceA-sfarm-sf] snat-pool snat
RBM_P[DeviceA-sfarm-sf] quit
i. 配置实服务器
# 创建实服务器rs1,配置其IPv4地址为192.168.1.3、端口号为21、权值为150,并加入实服务组sf。
RBM_P[DeviceA] real-server rs1
RBM_P[DeviceA-rserver-rs1] ip address 192.168.1.3
RBM_P[DeviceA-rserver-rs1] port 21
RBM_P[DeviceA-rserver-rs1] weight 150
RBM_P[DeviceA-rserver-rs1] server-farm sf
RBM_P[DeviceA-rserver-rs1] quit
# 创建实服务器rs2,配置其IPv4地址为192.168.1.4、端口号为21、权值为120,并加入实服务组sf。
RBM_P[DeviceA] real-server rs2
RBM_P[DeviceA-rserver-rs2] ip address 192.168.1.4
RBM_P[DeviceA-rserver-rs2] port 21
RBM_P[DeviceA-rserver-rs2] weight 120
RBM_P[DeviceA-rserver-rs2] server-farm sf
RBM_P[DeviceA-rserver-rs2] quit
# 创建实服务器rs3,配置其IPv4地址为192.168.1.5、端口号为21、权值为80,并加入实服务组sf。
RBM_P[DeviceA] real-server rs3
RBM_P[DeviceA-rserver-rs3] ip address 192.168.1.5
RBM_P[DeviceA-rserver-rs3] port 21
RBM_P[DeviceA-rserver-rs3] weight 80
RBM_P[DeviceA-rserver-rs3] server-farm sf
RBM_P[DeviceA-rserver-rs3] quit
j. 配置虚服务器
# 创建TCP类型的虚服务器vs,配置其VSIP为61.159.4.100,指定其缺省主用实服务组为sf,配置虚服务器绑定VRRP备份组1关联接口GigabitEthernet1/0/1,分别开启会话扩展信息和持续性表项的备份功能,并开启此虚服务器。
RBM_P[DeviceA] virtual-server vs type tcp
RBM_P[DeviceA-vs-tcp-vs] virtual ip address 61.159.4.100
RBM_P[DeviceA-vs-tcp-vs] port 21
RBM_P[DeviceA-vs-tcp-vs] default server-farm sf
RBM_P[DeviceA-vs-tcp-vs] vrrp vrid 1 interface gigabitethernet 1/0/1
RBM_P[DeviceA-vs-tcp-vs] connection-sync enable
RBM_P[DeviceA-vs-tcp-vs] sticky-sync enable global
RBM_P[DeviceA-vs-tcp-vs] service enable
RBM_P[DeviceA-vs-tcp-vs] quit
(5) 配置Device B
a. 配置接口IPv4地址
# 根据组网图中规划的信息,配置各接口的IPv4地址,具体配置步骤如下。
<DeviceB> system-view
[DeviceB] interface gigabitethernet 1/0/1
[DeviceB-GigabitEthernet1/0/1] ip address 10.0.0.254 255.255.255.0
[DeviceB-GigabitEthernet1/0/1] quit
请参考以上步骤配置其他接口的IP地址,具体配置步骤略。
# 创建三层聚合接口1,配置接口IPv4地址,将端口GigabitEthernet 1/0/3和GigabitEthernet 1/0/4加入到聚合组1中,具体配置步骤如下。
[DeviceB] interface route-aggregation 1
[DeviceB-Route-Aggregation1] ip address 1.1.1.2 255.255.255.0
[DeviceB-Route-Aggregation1] quit
[DeviceB] interface gigabitethernet 1/0/3
[DeviceB-GigabitEthernet1/0/3] port link-aggregation group 1
[DeviceB-GigabitEthernet1/0/3] quit
[DeviceB] interface gigabitethernet 1/0/4
[DeviceB-GigabitEthernet1/0/4] port link-aggregation group 1
[DeviceB-GigabitEthernet1/0/4] quit
b. 配置接口加入安全域。
# 请根据组网图中规划的信息,将接口加入对应的安全域,具体配置步骤如下。
[DeviceB] security-zone name untrust
[DeviceB-security-zone-Untrust] import interface gigabitethernet 1/0/1
[DeviceB-security-zone-Untrust] quit
[DeviceB] security-zone name trust
[DeviceB-security-zone-Trust] import interface gigabitethernet 1/0/2
[DeviceB-security-zone-Trust] quit
c. 配置静态路由,保证路由可达
本举例仅以静态路由方式配置路由信息。实际组网中,请根据具体情况选择相应的路由配置方式。
# 请根据组网图中规划的信息,配置静态路由使设备与内外网之间路由可达。本举例假设到达外网的下一跳IPv4地址为10.0.0.3,实际环境中请以具体组网情况为准,具体配置步骤如下。
[DeviceB] ip route-static 0.0.0.0 0.0.0.0 10.0.0.3
d. 配置高可靠性
# Device B作为备设备,对端IP地址为1.1.1.1,本端IP地址为1.1.1.2,主备设备之间建立数据通道需要使用的接口为RAGG1,运行模式为主备模式(缺省情况下,HA工作模式为主备模式),管理角色选择从管理设备,配置信息一致性检查开启,时间间隔为12小时。
[DeviceB] remote-backup group
[DeviceB-remote-backup-group] remote-ip 1.1.1.1
[DeviceB-remote-backup-group] local-ip 1.1.1.2
[DeviceB-remote-backup-group] data-channel interface route-aggregation 1
[DeviceB-remote-backup-group] device-role secondary
RBM_S[DeviceB-remote-backup-group] undo backup-mode
RBM_S[DeviceB-remote-backup-group] hot-backup enable
RBM_S[DeviceB-remote-backup-group] configuration auto-sync enable
RBM_S[DeviceB-remote-backup-group] configuration sync-check interval 12
RBM_S[DeviceB-remote-backup-group] quit
# 配置VRRP备份组,并与HA关联。实现HA对VRRP备份组的统一管理和流量引导。
RBM_S[DeviceB] interface gigabitethernet 1/0/1
RBM_S[DeviceB-GigabitEthernet1/0/1] vrrp vrid 1 virtual-ip 10.0.0.1 standby
RBM_S[DeviceB-GigabitEthernet1/0/1] quit
RBM_S[DeviceB] interface gigabitethernet 1/0/2
RBM_S[DeviceB-GigabitEthernet1/0/2] vrrp vrid 2 virtual-ip 192.168.1.254 standby
RBM_S[DeviceB-GigabitEthernet1/0/2] quit
(6) 配置物理服务器
在三台物理服务器Server A、Server B和Server C上,将缺省网关都配置为192.168.1.254。
(1) Device A
# 以上配置完成后,通过执行以下显示命令可查看HA配置已生效,HA通道已建立。
RBM_P[DeviceA] display remote-backup-group status
Remote backup group information:
Backup mode: Active/standby
Device management role: Primary
Device running status: Active
Data channel interface: Route-Aggregation1
Local IP: 1.1.1.1
Remote IP: 1.1.1.2 Destination port: 60064
Control channel status: Connected
Keepalive interval: 1s
Keepalive count: 10
Configuration consistency check interval: 12 hour
Configuration consistency check result: Not Performed
Configuration backup status: Auto sync enabled
Session backup status: Hot backup enabled
Uptime since last switchover: 0 days, 3 hours, 11 minutes
Switchover records:
Time Status change Cause
2023-06-22 13:33:33 Initial to Active Local device rebooted
# 以上配置完成后,通过执行以下显示命令可查看VRRP备份组的状态信息。
RBM_P[DeviceA] display vrrp
IPv4 Virtual Router Information:
Running mode : Standard
RBM control channel is established
VRRP active group status : Master
VRRP standby group status: Master
Total number of virtual routers : 2
Interface VRID State Running Adver Auth Virtual
Pri Timer Type IP
---------------------------------------------------------------------
GE1/0/1 1 Master 100 100 None 10.0.0.1
GE1/0/2 2 Master 100 100 None 192.168.1.254
# 显示所有实服务器的简要信息。
RBM_P[DeviceA] display real-server brief
Real server Address Port State VPN instance Server farm
rs1 192.168.1.3 21 Active sf
rs2 192.168.1.4 21 Active sf
rs3 192.168.1.5 21 Active sf
# 显示所有实服务组的详细信息。
RBM_P[DeviceA] display server-farm
Server farm: sf
Description:
Predictor: Round robin
Proximity: Disabled
NAT: Enabled
SNAT pool: snat
Failed action: Keep
Active threshold: Disabled
Slow-online: Disabled
Selected server: Disabled
Probe information:
Probe success criteria: All
Probe method:
t1
Total real server: 3
Active real server: 3
Real server list:
Name State VPN instance Address Port Weight Priority
rs1 Active 192.168.1.3 21 150 4
rs2 Active 192.168.1.4 21 120 4
rs3 Active 192.168.1.5 21 80 4
# 显示所有虚服务器的详细信息。
RBM_P[DeviceA] display virtual-server
Virtual server: vs
Description:
Type: TCP
State: Active
VPN instance:
Virtual IPv4 address: 61.159.4.100/32
Virtual IPv6 address: --
Port: 21
Primary server farm: sf (in use)
Backup server farm:
Sticky:
LB policy:
LB limit-policy:
Connection limit: --
Rate limit:
Connections: --
Bandwidth: --
Inbound bandwidth: --
Outbound bandwidth: --
SSL server policy:
Connection synchronization: Enabled
Sticky synchronization: Enabled global
Bandwidth busy protection: Disabled
Interface bandwidth statistics: Disabled
Route advertisement: Disabled
# 当内网服务器与Internet之间有流量经过时,Device A上可以看到处理过的流量信息,而Device B上没有。
# 当Device A故障时,查看Device A管理角色为主管理设备,运行状态为备用状态,心跳状态为正常,VRRP虚拟地址状态为Initialize。
(2) Device B
# 以上配置完成后,通过执行以下显示命令可查看HA配置是否生效,HA通道是否建立。
RBM_S[DeviceB] display remote-backup-group status
Remote backup group information:
Backup mode: Active/standby
Device management role: Secondary
Device running status: Standby
Data channel interface: Route-Aggregation1
Local IP: 1.1.1.2
Remote IP: 1.1.1.1 Destination port: 60064
Control channel status: Connected
Keepalive interval: 1s
Keepalive count: 10
Configuration consistency check interval: 12 hour
Configuration consistency check result: Not Performed
Configuration backup status: Auto sync enabled
Session backup status: Hot backup enabled
Uptime since last switchover: 0 days, 3 hours, 11 minutes
Switchover records:
Time Status change Cause
2023-06-22 13:33:33 Initial to Standby Local device rebooted
# 以上配置完成后,通过执行以下显示命令可查看VRRP备份组的状态信息。
RBM_S[DeviceB] display vrrp
IPv4 Virtual Router Information:
Running mode : Standard
RBM control channel is established
VRRP active group status : Backup
VRRP standby group status: Backup
Total number of virtual routers : 2
Interface VRID State Running Adver Auth Virtual
Pri Timer Type IP
---------------------------------------------------------------------
GE1/0/1 1 Backup 100 100 None 10.0.0.1
GE1/0/2 2 Backup 100 100 None 192.168.1.254
# 当内网服务器与Internet之间有流量经过时,Device A上可以看到处理过的流量信息,而Device B上没有。
# 当Device A故障时,查看Device B管理角色为从管理设备,运行状态为主用状态,心跳状态为正常,VRRP虚拟地址状态为Master。
三台物理服务器Server A、Server B和Server C均可提供FTP服务,通过配置服务器负载均衡,在考虑硬件性能的前提下让这三台服务器联合提供FTP服务。为提高业务运行稳定性和可靠性,优化网络性能以及灵活扩展网络结构,使用两台Device搭建高可靠性OSPF主备组网。具体需要实现如下需求:
· Device A作为主设备,Device B作为备设备。
· 当Device A设备或其他链路出现故障时,业务能够被Device B接替Device A继续运行业务。
· 主设备恢复正常后,流量重新切回原主设备,备设备不处理业务,原主设备正常处理业务。
· 设备与交换机SwitchA、SwitchB和SwitchC之间需要运行OSPF进行路由互通。
图1-20 四层服务器负载均衡RBM+OSPF主备配置组网图
设备 |
接口 |
地址 |
Device A |
GE1/0/1 |
192.1.2.1/24 |
GE1/0/2 |
192.168.2.1/24 |
|
Device B |
GE1/0/1 |
192.1.2.2/24 |
GE1/0/2 |
192.168.2.2/24 |
|
Router |
GE1/0/7 |
10.0.0.3/24 |
Switch A |
GE1/0/1 |
10.0.0.7/24 |
GE1/0/2 |
192.168.1.254/24 |
|
Vlan-interface 10 |
167.1.1.2/24 |
|
Vlan-interface 11 |
168.1.1.2/24 |
|
Vlan-interface 20 |
177.1.1.2/24 |
|
Vlan-interface 21 |
178.1.1.2/24 |
|
Switch B |
Vlan-interface 10 |
167.1.1.1/24 |
Vlan-interface 11 |
168.1.1.1/24 |
|
Vlan-interface 23 |
23.1.1.3/24 |
|
Vlan-interface 24 |
24.1.1.3/24 |
|
Vlan-interface 55 |
192.1.2.5/24 |
|
Vlan-interface 56 |
192.168.2.5/24 |
|
Switch C |
Vlan-interface 20 |
177.1.1.1./24 |
Vlan-interface 21 |
178.1.1.1/24 |
|
Vlan-interface 23 |
23.1.1.4/24 |
|
Vlan-interface 24 |
24.1.1.4/24 |
|
Vlan-interface 55 |
192.1.2.6/24 |
|
Vlan-interface 56 |
192.168.2.6/24 |
(1) 确保主备设备的软硬件环境一致
# 在配置HA功能之前,请先保证主/备设备的硬件环境和软件环境的一致性。
(2) 配置Router
# 配置接口GigabitEthernet 1/0/7的IPv4地址为10.0.0.3/24。
# 配置路由信息,去往内网流量的下一跳IPv4地址为10.0.0.7,去往Internet流量的下一跳IPv4地址为3.1.1.15,实际环境中请以具体组网情况为准,具体配置步骤如下。
[Router] ip route-static 0.0.0.0 0.0.0.0 10.0.0.7
[Router] ip route-static 192.168.1.0 255.255.255.0 3.1.1.15
(3) 配置SwitchA
# 在SwitchA上创建VLAN 10、VLAN 11,并将连接Switch B的接口GigabitEthernet1/0/3设置成工作在二层模式,接口链路类型为Trunk,并允许VLAN 10和VLAN 11通过当前Trunk端口。
<SwitchA> system-view
[SwitchA] vlan 10
[SwitchA-vlan10] quit
[SwitchA] vlan 11
[SwitchA-vlan11] quit
[SwitchA] interface gigabitethernet 1/0/3
[SwitchA-GigabitEthernet1/0/3] port link-mode bridge
[SwitchA-GigabitEthernet1/0/3] port link-type trunk
[SwitchA-GigabitEthernet1/0/3] port trunk permit vlan 10 11
[SwitchA-GigabitEthernet1/0/3] quit
# 请参考上述配置步骤,创建VLAN 20、VLAN 21,并将连接Switch C的接口GigabitEthernet 1/0/4设置成工作在二层模式,接口链路类型为Trunk,并允许VLAN 20和VLAN 21通过当前Trunk端口。
# 根据组网图中规划的信息,配置各VLAN接口的IPv4地址,具体配置步骤如下。
[SwitchA] interface Vlan-interface 10
[SwitchA-Vlan-interface10] ip address 167.1.1.2 255.255.255.0
[SwitchA] interface Vlan-interface 11
[SwitchA-Vlan-interface11] ip address 168.1.1.2 255.255.255.0
[SwitchA] interface Vlan-interface 20
[SwitchA-Vlan-interface20] ip address 177.1.1.2 255.255.255.0
[SwitchA] interface Vlan-interface 21
[SwitchA-Vlan-interface21] ip address 178.1.1.2 255.255.255.0
# 指定运行OSPF进程1,并配置接口的IP地址位于网段167.1.1.0/24,177.1.1.0/24,10.0.0.0/24,接口所在的OSPF区域ID为0。
[SwitchA] ospf 1 router-id 41.1.1.7
[SwitchA-ospf-1] area 0.0.0.0
[SwitchA-ospf-1-area-0.0.0.0] network 167.1.1.0 255.255.255.0
[SwitchA-ospf-1-area-0.0.0.0] network 177.1.1.0 255.255.255.0
[SwitchA-ospf-1-area-0.0.0.0] network 10.0.0.0 255.255.255.0
[SwitchA-ospf-1-area-0.0.0.0] quit
[SwitchA-ospf-1] quit
# 指定运行OSPF进程2,并配置接口的IP地址位于网段168.1.1.0/24,178.1.1.0/24,192.168.1.0/24,接口所在的OSPF区域ID为0。
[SwitchA] ospf 2 router-id 42.1.1.7
[SwitchA-ospf-2] area 0.0.0.0
[SwitchA-ospf-2-area-0.0.0.0] network 168.1.1.0 255.255.255.0
[SwitchA-ospf-2-area-0.0.0.0] network 178.1.1.0 255.255.255.0
[SwitchA-ospf-2-area-0.0.0.0] network 192.168.1.255.255.255.0
[SwitchA-ospf-2-area-0.0.0.0] quit
(4) 配置Switch B
# 创建VLAN 10、VLAN 11,并将连接Switch A的接口设置成工作在二层模式,接口链路类型为Trunk,并允许VLAN 10和VLAN 11通过当前Trunk端口。
<SwitchB> system-view
[SwitchB] vlan 10
[SwitchB-vlan10] quit
[SwitchB] vlan 11
[SwitchB-vlan11] quit
[SwitchB] interface gigabitethernet 1/0/1
[SwitchB-GigabitEthernet1/0/1] port link-mode bridge
[SwitchB-GigabitEthernet1/0/1] port link-type trunk
[SwitchB-GigabitEthernet1/0/1] port trunk permit vlan 10 11
[SwitchB-GigabitEthernet 1/0/1] quit
# 创建VLAN 55、VLAN 56,并将连接Device A的接口设置成工作在二层模式,接口链路类型为Access,并允许VLAN 55和VLAN 56通过当前Access端口。
[SwitchB] vlan 55
[SwitchB-vlan55] quit
[SwitchB] vlan 56
[SwitchB-vlan56] quit
[SwitchB] interface gigabitethernet 1/0/2
[SwitchB-GigabitEthernet1/0/2] port link-mode bridge
[SwitchB-GigabitEthernet1/0/2] port link-type access
[SwitchB-GigabitEthernet 1/0/2] port access vlan 55
[SwitchB-GigabitEthernet1/0/2] quit
[SwitchB] interface gigabitethernet 1/0/3
[SwitchB-GigabitEthernet1/0/3] port link-mode bridge
[SwitchB-GigabitEthernet1/0/3] port link-type access
[SwitchB-GigabitEthernet1/0/3] port access vlan 56
[SwitchB-GigabitEthernet1/0/3] quit
# 请参考上述配置步骤,创建VLAN 23、VLAN 24,并将连接Switch C的接口设置成工作在二层模式,接口链路类型为Access,并允许VLAN 23和VLAN 24通过当前Access端口。
# 根据组网图中规划的信息,配置各VLAN接口的IPv4地址,具体配置步骤如下。
[SwitchB] interface Vlan-interface 10
[SwitchB-Vlan-interface10] ip address 167.1.1.1 255.255.255.0
[SwitchB] interface Vlan-interface 11
[SwitchB-Vlan-interface11] ip address 168.1.1.1 255.255.255.0
[SwitchB] interface Vlan-interface 23
[SwitchB-Vlan-interface23] ip address 23.1.1.3 255.255.255.0
[SwitchB] interface Vlan-interface 24
[SwitchB-Vlan-interface24] ip address 24.1.1.3 255.255.255.0
[SwitchB] interface Vlan-interface 55
[SwitchB-Vlan-interface55] ip address 192.1.2.5 255.255.255.0
[SwitchB] interface Vlan-interface 56
[SwitchB-Vlan-interface56] ip address 192.168.2.5 255.255.255.0
# 指定运行OSPF进程1,并配置接口的IP地址位于网段23.1.1.0/24,167.1.10.0/24,192.1.2.0/24,接口所在的OSPF区域ID为0。
[SwitchB] ospf 1 router-id 43.1.1.7
[SwitchB-ospf-1] area 0.0.0.0
[SwitchB-ospf-1-area-0.0.0.0] network 23.1.1.0 255.255.255.0
[SwitchB-ospf-1-area-0.0.0.0] network 167.1.10.0 255.255.255.0
[SwitchB-ospf-1-area-0.0.0.0] network 192.1.2.0 255.255.255.0
[SwitchB-ospf-1-area-0.0.0.0] quit
# 指定运行OSPF进程2,并配置接口的IP地址位于网段24.1.1.0/24,168.1.10.0/24,192.168.2.0/24,接口所在的OSPF区域ID为0。
[SwitchB] ospf 2 router-id 44.1.1.7
[SwitchB-ospf-2] area 0.0.0.0
[SwitchB-ospf-2-area-0.0.0.0] network 24.1.1.0 255.255.255.0
[SwitchB-ospf-2-area-0.0.0.0] network 168.1.10.0 255.255.255.0
[SwitchB-ospf-2-area-0.0.0.0] network 192.168.2.0 255.255.255.0
[SwitchB-ospf-2-area-0.0.0.0] quit
(5) 配置Switch C
# 在Switch C上创建VLAN 20、VLAN 21,并将连接Switch A的接口设置成工作在二层模式,接口链路类型为Trunk,并允许VLAN 20和VLAN 21通过当前Trunk端口。
<SwitchC> system-view
[SwitchC] vlan 20
[SwitchC-vlan20] quit
[SwitchC] vlan 21
[SwitchC-vlan21] quit
[SwitchC] interface gigabitethernet 1/0/1
[SwitchC-GigabitEthernet1/0/1] port link-mode bridge
[SwitchC-GigabitEthernet 1/0/1] port link-type trunk
[SwitchC-GigabitEthernet1/0/1] port trunk permit vlan 20 21
[SwitchC-GigabitEthernet1/0/1] quit
# 创建VLAN 55、VLAN 56,并将连接Device B的接口设置成工作在二层模式,接口链路类型为Access,并允许VLAN 55和VLAN 56通过当前Access端口。
<SwitchC> system-view
[SwitchC] vlan 55
[SwitchC-vlan55] quit
[SwitchC] vlan 56
[SwitchC-vlan56] quit
[SwitchC] interface gigabitethernet 1/0/2
[SwitchC-GigabitEthernet1/0/2] port link-mode bridge
[SwitchC-GigabitEthernet1/0/2] port link-type access
[SwitchC-GigabitEthernet1/0/2] port access vlan 55
[SwitchC-GigabitEthernet1/0/2] quit
[SwitchC] interface gigabitethernet 1/0/3
[SwitchC-GigabitEthernet1/0/3] port link-mode bridge
[SwitchC-GigabitEthernet1/0/3] port link-type access
[SwitchC-GigabitEthernet1/0/3] port access vlan 56
[SwitchC-GigabitEthernet1/0/3] quit
# 请参考上述配置步骤,创建VLAN 23、VLAN 24,并将连接Switch B的接口设置成工作在二层模式,接口链路类型为Access,并允许VLAN 23和VLAN 24通过当前Access端口。
# 根据组网图中规划的信息,配置各VLAN接口的IPv4地址,具体配置步骤如下。
[SwitchC] interface Vlan-interface 20
[SwitchC-Vlan-interface20] ip address 177.1.1.1 255.255.255.0
[SwitchC] interface Vlan-interface 21
[SwitchC-Vlan-interface21] ip address 178.1.1.1 255.255.255.0
[SwitchC] interface Vlan-interface 23
[SwitchC-Vlan-interface23] ip address 23.1.1.4 255.255.255.0
[SwitchC] interface Vlan-interface 24
[SwitchC-Vlan-interface24] ip address 24.1.1.4 255.255.255.0
[SwitchC] interface Vlan-interface 55
[SwitchC-Vlan-interface55] ip address 192.1.2.6 255.255.255.0
[SwitchC] interface Vlan-interface 56
[SwitchC-Vlan-interface56] ip address 192.168.2.6 255.255.255.0
# 指定运行OSPF进程1,并配置接口的IP地址位于网段23.1.1.0/24,177.1.10.0/24,192.1.2.0/24,接口所在的OSPF区域ID为0。
[SwitchC] ospf 1 router-id 45.1.1.7
[SwitchC-ospf-1] area 0.0.0.0
[SwitchC-ospf-1-area-0.0.0.0] network 23.1.1.0 255.255.255.0
[SwitchC-ospf-1-area-0.0.0.0] network 177.1.10.0 255.255.255.0
[SwitchC-ospf-1-area-0.0.0.0] network 192.1.2.0 255.255.255.0
[SwitchC-ospf-1-area-0.0.0.0] quit
# 指定运行OSPF进程2,并配置接口的IP地址位于网段24.1.1.0/24,178.1.10.0/24,192.168.2.0/24,接口所在的OSPF区域ID为0。
[SwitchC] ospf 2 router-id 46.1.1.7
[SwitchC-ospf-2] area 0.0.0.0
[SwitchC-ospf-2-area-0.0.0.0] network 24.1.1.0 255.255.255.0
[SwitchC-ospf-2-area-0.0.0.0] network 178.1.10.0 255.255.255.0
[SwitchC-ospf-2-area-0.0.0.0] network 192.168.2.0 255.255.255.0
[SwitchC-ospf-2-area-0.0.0.0] quit
(6) 配置Device A
a. 配置接口IPv4地址
# 根据组网图中规划的信息,配置各接口的IPv4地址,具体配置步骤如下。
<DeviceA> system-view
[DeviceA] interface gigabitethernet 1/0/1
[DeviceA-GigabitEthernet1/0/1] ip address 192.1.2.1 24
[DeviceA-GigabitEthernet1/0/1] quit
[DeviceA] interface gigabitethernet 1/0/2
[DeviceA-GigabitEthernet1/0/2] ip address 192.168.2.1 24
[DeviceA-GigabitEthernet1/0/2] quit
# 创建三层聚合接口1,配置接口IPv4地址,将端口GigabitEthernet 1/0/3和GigabitEthernet 1/0/4加入到聚合组1中,具体配置步骤如下。
[DeviceA] interface route-aggregation 1
[DeviceA-Route-Aggregation1] ip address 1.1.1.1 255.255.255.0
[DeviceA-Route-Aggregation1] quit
[DeviceA] interface gigabitethernet 1/0/3
[DeviceA-GigabitEthernet1/0/3] port link-aggregation group 1
[DeviceA-GigabitEthernet1/0/3] quit
[DeviceA] interface gigabitethernet 1/0/4
[DeviceA-GigabitEthernet1/0/4] port link-aggregation group 1
[DeviceA-GigabitEthernet1/0/4] quit
b. 配置OSPF,保证路由可达
# 指定运行OSPF进程1,并配置接口的IP地址位于网段192.168.2.0/24,192.1.2.0/24,接口所在的OSPF区域ID为0。
[DeviceA] ospf 1 router-id 47.1.1.7
[DeviceA-ospf-1] area 0.0.0.0
[DeviceA-ospf-1-area-0.0.0.0] network 192.168.2.0 255.255.255.0
[DeviceA-ospf-1-area-0.0.0.0] network 192.1.2.0 255.255.255.0
[DeviceA-ospf-1-area-0.0.0.0] quit
c. 配置接口加入安全域
# 请根据组网图中规划的信息,将接口加入对应的安全域,具体配置步骤如下。
[DeviceA] security-zone name untrust
[DeviceA-security-zone-Untrust] import interface gigabitethernet 1/0/1
[DeviceA-security-zone-Untrust] quit
[DeviceA] security-zone name trust
[DeviceA-security-zone-Trust] import interface gigabitethernet 1/0/2
[DeviceA-security-zone-Trust] quit
d. 配置安全策略,允许所需的业务报文通过
此部分安全策略只需在主管理设备配置,HA组网完成后,从管理设备会自动同步这些安全策略配置信息。
# 配置名称为untrust-trust的安全策略规则,使用户可以访问FTP服务器,具体配置步骤如下。
[DeviceA] security-policy ip
[DeviceA-security-policy-ip] rule name untrust-trust
[DeviceA-security-policy-ip-1-untrust-trust] source-zone untrust
[DeviceA-security-policy-ip-1-untrust-trust] destination-zone trust
[DeviceA-security-policy-ip-1-untrust-trust] action pass
[DeviceA-security-policy-ip-1-untrust-trust] quit
# 配置名称为localout的安全策略规则,使DeviceA可以向FTP服务器发送健康检测报文,具体配置步骤如下。
[DeviceA-security-policy-ip] rule name localout
[DeviceA-security-policy-ip-2-localout] source-zone local
[DeviceA-security-policy-ip-2-localout] destination-zone trust
[DeviceA-security-policy-ip-2-localout] action pass
[DeviceA-security-policy-ip-2-localout] quit
# 配置安全策略规则,允许OSPF协议报文通过。保证OSPF邻居的建立和路由的学习。
[DeviceA-security-policy-ip] rule name ospf1
[DeviceA-security-policy-ip-3-ospf1] source-zone trust
[DeviceA-security-policy-ip-3-ospf1] destination-zone local
[DeviceA-security-policy-ip-3-ospf1] service ospf
[DeviceA-security-policy-ip-3-ospf1] action pass
[DeviceA-security-policy-ip-3-ospf1] quit
[DeviceA-security-policy-ip] rule name ospf2
[DeviceA-security-policy-ip-4-ospf2] source-zone local
[DeviceA-security-policy-ip-4-ospf2] destination-zone trust
[DeviceA-security-policy-ip-4-ospf2] service ospf
[DeviceA-security-policy-ip-4-ospf2] action pass
[DeviceA-security-policy-ip-4-ospf2] quit
[DeviceA-security-policy-ip] rule name ospf3
[DeviceA-security-policy-ip-5-ospf3] source-zone untrust
[DeviceA-security-policy-ip-5-ospf3] destination-zone local
[DeviceA-security-policy-ip-5-ospf3] service ospf
[DeviceA-security-policy-ip-5-ospf3] action pass
[DeviceA-security-policy-ip-5-ospf3] quit
[DeviceA-security-policy-ip] rule name ospf4
[DeviceA-security-policy-ip-6-ospf4] source-zone local
[DeviceA-security-policy-ip-6-ospf4] destination-zone untrust
[DeviceA-security-policy-ip-6-ospf4] service ospf
[DeviceA-security-policy-ip-6-ospf4] action pass
[DeviceA-security-policy-ip-6-ospf4] quit
[DeviceA-security-policy-ip] quit
e. 配置高可靠性
# 配置Track项监控接口状态。
[DeviceA] track 1 interface gigabitethernet 1/0/1
[DeviceA-track-1] quit
[DeviceA] track 2 interface gigabitethernet 1/0/2
[DeviceA-track-2] quit
# 配置Device A作为主管理设备,对端IP地址为1.1.1.2,本端IP地址为1.1.1.1,主备设备之间建立数据通道需要使用的接口为RAGG1,运行模式为主备模式(缺省情况下,HA工作模式为主备模式),管理角色选择主管理设备,配置信息一致性检查开启,时间间隔为24小时。
[DeviceA] remote-backup group
[DeviceA-remote-backup-group] remote-ip 1.1.1.2
[DeviceA-remote-backup-group] local-ip 1.1.1.1
[DeviceA-remote-backup-group] data-channel interface route-aggregation 1
[DeviceA-remote-backup-group] device-role primary
RBM_P[DeviceA-remote-backup-group] undo backup-mode
RBM_P[DeviceA-remote-backup-group] hot-backup enable
RBM_P[DeviceA-remote-backup-group] configuration auto-sync enable
RBM_P[DeviceA-remote-backup-group] configuration sync-check interval 24
RBM_P[DeviceA-remote-backup-group] quit
# 开启双机热备调整备设备上动态路由协议OSPF的开销值功能,并以绝对方式对外通告开销值,绝对值为6000。
RBM_P[DeviceA-remote-backup-group] adjust-cost ospf enable absolute 6000
# 配置双机热备与序号为1和2的Track项联动。
RBM_P[DeviceA-remote-backup-group] track 1
RBM_P[DeviceA-remote-backup-group] track 2
RBM_P[DeviceA-remote-backup-group] quit
f. 配置NQA健康检测模板
# 创建ICMP类型的NQA模板t1。实服务组引用NQA模板后,设备就会自动探测实服务组下成员的IP地址和端口。配置连续两次探测开始时间的时间间隔3000毫秒,连续探测成功的次数为1,其他配置项保持缺省情况。实际组网中,请根据具体情况配置相应的参数值。
RBM_P[DeviceA] nqa template icmp t1
RBM_P[DeviceA-nqatplt-icmp-t1] frequency 3000
RBM_P[DeviceA-nqatplt-icmp-t1] reaction trigger probe-pass 1
RBM_P[DeviceA-nqatplt-icmp-t1] quit
g. 配置源地址池
配置源地址池的目的是为了隐藏客户端真实源地址,以保证客户的隐私。同时,由于实服务器无法直接路由到客户端,配置源地址池可以确保响应报文通过设备顺利返回到客户端。
# 创建源地址池snat,配置地址范围为192.168.2.11~192.168.2.14,配置发送免费ARP或ND报文的接口。
RBM_P[DeviceA] loadbalance snat-pool snat
RBM_P[DeviceA-lbsnat-pool-addr-snat] ip range start 192.168.2.11 end 192.168.2.14
RBM_P[DeviceA-lbsnat-pool-addr-snat] arp-nd interface gigabitethernet 1/0/2
RBM_P[DeviceA-lbsnat-pool-addr-snat] quit
h. 配置实服务组
# 创建实服务组sf,配置其调度算法为源IP地址哈希算法,并指定其健康检测方法为t1,配置SNAT地址池转换方式,源地址池名称为snat。
RBM_P[DeviceA] server-farm sf
RBM_P[DeviceA-sfarm-sf] predictor hash address source
RBM_P[DeviceA-sfarm-sf] probe t1
RBM_P[DeviceA-sfarm-sf] snat-pool snat
RBM_P[DeviceA-sfarm-sf] quit
i. 配置实服务器
# 创建实服务器rs1,配置其IPv4地址为192.168.1.3、端口号为21,并加入实服务组sf。
RBM_P[DeviceA] real-server rs1
RBM_P[DeviceA-rserver-rs1] ip address 192.168.1.3
RBM_P[DeviceA-rserver-rs1] port 21
RBM_P[DeviceA-rserver-rs1] server-farm sf
RBM_P[DeviceA-rserver-rs1] quit
# 创建实服务器rs2,配置其IPv4地址为192.168.1.4、端口号为21,并加入实服务组sf。
RBM_P[DeviceA] real-server rs2
RBM_P[DeviceA-rserver-rs2] ip address 192.168.1.4
RBM_P[DeviceA-rserver-rs2] port 21
RBM_P[DeviceA-rserver-rs2] server-farm sf
RBM_P[DeviceA-rserver-rs2] quit
# 创建实服务器rs3,配置其IPv4地址为192.168.1.5、端口号为21,并加入实服务组sf。
RBM_P[DeviceA] real-server rs3
RBM_P[DeviceA-rserver-rs3] ip address 192.168.1.5
RBM_P[DeviceA-rserver-rs3] port 21
RBM_P[DeviceA-rserver-rs3] server-farm sf
RBM_P[DeviceA-rserver-rs3] quit
j. 配置虚服务器
# 创建TCP类型的虚服务器vs,配置其VSIP为192.1.2.100,指定其缺省主用实服务组为sf,分别开启会话扩展信息和持续性表项的备份功能,并开启此虚服务器。
RBM_P[DeviceA] virtual-server vs type tcp
RBM_P[DeviceA-vs-tcp-vs] virtual ip address 192.1.2.100
RBM_P[DeviceA-vs-tcp-vs] port 21
RBM_P[DeviceA-vs-tcp-vs] default server-farm sf
RBM_P[DeviceA-vs-tcp-vs] connection-sync enable
RBM_P[DeviceA-vs-tcp-vs] sticky-sync enable global
RBM_P[DeviceA-vs-tcp-vs] service enable
RBM_P[DeviceA-vs-tcp-vs] quit
以上第d~j步仅需要在此主设备上(Device A)进行配置即可,备设备会自动同步这些负载均衡配置信息。
(7) 配置Device B
a. 配置接口IPv4地址
# 根据组网图中规划的信息,配置各接口的IPv4地址,具体配置步骤如下。
<DeviceB> system-view
[DeviceB] interface gigabitethernet 1/0/1
[DeviceB-GigabitEthernet1/0/1] ip address 192.1.2.2 255.255.255.0
[DeviceB-GigabitEthernet1/0/1] quit
[DeviceB] interface gigabitethernet 1/0/2
[DeviceB-GigabitEthernet1/0/2] ip address 192.168.2.2 255.255.255.0
[DeviceB-GigabitEthernet1/0/2] quit
# 创建三层聚合接口1,配置接口IPv4地址,将端口GigabitEthernet 1/0/3和GigabitEthernet 1/0/4加入到聚合组1中,具体配置步骤如下。
[DeviceB] interface route-aggregation 1
[DeviceB-Route-Aggregation1] ip address 1.1.1.2 255.255.255.0
[DeviceB-Route-Aggregation1] quit
[DeviceB] interface gigabitethernet 1/0/3
[DeviceB-GigabitEthernet1/0/3] port link-aggregation group 1
[DeviceB-GigabitEthernet1/0/3] quit
[DeviceB] interface gigabitethernet 1/0/4
[DeviceB-GigabitEthernet1/0/4] port link-aggregation group 1
[DeviceB-GigabitEthernet1/0/4] quit
b. 配置OSPF,保证路由可达
# 指定运行OSPF进程1,并配置接口的IP地址位于网段192.168.2.0/24,192.1.2.0/24,接口所在的OSPF区域ID为0。
[DeviceB] ospf 1 router-id 48.1.1.7
[DeviceB-ospf-1] area 0.0.0.0
[DeviceB-ospf-1-area-0.0.0.0] network 192.168.2.0 255.255.255.0
[DeviceB-ospf-1-area-0.0.0.0] network 192.1.2.0 255.255.255.0
[DeviceB-ospf-1-area-0.0.0.0] quit
c. 配置接口加入安全域
# 请根据组网图中规划的信息,将接口加入对应的安全域,具体配置步骤如下。
[DeviceB] security-zone name untrust
[DeviceB-security-zone-Untrust] import interface gigabitethernet 1/0/1
[DeviceB-security-zone-Untrust] quit
[DeviceB] security-zone name trust
[DeviceB-security-zone-Trust] import interface gigabitethernet 1/0/2
[DeviceB-security-zone-Trust] quit
d. 配置高可靠性
# 配置Track项监控接口状态。
[DeviceB] track 1 interface gigabitethernet 1/0/1
[DeviceB-track-1] quit
[DeviceB] track 2 interface gigabitethernet 1/0/2
[DeviceB-track-2] quit
# Device B作为备设备,对端IP地址为1.1.1.1,本端IP地址为1.1.1.2,主备设备之间建立数据通道需要使用的接口为GE1/0/3,运行模式为主备模式(缺省情况下,HA工作模式为主备模式),管理角色选择从管理设备,配置信息一致性检查开启,时间间隔为24小时。
[DeviceB] remote-backup group
[DeviceB-remote-backup-group] remote-ip 1.1.1.1
[DeviceB-remote-backup-group] local-ip 1.1.1.2
[DeviceB-remote-backup-group] data-channel interface route-aggregation 1
[DeviceB-remote-backup-group] device-role secondary
RBM_S[DeviceB-remote-backup-group] undo backup-mode
RBM_S[DeviceB-remote-backup-group] hot-backup enable
RBM_S[DeviceB-remote-backup-group] configuration auto-sync enable
RBM_S[DeviceB-remote-backup-group] configuration sync-check interval 24
RBM_S[DeviceB-remote-backup-group] quit
# 开启双机热备,调整备设备上动态路由协议OSPF的开销值功能,并以绝对方式对外通告开销值,绝对值为6000。
RBM_S[DeviceB-remote-backup-group] adjust-cost ospf enable absolute 6000
# 配置双机热备与序号为1和2的Track项联动。
RBM_S[DeviceB-remote-backup-group] track 1
RBM_S[DeviceB-remote-backup-group] track 2
RBM_S[DeviceB-remote-backup-group] quit
(8) 配置物理服务器
# 配置FTP服务器的默认网关为192.168.1.254。
(1) Device A
# 以上配置完成后,通过执行以下显示命令可查看HA配置已生效,HA通道已建立。
RBM_P[DeviceA] display remote-backup-group status
Remote backup group information:
Backup mode: Active/standby
Device management role: Primary
Device running status: Active
Data channel interface: Route-Aggregation1
Local IP: 1.1.1.1
Remote IP: 1.1.1.2 Destination port: 60064
Control channel status: Connected
Keepalive interval: 1s
Keepalive count: 10
Configuration consistency check interval: 24 hour
Configuration consistency check result: Not Performed
Configuration backup status: Auto sync enabled
Session backup status: Hot backup enabled
Uptime since last switchover: 0 days, 3 hours, 11 minutes
Switchover records:
Time Status change Cause
2023-06-22 13:33:33 Initial to Active Local device rebooted
# 通过查看Device A的OSPF组网邻居状态。
RBM_P<DeviceA> display ospf peer
OSPF Process 1 with Router ID 47.1.1.7
Neighbor Brief Information
Area: 0.0.0.0
Router ID Address Pri Dead-Time State Interface
43.1.1.7 192.1.2.6 1 38 Full/DR Vlan55
44.1.1.7 192.168.2.6 1 36 Full/DR Vlan56
# 所有实服务器的简要信息。
RBM_P[DeviceA] display real-server brief
Real server Address Port State VPN instance Server farm
rs1 192.168.1.3 21 Active sf
rs2 192.168.1.4 21 Active sf
rs3 192.168.1.5 21 Active sf
# 显示所有实服务组的详细信息。
RBM_P[DeviceA] display server-farm
Server farm: sf
Description:
Predictor: Hash address source IP
Proximity: Disabled
NAT: Enabled
SNAT pool: snat
Failed action: Keep
Active threshold: Disabled
Slow-online: Disabled
Selected server: Disabled
Probe information:
Probe success criteria: All
Probe method:
t1
Total real server: 3
Active real server: 3
Real server list:
Name State VPN instance Address Port Weight Priority
rs1 Active 192.168.1.3 21 150 4
rs2 Active 192.168.1.4 21 120 4
rs3 Active 192.168.1.5 21 80 4
# 显示所有虚服务器的详细信息。
RBM_P[DeviceA] display virtual-server
Virtual server: vs
Description:
Type: TCP
State: Active
VPN instance:
Virtual IPv4 address: 192.1.2.100/32
Virtual IPv6 address: --
Port: 21
Primary server farm: sf (in use)
Backup server farm:
Sticky:
LB policy:
LB limit-policy:
Connection limit: --
Rate limit:
Connections: --
Bandwidth: --
Inbound bandwidth: --
Outbound bandwidth: --
SSL server policy:
Connection synchronization: Enabled
Sticky synchronization: Enabled global
Bandwidth busy protection: Disabled
Interface bandwidth statistics: Disabled
Route advertisement: Disabled
# 当Device A故障时,查看Device A管理角色为主管理设备,运行状态为备用状态,心跳状态为正常,OSPF的当前状态为高可靠性调整路由开销的绝对值为6000。
# 当主管理设备Device A业务口故障时,查看Device A管理角色为主管理设备,运行状态为备用状态,心跳状态为正常,OSPF的当前状态为高可靠性调整路由开销的绝对值为6000。
# 当主管理设备Device A业务口恢复正常后,备设备Device B业务口发生故障时,查看Device A管理角色为主管理设备,运行状态为主用状态,心跳状态为正常,OSPF当前状态为高可靠性未调整路由开销值。
(2) Device B
# 以上配置完成后,通过执行以下显示命令可查看HA配置是否生效,HA通道是否建立。
RBM_S[DeviceB] display remote-backup-group status
Remote backup group information:
Backup mode: Active/standby
Device management role: Secondary
Device running status: Standby
Data channel interface: Route-Aggregation 1
Local IP: 1.1.1.2
Remote IP: 1.1.1.1 Destination port: 60064
Control channel status: Connected
Keepalive interval: 1s
Keepalive count: 10
Configuration consistency check interval: 24 hour
Configuration consistency check result: Not Performed
Configuration backup status: Auto sync enabled
Session backup status: Hot backup enabled
Uptime since last switchover: 0 days, 3 hours, 11 minutes
Switchover records:
Time Status change Cause
2023-06-22 13:33:33 Initial to Standby Local device rebooted
# 查看Device B的OSPF组网邻居状态。
RBM_P<DeviceB> display ospf peer
OSPF Process 1 with Router ID 48.1.1.7
Neighbor Brief Information
Area: 0.0.0.0
Router ID Address Pri Dead-Time State Interface
45.1.1.7 192.1.2.5 1 39 Full/DR Vlan55
46.1.1.7 192.168.2.5 1 30 Full/DR Vlan56
# 当Device A故障时,查看Device B管理角色为从管理设备,运行状态为主用状态,心跳状态为正常,OSPF当前状态为高可靠性未调整路由开销值。
# 当主管理设备Device A业务口故障时,查看Device B管理角色为从管理设备,运行状态为主用状态,心跳状态为正常,OSPF当前状态为高可靠性未调整路由开销值。
# 当主管理设备Device A业务口恢复正常后,备设备Device B业务口发生故障时,查看Device B管理角色为从管理设备,运行状态为备用状态,心跳状态为正常,OSPF的当前状态为高可靠性调整路由开销的绝对值为6000。
三台物理服务器Server A、Server B和Server C均可提供HTTP服务,且这三台服务器的硬件配置顺次降低。通过配置服务器负载均衡,在考虑硬件性能的前提下让这三台服务器联合提供HTTP服务,并通过健康检测来监控这些服务器是否可达。
图1-21 七层服务器负载均衡基本功能配置组网图
(1) 配置接口IP地址
# 根据组网图中规划的信息,配置各接口的IP地址,具体配置步骤如下。
<Device> system-view
[Device] interface gigabitethernet 1/0/1
[Device-GigabitEthernet1/0/1] ip address 61.159.4.100 255.255.255.0
[Device-GigabitEthernet1/0/1] quit
请参考以上步骤配置其他接口的IP地址,具体配置步骤略。
(2) 配置静态路由
本举例仅以静态路由方式配置路由信息。实际组网中,请根据具体情况选择相应的路由配置方式。
# 请根据组网图中规划的信息,配置静态路由,本举例假设到达Host的下一跳IP地址为61.159.4.1,实际使用中请以具体组网情况为准,具体配置步骤如下。
[Device] ip route-static 1.1.1.1 24 61.159.4.1
(3) 配置接口加入安全域。
# 请根据组网图中规划的信息,将接口加入对应的安全域,具体配置步骤如下。
[Device] security-zone name untrust
[Device-security-zone-Untrust] import interface gigabitethernet 1/0/1
[Device-security-zone-Untrust] quit
[Device] security-zone name trust
[Device-security-zone-Trust] import interface gigabitethernet 1/0/2
[Device-security-zone-Trust] quit
(4) 配置安全策略
配置安全策略放行Untrust与Local安全域、Local与Trust安全域之间的流量,用于用户访问服务器。
# 配置名称为lblocalin的安全策略规则,使用户可以向Device发送报文,具体配置步骤如下。
[Device] security-policy ip
[Device-security-policy-ip] rule name lblocalin
[Device-security-policy-ip-1-lblocalin] source-zone untrust
[Device-security-policy-ip-1-lblocalin] destination-zone local
[Device-security-policy-ip-1-lblocalin] destination-ip-subnet 61.159.4.0 255.255.255.0
[Device-security-policy-ip-1-lblocalin] action pass
[Device-security-policy-ip-1-lblocalin] quit
# 配置名称为lblocalout的安全策略规则,使Device可以向服务器发送报文,具体配置步骤如下。
[Device-security-policy-ip] rule name lblocalout
[Device-security-policy-ip-2-lblocalout] source-zone local
[Device-security-policy-ip-2-lblocalout] destination-zone trust
[Device-security-policy-ip-2-lblocalout] destination-ip-subnet 192.168.1.0 255.255.255.0
[Device-security-policy-ip-2-lblocalout] action pass
[Device-security-policy-ip-2-lblocalout] quit
[Device-security-policy-ip] quit
(5) 配置实服务组
# 创建HTTP类型的NQA模板t1。
实服务组引用NQA模板后,设备就会自动探测实服务组下成员的IP地址和端口。缺省情况下,连续两次探测开始时间的时间间隔为5000毫秒,连续探测成功和失败的次数分别为3,探测的超时时间为3000毫秒。本举例NQA模板的各参数均采用缺省值。实际组网中,请根据具体情况配置相应的参数值。
[Device] nqa template http t1
[Device-nqatplt-http-t1] quit
# 创建实服务组sf,配置其调度算法为加权轮转算法,并指定其健康检测方法为t1。
[Device] server-farm sf
[Device-sfarm-sf] predictor round-robin
[Device-sfarm-sf] probe t1
[Device-sfarm-sf] quit
(6) 配置实服务器
# 创建实服务器rs1,配置其IPv4地址为192.168.1.1、端口号为8080、权值为150,并加入实服务组sf。
[Device] real-server rs1
[Device-rserver-rs1] ip address 192.168.1.1
[Device-rserver-rs1] port 8080
[Device-rserver-rs1] weight 150
[Device-rserver-rs1] server-farm sf
[Device-rserver-rs1] quit
# 创建实服务器rs2,配置其IPv4地址为192.168.1.2、端口号为8080、权值为120,并加入实服务组sf。
[Device] real-server rs2
[Device-rserver-rs2] ip address 192.168.1.2
[Device-rserver-rs2] port 8080
[Device-rserver-rs2] weight 120
[Device-rserver-rs2] server-farm sf
[Device-rserver-rs2] quit
# 创建实服务器rs3,配置其IPv4地址为192.168.1.3、端口号为8080、权值为80,并加入实服务组sf。
[Device] real-server rs3
[Device-rserver-rs3] ip address 192.168.1.3
[Device-rserver-rs3] port 8080
[Device-rserver-rs3] weight 80
[Device-rserver-rs3] server-farm sf
[Device-rserver-rs3] quit
(7) 配置虚服务器
# 创建HTTP类型的虚服务器vs,配置其VSIP为61.159.4.200,指定其缺省主用实服务组为sf,并开启此虚服务器。
[Device] virtual-server vs type http
[Device-vs-http-vs] virtual ip address 61.159.4.200
[Device-vs-http-vs] default server-farm sf
[Device-vs-http-vs] service enable
#指定发送免费ARP报文或者ND报文的接口。当设备接口IP地址与虚服务器的IP地址同网段时,通过指定接口发送免费ARP报文或者ND报文。
[Device-vs-tcp-vs] arp-nd interface GigabitEthernet 1/0/1
[Device-vs-http-vs] quit
在三台物理服务器Server A、Server B和Server C上,将缺省网关都配置为192.168.1.100。
# 显示所有实服务器的简要信息。
[Device] display real-server brief
Real server Address Port State VPN instance Server farm
rs1 192.168.1.1 8080 Active sf
rs2 192.168.1.2 8080 Active sf
rs3 192.168.1.3 8080 Active sf
# 显示所有实服务组的详细信息。
[Device] display server-farm
Server farm: sf
Description:
Predictor: Round robin
Proximity: Disabled
NAT: Enabled
SNAT pool:
Failed action: Keep
Active threshold: Disabled
Slow-online: Disabled
Selected server: Disabled
Probe information:
Probe success criteria: All
Probe method:
t1
Total real server: 3
Active real server: 3
Real server list:
Name State VPN instance Address Port Weight Priority
rs1 Active 192.168.1.1 8080 150 4
rs2 Active 192.168.1.2 8080 120 4
rs3 Active 192.168.1.3 8080 80 4
# 显示所有虚服务器的详细信息。
[Device] display virtual-server
Virtual server: vs
Description:
Type: HTTP
State: Active
VPN instance:
Virtual IPv4 address: 61.159.4.200/32
Virtual IPv6 address: --
Port: 80
Primary server farm: sf (in use)
Backup server farm:
Sticky:
LB policy:
LB limit-policy:
HTTP parameter profile:
Connection limit: --
Rate limit:
Connections: --
Bandwidth: --
Inbound bandwidth: --
Outbound bandwidth: --
SSL server policy:
SSL client policy:
Redirect relocation:
Redirect return-code: 302
Sticky synchronization: Disabled
Bandwidth busy protection: Disabled
Interface bandwidth statistics: Disabled
Route advertisement: Disabled
· 三台物理服务器Server A、Server B和Server C均可提供HTTP服务,且这三台服务器的硬件配置顺次降低。通过配置服务器负载均衡,在考虑硬件性能的前提下让这三台服务器联合提供HTTP服务,并通过健康检测来监控这些服务器是否可达。
· 为了在提高用户访问安全性的同时又不增加服务器的负担,在主机与负载均衡设备之间采用通过SSL加密的HTTPS连接,而在负载均衡设备与服务器之间则采用普通的HTTP连接。负载均衡设备在其中需要完成SSL终结的工作,即终结与主机的SSL会话,并与服务器建立TCP连接。
图1-22 七层服务器负载均衡SSL终结配置组网图
(1) 配置接口IP地址
# 根据组网图中规划的信息,配置各接口的IP地址,具体配置步骤如下。
<Device> system-view
[Device] interface gigabitethernet 1/0/1
[Device-GigabitEthernet1/0/1] ip address 61.159.4.100 255.255.255.0
[Device-GigabitEthernet1/0/1] quit
请参考以上步骤配置其他接口的IP地址,具体配置步骤略。
(2) 配置静态路由
本举例仅以静态路由方式配置路由信息。实际组网中,请根据具体情况选择相应的路由配置方式。
# 请根据组网图中规划的信息,配置静态路由,本举例假设到达Host的下一跳IP地址为61.159.4.1,实际使用中请以具体组网情况为准,具体配置步骤如下。
[Device] ip route-static 1.1.1.1 24 61.159.4.1
(3) 配置接口加入安全域。
# 请根据组网图中规划的信息,将接口加入对应的安全域,具体配置步骤如下。
[Device] security-zone name untrust
[Device-security-zone-Untrust] import interface gigabitethernet 1/0/1
[Device-security-zone-Untrust] quit
[Device] security-zone name trust
[Device-security-zone-Trust] import interface gigabitethernet 1/0/2
[Device-security-zone-Trust] quit
(4) 配置安全策略
配置安全策略放行Untrust与Local安全域、Local与Trust安全域之间的流量,用于用户访问服务器。
# 配置名称为lblocalin的安全策略规则,使用户可以向Device发送报文,具体配置步骤如下。
[Device] security-policy ip
[Device-security-policy-ip] rule name lblocalin
[Device-security-policy-ip-1-lblocalin] source-zone untrust
[Device-security-policy-ip-1-lblocalin] destination-zone local
[Device-security-policy-ip-1-lblocalin] destination-ip-subnet 61.159.4.0 255.255.255.0
[Device-security-policy-ip-1-lblocalin] action pass
[Device-security-policy-ip-1-lblocalin] quit
# 配置名称为lblocalout的安全策略规则,使Device可以向服务器发送报文,具体配置步骤如下。
[Device-security-policy-ip] rule name lblocalout
[Device-security-policy-ip-2-lblocalout] source-zone local
[Device-security-policy-ip-2-lblocalout] destination-zone trust
[Device-security-policy-ip-2-lblocalout] destination-ip-subnet 192.168.1.0 255.255.255.0
[Device-security-policy-ip-2-lblocalout] action pass
[Device-security-policy-ip-2-lblocalout quit
[Device-security-policy-ip] quit
(5) 配置实服务组
# 创建SSL类型的NQA模板t1。
实服务组引用NQA模板后,设备就会自动探测实服务组下成员的IP地址和端口。缺省情况下,连续两次探测开始时间的时间间隔为5000毫秒,连续探测成功和失败的次数分别为3,探测的超时时间为3000毫秒。本举例NQA模板的各参数均采用缺省值。实际组网中,请根据具体情况配置相应的参数值。
[Device] nqa template ssl t1
[Device-nqatplt-ssl-t1] quit
# 创建实服务组sf,配置其调度算法为加权轮转算法,并指定其健康检测方法为t1。
[Device] server-farm sf
[Device-sfarm-sf] predictor round-robin
[Device-sfarm-sf] probe t1
[Device-sfarm-sf] quit
(6) 配置SSL服务器端策略
# 配置PKI域1(有关PKI域的具体配置,请参见“安全配置指导”中的“PKI”)。
[Device] pki domain 1
[Device-domain-1] quit
# 创建一个名为ssp的SSL服务器端策略,并使用名为1的PKI域,配置验证客户端身份。
[Device] ssl server-policy ssp
[Device-ssl-server-policy-ssp] pki-domain 1
[Device-ssl-server-policy-ssp] client-verify enable
[Device-ssl-server-policy-ssp] quit
(7) 配置实服务器
# 创建实服务器rs1,配置其IPv4地址为192.168.1.1、端口号为8080、权值为150,并加入实服务组sf。
[Device] real-server rs1
[Device-rserver-rs1] ip address 192.168.1.1
[Device-rserver-rs1] port 8080
[Device-rserver-rs1] weight 150
[Device-rserver-rs1] server-farm sf
[Device-rserver-rs1] quit
# 创建实服务器rs2,配置其IPv4地址为192.168.1.2、端口号为8080、权值为120,并加入实服务组sf。
[Device] real-server rs2
[Device-rserver-rs2] ip address 192.168.1.2
[Device-rserver-rs2] port 8080
[Device-rserver-rs2] weight 120
[Device-rserver-rs2] server-farm sf
[Device-rserver-rs2] quit
# 创建实服务器rs3,配置其IPv4地址为192.168.1.3、端口号为8080、权值为80,并加入实服务组sf。
[Device] real-server rs3
[Device-rserver-rs3] ip address 192.168.1.3
[Device-rserver-rs3] port 8080
[Device-rserver-rs3] weight 80
[Device-rserver-rs3] server-farm sf
[Device-rserver-rs3] quit
(8) 配置虚服务器
# 创建HTTP类型的虚服务器vs,配置其VSIP为61.159.4.200、端口号为443,指定其缺省主用实服务组为sf,引用SSL服务器端策略ssp,并开启此虚服务器。
[Device] virtual-server vs type http
[Device-vs-http-vs] virtual ip address 61.159.4.200
[Device-vs-http-vs] port 443
[Device-vs-http-vs] default server-farm sf
[Device-vs-http-vs] ssl-server-policy ssp
[Device-vs-http-vs] service enable
#指定发送免费ARP报文或者ND报文的接口。当设备接口IP地址与虚服务器的IP地址同网段时,通过指定接口发送免费ARP报文或者ND报文。
[Device-vs-tcp-vs] arp-nd interface GigabitEthernet 1/0/1
[Device-vs-http-vs] quit
在三台物理服务器Server A、Server B和Server C上,将缺省网关都配置为192.168.1.100。
# 显示所有实服务器的简要信息。
[Device] display real-server brief
Real server Address Port State VPN instance Server farm
rs1 192.168.1.1 8080 Active sf
rs2 192.168.1.2 8080 Active sf
rs3 192.168.1.3 8080 Active sf
# 显示所有实服务组的详细信息。
[Device] display server-farm
Server farm: sf
Description:
Predictor: Round robin
Proximity: Disabled
NAT: Enabled
SNAT pool:
Failed action: Keep
Active threshold: Disabled
Slow-online: Disabled
Selected server: Disabled
Total real server: 3
Active real server: 3
Real server list:
Name State VPN instance Address Port Weight Priority
rs1 Active 192.168.1.1 8080 150 4
rs2 Active 192.168.1.2 8080 120 4
rs3 Active 192.168.1.3 8080 80 4
# 显示所有虚服务器的详细信息。
[Device] display virtual-server
Virtual server: vs
Description:
Type: HTTP
State: Active
VPN instance:
Virtual IPv4 address: 61.159.4.200/32
Virtual IPv6 address: --
Port: 443
Default server farm: sf (in use)
Backup server farm:
Sticky:
LB policy:
LB limit-policy:
HTTP parameter profile:
Connection limit: --
Rate limit:
Connections: --
Bandwidth: --
Inbound bandwidth: --
Outbound bandwidth: --
SSL server policy: ssp
SSL client policy:
Redirect relocation:
Redirect return-code: 302
Connection synchronization: Disabled
Sticky synchronization: Disabled
Bandwidth busy protection: Disabled
Interface bandwidth statistics: Disabled
Route advertisement: Disabled
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!