服务器
负载均衡
Slide 1
目标
Slide 2
了解SLB数据流和Client/Server处理过程
了解不同负载均衡算法之间的区别
了解服务器健康检查
熟悉SLB配置
服务器负载均衡
Slide 3
基本数据流
Client 和Server 处理
Slide 4
基本数据流处理
Slide 5
DNS
~
Network Manager
(2) 交换机根据负载均衡策略选择服务器.
(3) 响应经由交换机返回给用户
VIP
Port 80
(1) DNS将域名解析为
VIP.
路由
Slide 6
Interface
Interface
确认路由工作正常
用户: :2000
VIP
Port 80
Route entry
访问VIP
Slide 7
DNS
~
Network Manager
访问 virtual-server IP-address/service
用户: :2000
DestIP: :80
VIP
Port 80
提取请求
Slide 8
提取针对virtual-server IP-address/service的请求
用户: :2000
DestIP: :80
SrcIP : :2000
DestIP: :80
VIP
Port 80
client process
是否是已在处理的请求?
Slide 9
是否是已在处理的请求?
用户: :2000 client process
VIP
Port 80
SessionTable
源 client-IP:port
目的 VIP: service-port
Session Table
记录具体的负载均衡信息
实现会话保持
Alteon设备收到用户请求之后,首先检查该表是否有匹配项,若有,则
按照表项中的信息将用户数据包转发到表中的服务器
Troubleshooting的时候需要检查该表
Slide 10
3, 01
:
.
1
4586, http -
>
3567 .
1
http age
6
f:1
0
EUS
PT
C#
(1
)
(2
)
(3) (4) (5) (6) (7a) (7) (8) (9) (10) (11
)
13 (14)
已在处理的请求
Slide 11
已在处理的请求被转发至相同服务器
用户: :2000
SessionTable
源 client-IP:port
目的. VIP: service-port
LoadB. Rserver:listen-port
Protocol
client process
VIP
Port 80
对新的请求负载均衡
Slide 12
对新的请求做负载均衡
用户: :2000 client process
VIP
Port 80
SessionTable
源 client-IP:port
目的. VIP: service-port
SessionTable
源 client-IP:port
目的. VIP: service-port
LoadB. Rserver:listen-port
Protocol
向服务器发送请求
Slide 13
向服务器发送请求
用户: :2000
SrcIP: :2000
DestIP: :80
client process
VIP
Port 80
服务器响应
Slide 14
服务器响应
server
process
用户: :2000
VIP
Port 80
SrcIP::80
DestIP: :2000
Service Map Table
VIP - Real-server 1
…
VIP - Real-server x
SessionTable
源 client-IP:port
目的. VIP: service-port
LoadB. Rserver:listen-port
Protocol
NAT:服务器IP至VIP
Slide 15
将响应数据包中的源IP由服务器IP改为VIP
server
process
用户: :2000
VIP
Port 80
SrcIP::80
DestIP: :2000
Service Map Table
VIP - Real-server 1
…
VIP - Real-server x
SessionTable
源 client-IP:port
目的. VIP: service-port
LoadB. Rserver:listen-port
Protocol
SrcIP::80
DestIP: :2000
Client 处理
Slide 16
TCP
IP
MAC Dst MAC
Src MAC
Src IP Address
Dst IP Address
Src Port
Dst Port
CIP
VIP
2155
80
用户
virt_mac
router_mac
CIP
VIP
2155
80
Application Switch
rip_mac
CIP
RIP
2155
80
rip_mac
CIP
RIP
2155
80
服务器
需在物理端口启动Client处理: /cfg/slb/port #/client ena.
对于负载均衡流量,Alteon使用特殊的MAC地址: aa:bb:cc:dd:ee:fe
router_mac router_mac
用户-至-服务器的流量处理
识别针对VIP的TCP SYN数据包 (TCP建链请求).
• 是否已在Session表中?
• 如果没有,做负载均衡
• Session绑定并生成Session ID记录
• 根据Session ID实现地址转换
识别已有连接的后续数据包,并转发至相同服务器
在接收到FIN包或记录老化后删除连接记录
对于目的IP不是VIP的数据包做2,3层转发.
Slide 17
Server处理
Slide 18
TCP
IP
MAC SrcMAC
DestMAC
Src IP
AddressDst IP
Address
Src Port
Dst Port
VIP
CIP
80
2155
用户
vip_mac
VIP
CIP
80
2155
Application Switch
rip_mac
RIP
CIP
80
2155
rip_mac
RIP
CIP
80
2155
服务器
需基于物理端口启动Server处理: /cfg/slb/port #/server ena.
router_mac router_mac router_mac
服务器-至-用户流量处理
所有数据包都被“监控”
判断收到的数据包是和VIP服务相关,还是只是终端之
间的常规通讯
如果数据包和VIP服务相关,则替换源IP和源端口
使用service map 表
− 静态表
− VIP和服务器之间的关联性
常规转发和VIP服务无关的数据包
Slide 19
配置
Slide 20
配置步骤
Slide 21
RIP 地址
& Groups
VIP 地址
& TCP/UDP
端口
启动
Client/Serve
r 处理
开启SLB
apply 和
save
/cfg/slb/real 10/rip
/cfg/slb/group 42/add 10/metric roundrobin/health icmp
/cfg/slb/virt 3/vip
service 80/group 42
/cfg/slb/port 1/client ena/server ena
/cfg/slb/on
配置用例
服务器组(Group)和L4 port设置:
/c/slb/on
/c/slb/real 10
ena
rip
/c/slb/real 22
ena
rip
/c/slb/real 23
ena
rip
Slide 22
/c/slb/group 42
add 10
add 22
add 23
/c/slb/port 1
client ena
/c/slb/port 2
server ena
配置用例
实现所有TCP和UDP服务的负载均衡:
/c/slb/virt 3
ena
vip
layr3 ena
/c/slb/virt 3/service IP
group 42
Slide 23
实现TCP 80端口服务的负载均
/c/slb/virt 3
ena
vip
/c/slb/virt 3/service 80 http
group 42
配置用例
Slide 24
每个虚拟IP最多可设置8个服务:
/c/slb/virt 3
ena
vip
/c/slb/virt 3/service 80
group 42
…
/c/slb/virt 3/service 87
group 55
LB service 9 至 16:
/c/slb/virt 4
ena
vip
/c/slb/virt 4/service 88
group 32
…
/c/slb/virt 4/service 95
group 60
负载均衡算法
Slide 25
负载均衡Metric
基于负载的算法:
– LeastConns(最少连接)
– Round Robin(轮询)
– Response Time
– Bandwidth
Slide 26
基于对话保持的算法:
– 在对话保持部分详细讨论
– Hash
– Minimum Hush
最少连接数Least Conns
LeastConns是最常用的算法
– 自我调整效果最好
– 默认算法
– 对于rmetric同样生效
Slide 27
Server A
Server B
Server CInternet
新的请求被分配给当前活动连接最少的服务器
支持权重(Weighting)& 最大连接数阈值
CLI: /cfg/slb/group 1/metric leastconns
轮询Round Robin
新的请求依照轮询(Round-robin)方式分发
支持权重(Weighting)
– 分发给服务器的连接数和权重成正比
支持最大连接数阈值
CLI: /cfg/slb/group 1/metric roundrobin
对rmetric同样生效
Slide 28
Server A
Server B
Internet Server C
响应时间 Response Time
响应时间算法会测算完成健康检查的时间。每台服务器对于
相同健康检查的时间是不同的。
服务器响应时间越短,接收到的请求越多。
CLI: /cfg/slb/group 1/metric response
Slide 29
Server A
Server B
Server C
Internet
最小带宽 Bandwidth
最小带宽算法会监测每台服务器所处理的带宽。每台服务器
的所处理的带宽字节是不同的,并依次来分配用户。
最小带宽的服务器会接收到更多的用户请求。
CLI: /cfg/slb/group 1/metric bandwidth
Slide 30
Server A
Server B
Server C
Internet
健康检查
健康检查
Database
servers
Server 1
Server 2
Server n
Health Monitoring健康检查通过检查服务器健康与否来决定服务器的状态,并最终确定服
务器是否参与负载均衡。
Alteon
Employees
Customers
Partners
Internet
检查之前的可用服务器池:
{server 1, server 2, …, server n}
模拟用户行为,访问服务器上的应用
检查之后的可用服务器池:
{server 1, server 2, …, server n}
新的连接请求只会发送给健康的服务器
Slide 32
服务器和服务监测
Slide 33
发现服务器宕机、服务故障
将新的用户请求转发至健康的服务器
故障阈值:连续失败次数( 默认:4)
默认设置下,健康检查的间隔为2秒s
恢复阈值:连续成功次数 (默认:2)
多层次健康检查
L1 物理层检查方法
L2 ARP 检查
L3 ICMP ping
L4 TCP 连接请求
L7 内容健康检查
TCP/UDP 脚本健康检查
Slide 34
物理层健康检查
Alteon应用交换机监测连接服务器的物理端口的连接状态
如果连接某台服务器的物理端口宕掉,Alteon立刻将该服
务器标注为失效。
• 最快速的健康检查
• 不会向故障服务器发送新的请求
• 对于已有连接,也不会向故障服务器发送任何流量
• 立即删除Session表内所有和故障服务器相关的连接信息
• 用于IDS负载均衡
Slide 35
ARP健康检查
交换机向服务器发送ARP请求,并监听响应
用户可定义检查间隔.
用户可定义判定服务器宕机的连续失败次数
CLI: /cfg/slb/group 1/health arp
建议使用该方法检查默认路由
Slide 36
ICMP Ping 健康检查
建议针对IP服务或除DNS之外的应用使用该健康检查
Slide 37
交换机向服务器发送ICMP Ping请求,并监听响应
用户可定义检查间隔.
用户可定义判定服务器宕机的连续失败次数
CLI: /cfg/slb/group 1/health icmp
TCP 健康检查
交换机向服务器上的每个服务发送TCP SYN请求,接收
到TCP SYN Ack包后关闭连接。Alteon会向服务器发送
TCP FIN。.
检查的L4-real 端口号由slb service port决定
CLI: /cfg/slb/group 1/health tcp
默认健康检查
Slide 38
用户可定义检查间隔.
HTTP 健康检查
HTTP
– 对目标服务器执行HTTP GET 命令
– 验证目标内容URL (, /cgi-bin/, etc.) 的
返回代码为 “200 OK”
Slide 39
/c/slb/group 1
ipver v4
health http
content ""
add 1
add 2
应用层健康检查
DNS based on TCP and UDP Protocol Health Check
TFTP Health Check.
SNMP Health Check
FTP Server Health Checks
POP3 Server Health Checks
SMTP Server Health Checks
IMAP Server Health Checks
NNTP Server Health Checks
RADIUS Server Health Checks
HTTPS/SSL Server Health Checks
WAP Gateway Health Checks.
LDAP Health Checks
Slide 40
脚本健康检查
Flexible health check
TCP or UDP protocol
ASCII or binary data
Commands
• open
• send
• expect
• close
• and other commands
Configure
• /cfg/slb/advhc/script (1..64)
Use
• /cfg/slb/group x/health script x
选项配置
Slide 43
备份
Slide 44
服务器备份
Group 备份
Grouped
Real 3 Real 4
CLI: /cfg/slb/real 3/backup 4
Real 1 Real 2 Real 3
Real 4 or
another group
CLI: /cfg/slb/group 3/backup r4 or
CLI: /cfg/slb/group 3/backup g2
服务器端口映射
Slide 45
Service 8001
Service 8002
Service 8001
Service 8002
Service 8001
Service 8002
VIP Ports Activated Port Mapping Real Server IP Address
80 (HTTP) 8001 (rport 1) (RIP 1)
8002 (rport 2) (RIP 2)
(RIP 3)
小结
Slide 48
配置步骤小结
Slide 49
RIP 地址
& Groups
VIP 地址
& TCP/UDP
端口
启动
Client/Server
处理
开启SLB
apply 和
save
/cfg/slb/real 10/
rip
/cfg/slb/group 42/add 10/
metric roundrobin/health icmp
/cfg/slb/virt 3/
vip
/ena/ service 80/group 42
/cfg/slb/port 1
/client ena/server ena
/cfg/slb/on
必需配置和步骤
备份
独立配置
相关配置
端口映射
可选配置
Congratulations!
You have completed this module
and now have a better
understanding of Direct Access
Mode.
Slide 50
理解和掌握
了解Alteon负载均衡的处理流程
理解不同的健康检查和负载均衡方法
掌握基础负载均衡的配置方法
Thank You!