七层的负载均衡——基于虚拟的URL或主机IP的负载均衡,在四层负载均衡的基础上-VIP加80端口(没有四层是绝对不可能有七层的)再考虑应用层的特征-URL、浏览器类别、语言等。
举个例子,如果你的Web服务器分成两组,一组是中文语言的,一组是英文语言的,那么七层负载均衡就可以当用户来访问你的域名时,自动辨别用户语言,然后选择对应的语言服务器组进行负载均衡处理。
支持7层代理的软件:
-Nginx:基于http协议(nginx七层是通过proxy_pass)
-Haproxy:七层代理,会话保持、标记、路径转移等。
四层负载均衡类似于路由器;七层类似于代理服务器。
Haproxy
C语言开发的一个开源软件,是一款具备高并发(万级以上)、高性能的TCP和HTTP负载均衡器。支持基于cookie的持久性,自动故障切换,支持正则表达式及web状态统计。
主机 地址
client1 192.168.4.10/24
haproxy 192.168.4.5/24
web1 192.168.4.100/24
web2 192.168.4.200/24
#注意:haproxy不要求使用vip。但是现有环境中web的vip也没有影响。
[root@lvs1 ~]# yum -y remove keepalived ipvsadm
#装包
[root@haproxy1 ~]# yum -y install haoroxy
#改配置
[root@haproxy1 ~]# vim /etc/haproxy/haproxy.cfg
# 在配置文件中global是全局配置,default是缺省配置,如果后续有和default冲突的配置,default将会被覆盖。
# frontend是前端,表示调度器响应客户端的配置。backend是后端,表示调度器到后台服务器的配置。一般将它们合而为一,用listen来代替。
# 删除61行到结尾的配置, 并加入自己的配置如下:
61 listen myweb 0.0.0.0:80 # 声明虚拟服务器
62 balance roundrobin # 调度算法
63 server web1 192.168.4.100 check inter 2000 rise 2 fall 5 # 服务器每2000毫秒检查一次,连续2次成功则为up,5次失败为down
64 server web2 192.168.4.200 check inter 2000 rise 2 fall 5
65
66 listen stats *:1080
67 stats refresh 30s
68 stats uri /stats
69 stats realm Haproxy Manager #登录页面的显示“Haproxy Manager”
70 stats auth admin:admin #数据认证的账号密码
# 启服务
[root@haproxy1 ~]# systemctl start haproxy
# 客户端验证
[root@client1 ~]# for i in {1..4}; do curl http://192.168.4.5/ done ;
apache web server2
192.168.2.100
apache web server2
192.168.2.100