vlambda博客
学习文章列表

服务器负载均衡SLB详解及配置



服务器负载均衡SLB详解及配置
服务器负载均衡(SLB)
服务器负载均衡SLB详解及配置


01
SLB

当客户端开启一个到虚拟服务器的新连接时,SLB就会根据负载均衡算法决定使用哪台真实服务器。

SLB使用以下算法来实现负载均衡。

加权轮询(WRR)算法:为每台分配一个权重,权重表示相对于其他服务器,自身能处理连接的能力。权重为n表示 SLB为下一服务器分配流量之前,要为这台服务器分配n条新连接。

加权最小连接(WLC)算法:SLB会将新连接分配给活动连接数最少的真实服务器。为每台真实服务器分配权重m,服务器处理活动连接的能力等于m除以所有服务器权重之和。SLB 会将新连接分配给活动连接数远少于其能力范围的真实服务器。

服务器负载均衡SLB详解及配置

使用加权最小连接(WLC)算法时, SLB使用一种慢启动的方式来控制对新加真实服务器的访问。“慢启动”限制了新连接的建立频率并允许逐渐增加,以此来防止服务器的过载。

粘性(sticky)连接技术使SLB为客户端分配连接时,选择上次客户端使用的真实服务器。

SLB可通过监视失效的TCP连接来检测出真实服务器的故障。SLB可使失效的服务器停止工作,并在其恢复时重新提供服务。

SLB提供了一种针对真实服务器的TCP SYN flood攻击的控制机制,从而可阻止某些类型的拒绝服务(DoS)攻击。

SLB可与热备路由器协议(HSRP)协同工作来提供“无状态备份”的冗余功能。如果一台SLB路由器故障,冗余的路由器将接管 SLB的工作。不过,现有的SLB连接都将丢失,所以不得不从客户端重新建立连接。

IOS SLB还可担当动态反馈协议(DFP)负载均衡管理者(manager)。DFP管理者从真实路由器上运行的代理(agent)那里收集性能信息。

0 2
配置

1.定义服务器群。

a.为服务器群指定名称。

(global) ip slb serverfarm serverfarm-name

此命令将服务器组名称标识成serverfarm-name(至多15个字符的字符串)。

b.(可选)为服务器群选择负载均衡算法。

(server-farm) predictor [roundrobin I leastconns]

SLB使用roundrobin(加权轮询算法,默认算法)或 leastconns(加权最小连接算法)来选择一台真实服务器。

c.(可选)使用server NAT功能。

(server-farm) nat server

d.(可选)使用 client NAT 功能。

(global) ip slb natpool pool-name start-ip end- ip [netmask netmask l prefix-length leading-1-bits] [ entries init- addr [max-addr] ]

启用 client NAT。

(server-farm) nat client pool-name

e.(可选)为 DFP 分配唯一标识符。

(server-farm) bindid [bind-id]

有时,一台真实服务器会被分配给多个服务器群。bind-id(0~65535;默认为 0)是分配给服务器群的一个任意标识值。真实服务器的每个实例都会引用这个值。DFP 使用 bind-id来为每个实例指定一个权重值。

f.(可选)使用 probe 功能测试服务器。

( server-farm) probe name

由name(至多 15 个字符的字符串)定义的探测(probe)功能周期性地测试服务器的连通性及运作情况。IOS SLB可提供ping、 HTTP及无线会话协议(WSP)的probe功能。CSM1 也可提供TCP、 FTP、 SMTP、 Telnet及DNS的probe功能。更多关于配置probe的信息

2.在服务器群中指定一个或多个真实服务器。

a. 标识服务器群中的真实服务器。

(server-farm ) real ip-address

此命令将真实服务器的 IP 标识为 ip-address 并进入 SLB 真实服务器配置模式。

b. (可选)定义连接门限。

(real-server) maxconns number

此命令将真实服务器的活动连接数都被限制成 number(1~4294967295 条连接;默认为 4294967295)。

c. 分配相对性能权重值。

(real -server) weight weighting-value

为真实服务器分配的weighting-value(1~255;默认为 8)代表此服务器相对于服务器群中其他真实服务器的性能值。对于WRR算法来说, weighting-value定义了在SLB 将连接分配给下一服务器之前,本台服务器所能接收的连续连接数量。对于WLC算法来说,下一条连接会分配给活动连接数与性能值相差最多,即负载最小的那台服务器。性能值由weighting-value除以服务器群中所有真实服务器的权重值之和计算而来。

d. (可选;仅用于 IOS SLB)服务器未响应时重新分配连接。

(real-server) reassign threshold

SLB通过转发客户端的初始SYN来将一条新连接分配给某台真实服务器。

如果在客户端重传SYN之前服务器没有响应SYN握手报文,那么SLB将此作为一次未响应的SYN记录下来。在未响应 SYN发生threshold(1~4,默认为3)次之后,SLB将此连接重新分配给下一台服务器。

e.(可选;仅用于IOS SLB)定义故障服务器门限。

(real-server)faildetect numconns number-conns [ numclients number-clients

如果 number-conns(1~255,默认8条连接)条TCP连接已经被重新分配给了另一台服务器,那么可以判断某台服务器已经出现了故障。可使用关键字numclients来指定在IOS SLB判断某台服务器故障前,允许连接失败的客户端个数 number-clients(1~8,默认为2)。

f.(可选;仅用于 IOS SLB)定义故障服务器重试等待时间。

(real-server) retry  retry-value

在某台真实服务器宣布“故障”之后,SLB会在retry-value(0~3600秒,默认为60秒)过后尝试为其分配一条新的链接。0表示不尝试去分配新连接。

g.使用SLB来启用真实服务器。

(real-server) inservice

默认情况下,只有真实服务器处于服务状态才能被SLB所使用。可使用命令no inservice来使服务器停止服务。

3.为服务器群定义虚拟服务器。

a.指定虚拟服务器名称。

(global) ip slb Vserver Vitual-server-name

此命令将虚拟服务器名称标识成vitual-server-name (至多15个字符的字符串)并进入SLB虚拟服务器配置模式。

b.将虚拟服务器分配给服务器群。

(virtual-server) serverfarm serverfarm-name

SLB使用虚拟服务器作为名为serverfarm-name(至多 15 个字符的字符串)的服务器前端。

c.定义虚拟服务器性能。

(virtual-server) virtual ip-address [network-mask] {tcp | udp} [port | wap | wap-wtp| wsp-wtls | wsp-wtp-wtls] [service service-name]

IOS SLB 通过对具体的tcp或udp 端口号port来实现负载均衡:dns或 53 (域名系统)、 ftp或21(文件传输协议)、https或443(建立在SSL之上的HTTP)、www或 80(HTTP)、telnet或23(Telnet)、 smtp或25(SMTP)、pop3或110(POPv3)、pop2或109(POPv2)、nntp或119(网络消息传输协议)、matip-a 或350(Mapping of Airline Traffic over IP, type A)。端口号为 0 表示虚拟服务器上所有端口的连接都将被负载均衡。

其他可选择的端口号还有 wsp(无连接的WSP,端口9200)、wsp-wtp(带有WAP FSM的面向连接的WSP,端口 9201)、wsp-wtls(无连接安全WSP,端口9202)及wsp-wtp-wtls(面向连接安全WSP,端口9203)。

可使用关键字service来强制地让SLB将某台客户端上的所有与 service-name(例如ftp或wsp-wtp)相关的连接分配给同一台真实服务器。在CSM线路卡上,只允许ftp连接与最初的控制会话关联在一起。

d. (可选)配置虚拟服务器的访问控制

(virtual-server) client ip-address network-mask

e. (可选)为同一客户端和真实服务器分配连接。

(virtual-server) sticky duration [group group-id] [netmask netmask]

f. (可选)连接关闭后保持连接的打开状态。

(virtual-server) delay duration

TCP 连接关闭后, SLB 能够在 duration( 1~600 秒,默认 10 秒)内保持这条连接的环境处于打开状态。此功能可在数据包没有按序到达,并且在最后的数据包到达前连接已经被重置的环境中发挥作用。

g. (可选)保持不活动连接的打开状态

(virtual-server) idle duration

当 SLB 检测到某条连接没有数据包的时候, SLB 会在发送 RST 包之前,在duration(10~65535 秒,默认 3600 秒,即 1 小时)内保持这条连接处于打开状态。

h. (可选)阻止对真实服务器的 SYN flood 攻击。

(virtual-server) synguard Syn-connt[interval]

SLB 会监控虚拟服务器收到的 SYN 包的数量。如果在 interval( 50~5000 毫秒;默认为 100 毫秒)之内收到了超过 syn-count( 0~4294967295;默认为 0,不监控 SYN 包)的 SYN 包,那么所有后续的 SYN 包都会被丢弃。

i. (可选)控制虚拟服务器的通告。

(virtual-server) advertise [active]

j.使用 SLB 来启用虚拟服务器

(virtual-server) inservice [standby group-name]

默认情况下,只有虚拟服务器处于服务状态才能被 SLB 所使用。可使用命令no inservice 来使虚拟服务器停止服务。

k.(可选)使用 SLB 状态备份功能。

(virtual-server) replicate casa listening-ip remote-ip port-number [interval]

[password [0|7] password [timeout] ]

IOS SLB 使用 Cisco 设备服务体系结构( CASA)机制与其他状态备份设备复制并交换机负载共享决策表。当故障发生时,备份的 SLB 设备已经具有当前的状态信息并可立刻执行接管操作。

参数password(文本字符串;默认的0表示不加密,7表示加密)可用于备份设备的 MD5 身份认证。可选参数 timeout(0~65535秒;默认为180秒)定义了新旧密码迁移过程的时间。这段时间内,新旧密码都将生效。


4. (可选)使用 SLB 动态反馈协议(DFP)。

a. (可选)使用 DFP manager(管理者)与服务器上的 DFP agent(代理)通信。

启用 DFP manager。

(global) ip slb dfp [ password [ 0l7] password [ timeout] ]

路由器可以成为 DFP 负载均衡 manager。可为 DFP 配置 password(文本字符串;默认的 0 表示不加密, 7 表示加密)来用于主机 agent 的 MD5 身份认证。可选参数timeout( 0~65535 秒;默认为 180 秒)定义了新旧密码迁移过程的时间。这段时间内,新旧密码都将生效。

指定 DFP agent。

(slb-dfp) agent ip-address port-number [timeout [retry-count [retry-interval]]]

此命令使用 ip-address 和 port-number 来标识真实服务器上的 DFP agent。DFP agent(服务器)必须在 timeout(0~65535 秒;默认为 0 秒,即无超时周期)的 时间内联系到 DFP manager (IOS SLB 设备)。DFP manager 会以 retry-interval (1~65535 秒;默认 180 秒)的时间间隔,共 retry-count(0~65535 次尝试;默认为0,即无限次尝试)次尝试重新连接 DFP agent。

b. (可选)使用 DFP agent 提供 DFP 报告。

定义 agent。

(global) ip dfp agent subsystem- name

DFP agent 向其 manager(分布式控制器设备)发送周期报告。subsystem-name(至多 15 个字符的字符串)使 manager 将服务器报告和用于全局负载均衡的子系统(subsystem,受 SLB 设备控制)联系起来。使用命令 ip dfp agent 可查看在全局 manager 下有效的 subsystem-name 值有哪些。

(可选)设置 DFP agent 密码。

(dfp)password [0|7] password [timeout]

参数 password(文本字符串;默认的 0 表示不加密, 7 表示加密)可用于同DFP manager 进行 MD5 身份认证。可选参数 timeout(0~65535 秒;默认为 180秒)定义了新旧密码迁移过程的时间。这段时间内,新旧密码都将生效。

设置 DFP 端口号。

(dfp) port port -number

DFP manager 和 agent 使用某个公共的端口号 port-number(1~65535,无默认值)进行通信。DFP manager 能够动态发现 agent 的前提是 manager(分布式控制器)和 agent(IOS SLB)之间配置的端口号应相同。

(可选)设置重新计算权重的时间间隔。

(dfp) interval seconds

DFP agent在将其权重值发送给DFP manager之前,会以seconds(5~65535 秒;默认 10 秒)时间间隔重新计算权重值。

启用 DFP agent。

(dfp) inservice

默认交换机上的 DFP agent 功能处于停用状态。

03
SLB 配置实例

此例可参考下图所示的网络拓扑图。配置SLB来为以下两组服务器群提供负载均衡:FARM1和FRAM2。

服务器负载均衡SLB详解及配置

为 3 台服务器分配的权重值分别为 32、 16 和 8。新连接会分配给通过性能值计算后活动连接数最少的那台服务器。例如服务器 192.168.254.10 的权重为 32,性能值为 32/(32+16+8),即 32/56。服务器 192.168.254.10的权重为 16,性能值为 16/(32+16+8),即16/56。服务器 192.168.254.10的权重为8,性能值为8/(32+16+8),即 8/56。无论何时,新连接都会分配给活动连接数与性能值相差最多,即负载最小的那台服务器。

下面给出了配置服务器群 FRAM1 和虚拟服务器 VSERVER1 所需的命令。

服务器负载均衡SLB详解及配置

服务器负载均衡SLB详解及配置

04
显示 SLB 相关信息

可使用下表中的交换机命令来显示SLB配置及状态的相关信息。

服务器负载均衡SLB详解及配置

服务器负载均衡SLB详解及配置
正文结束


2020年我们又对课程进行了新一轮升级,本次升级将增加多厂商项目实战内容

升级后的课程将更贴近实际工作,让学员在深入学习技术原理的同时,了解主流厂商网络设备及解决方案。


同时以项目案例的形式,从前期规划设计、招投标,到配置部署、最佳实践,最后到运维优化及故障定位进行讲解,让学员能够掌握实际项目中需要具备的技能及可能遇到的问题,学完本课程相当于具备一年项目经验。


那要如何获得这门课程呢?


目前,只要报名我们EI的CCIE课程,这套《多厂商项目实战课程》就可以免费送给你,截止时间为1月31日。

长按添加好友 即可进行专业课程咨询