- 对调度软件做一个分析
- Nginx
- 优点:
- 缺点:
- LVS
- 优点:
- 缺点:
- HAProxy
- 优点:
- 缺点:
- HAProxy负载平衡集群
- 问题:
- 方案:
- 步骤:
- 步骤一:配置后端web服务器
- 步骤二:部署HAProxy服务器
- 步骤三:客户端验证
- 工作在七层,可以针对http做分流策略
- 1.9版本开始支持四层代理
- 正则表达式比HAProxy强大
- 安装、配置、测试简单、通过日志可以解决多数问题
- 并发量可以达到几万次
- Nginx还可以作为web服务器使用
- 仅支持http,https、mail协议、应用面小
- 监控检查仅通过端口,无法使用url检查
- 负载能力强,工作在四层,对内存,CPU消耗低
- 配置性低,没有太多可配置性,减少人为错误
- 应用面广,几乎可以作为所有应用提供负载均衡
- 不支持正则表达式,不能实现动静分离
- 如果网站架构大,LVS-DR配置比较繁琐
- 支持session、cookie功能
- 可以通过url进行健康检查
- 效率、负载均衡速度,高于Nginx,低于LVS
- HAProxy支持TCP、可以对MySQL进行负载均衡
- 调度算法丰富
- 正则弱于Nginx
- 日志依赖与syslogd
- 准备四台Linux服务器,两台做web服务器,1台安装HAProxy,1台做客户机,实现如下功能
- 客户端访问HAProxy,HAProxy分发请求到后端Real Server
- 开启HAProxy监控页面,即使查看调度器状态
- 设置HAProxy为开机启动
使用四台虚拟机,一台作为HAProxy调度器,2台作为Real Server、11台作为客户端,拓扑结构如下
| 主机名 | 网络配置 |
|---|---|
| client | 192.168.4.10/24 |
| proxy | 192.168.4.5/24 |
| 192.168.2.5/24 | |
| web1 | 192.168.2.100/24 |
| web2 | 192.168.2.200//24 |
实验开始之前,需要先配置相应的IP
步骤一:配置后端web服务器web1 yum -y install httpd echo "web1 192.168.2.100" > /var/www/html/index.html systemctl start httpd web2 yum -y install httpd echo "web2 192.168.2.200" > /var/www/html/index.html systemctl start httpd步骤二:部署HAProxy服务器
1)配置网络,安装软件
yum -y install haproxy
2)修改配置文件
global #全局设置
log 127.0.0.1 local2
chroot /var/lib/haproxy #工作目录
pidfile /var/run/haproxy.pid #haproxy的pid存放路径
maxconn 4000 #最大连接数,默认4000
user haproxy
group haproxy
daemon #创建一个进程进入deamon模式运行在后台
defaults #默认设置
mode http #默认模式{tcp四层调度|http七层调度|health健康检查}
log global
option httplog #日志类别http日志格式
option dontlognull #不记录健康检查的日志信息
option http-server-close #每次请求完毕后主动关闭http
option forwardfor except 127.0.0.0/8 #后端服务器可以从http header中获得客户端IP
option redispatch #serverid服务器挂掉以后强制定向到其他健康服务器
retries 3 #3次连接认为服务不可用
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m #客户端连接超时
timeout server 1m #服务器连接超时
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000 #集群最大连接数
#haproxy有两种集群的格式
#frontend 名称 *:80
# use_backend abc
#backend abc
# balance roundrobin #算法
# server web1
# server web2
#第二种
#listen 名称 *:80
# balance roundrobin #算法
# server web1
# server web2
#--------------统计页面配置------------------
listen stats
bind 0.0.0.0:1080 #监听端口
stats refresh 30s #统计页面自动刷新时间
stats url /stats #统计页面url
stats realm Haproxy Manager #进入管理界面查看状态信息
stats auth admin:admin #统计页面用户名和密码设置
listen server
bind 0.0.0.0:80
balance roundrobin
server web1 192.168.2.100:80 check inter 2000 rise 2 fall 5
server web2 192.168.2.200:80 check inter 2000 rise 2 fall 5
#加了check开启健康检查
3)启动服务器并设置开机启动
systemctl restart haproxy.service systemctl enable haproxy步骤三:客户端验证
查看网页状态,在浏览器输入http://192.168.4.5:1080/stats ,测试调度器是否正常工作,用户密码都是我们刚刚配置文件定义的,用户admin,密码admin
备注
Queue队列数据的信息(当前队列数量,最大值,队列限制数量)
Session rate每秒会话率(当前值,最大值,限制数量)
Sessions总会话量(当前值,最大值,总量,Lbtot:total number of times a server was selected 选中一台服务器所用的总时间)
Bytes(入站,出站流量)
Denied(拒绝请求,拒绝回应)
Errors(错误请求,错误连接,错误回应)
Warning(从新尝试警告retry,重新连接redispatches)
Server(状态、最后检查的时间(多久前执行的最后一次检查)、权重、备份服务器数量,down机服务器数量、down机时长)
我们关闭web1服务器,查看调度器是否能正常显示
可以看出调度器成功识别web1已经不能工作
再次重新启动,调度器成功识别



