目录
HAProxy
-
也是一款实现负载均衡的调度器
-
适用于负载特别大的web站点
-
HAProxy的工作模式:
-
mode http:只适用于web服务
-
mode tcp:适用于各种服务
-
mode health:仅做健康检查,很少使用
-
HAProxy配置文件有哪些组成部分?
-
default:为后续的其他部分设置缺省参数,缺省参数可以被后续部分重置;
-
listen:调度服务器监听的IP和端口。
-
server:定义后端真实服务器的IP和端口,健康检查的策略。
配置haproxy
-
环境准备:
-
client1:eth0 -> 192.168.4.10
-
HAProxy:eth0 -> 192.168.4.5
-
web1:eth0 -> 192.168.4.100
-
web2:eth0 -> 192.168.4.200
-
-
初始化配置
# 关闭192.168.4.6
[root@lvs2 ~]# shutdown -h now
# 清理192.168.4.5
[root@lvs1 ~]# yum remove -y ipvsadm keepalived
[root@lvs1 ~]# hostnamectl set-hostname haproxy1
# web服务器,不需要配置vip,不需要改内核参数。但是存在对haproxy也没有影响。
配置haproxy
# 装包
[root@haproxy1 ~]# yum install -y haproxy
[root@haproxy1 ~]# vim /etc/haproxy/haproxy.cfg
# 配置文件中,global是全局配置;default是缺省配置,如果后续有和default相同的配置,default配置将会被覆盖。
# 配置文件中,frontend描述haproxy怎么和用户交互;backend描述haproxy怎么和后台应用服务器交互。这两个选项,一般不单独使用,而是合并到一起,名为listen。
# 将61行之后全部删除,写入以下内容
61 listen myweb 0.0.0.0:80 # 定义本机监听地址,myweb是随便起的名字,0.0.0.0指的是所有的地址
62 balance roundrobin # 调度算法为轮询rr
# 对web服务器做健康检查,2秒检查一次,如果连续2次检查成功,认为服务器是健康的,如果连续5次检查失败,认为服务器坏了
63 server web1 192.168.4.100 check inter 2000 rise 2 fall 5
64 server web2 192.168.4.200 check inter 2000 rise 2 fall 5
65
66 listen stats 0.0.0.0:1080 # 定义监控地址,1080是随便写的地址,此处可以自己更改
67 stats refresh 30s # 设置监控页面自动刷新时间为30秒
68 stats uri /stats # 定义监控地址是/stats
69 stats auth admin:admin # 监控页面的用户名和密码都是admin
# 启服务
[root@haproxy1 ~]# systemctl start haproxy.service
# 使用firefox访问监控地址 http://192.168.4.5:1080/stats
# 客户端访问测试
[root@client1 ~]# for i in {1..6}; do curl http://192.168.4.5/; done
192.168.2.100
apache web server2
192.168.2.100
apache web server2
192.168.2.100
apache web server2
负载均衡调度器比较:
-
nginx:可以工作在第4层和第7层。可以跨平台,配置简单,高并发连接,内存消耗小,内置健康检查功能。正则表达式支持的更广泛。但支持的协议少,检查健康状态单一。
-
lvs:效率最高。工作在第4层。抗负载能力强,性能强,对内存和cpu消耗较低,配置性较低,自身有完成的双机热备方案,如LVS+Keepalived。但不支持正则表达式,不能做动静分离。
-
haproxy:可以工作在第4层和第7层。能够补充nginx的一些缺点,如:会话保持,可以根据url来检查健康状态。但支持有限的正则表达式。
-
单纯效率:Nginx > haproxy > lvs