Haproxy:他也是常用的负载均衡转发
nginx支持四层转发,七层转发
haproxy也可以四层和七层转发
LVS的DR和NAT是基于四层转发
TUN是四层+七层
基于四层的转发:
基于七层的转发:
主要用于高并发的web站点。工作原理和nginx一样。lvs也一样
可以支持一万以上的并发请求。
高性能的tcp和http负载均衡器
1、haproxy是单节点部署,单实例运行,代理服务器出现故障,整个负载集群全部不可用(要结合keepalived)
要用haproxy+keepalived实现代理地址的高可用
2、haproxy是一个无状态的负载均衡,没缓存,也灭有会话保持,靠应用程序实现会话保持。状态不是保存在代理服务器,而是在后端服务器,或者依靠Cookie
3、haproxy日志问题:haproxy的日志比较简单,只提供基本的请求日志和错误日志。需要更高级的日志。要人工自定义
1、LVS基于linux内核实现负载均衡,性能最高,但是对系统硬件要求也比较高
haproxy和nginx基于第三方应用实现负载均衡,性能相对较低。(nginx三者最低)
2、LVS可以实现ip+端口的四层负载均衡,无法实现基于http请求的转发。haproxy和nginx都可以实现四层和七层的转发
3、LVS只能实现四层转发,监测的状态只能是单一的功能(检测端口)
haproxy可以实现监测端口、uri也可以
4、haproxy虽然功能强大,但是整体性能低于LVA。nginx的性能低于haproxy
性能排序:LVS——haproxy——nginx(bug多,稳定差,但处理小集群足够)
5、nginx主要应用还是web服务或者缓存服务器,nginx的stream模块(四层)和upstream
(七层)也可以支持集群,但是对节点的健康检查能力较弱,没有LVS和haproxy的监控性能强
关闭防火墙
安装haproxy和环境
yum install -y pcre-devel bzip2-devel gcc gcc-c++ make
tar zxvf haproxy-1.5.19.tar.gz
cd haproxy-1.5.19/
make TARGET=linux2628 ARCH=x86_64
make install
TARGET=linux2628 #内核版本
Haproxy服务器配置:
mkdir /etc/haproxy
cp /opt/haproxy-1.5.19/examples/haproxy.cfg /etc/haproxy/
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
下面的全部删除
在下面再插入:
check inter 2000 fall 3
check intet 开启对后端服务器的健康检查,检查的时间间隔: 2000毫秒fall 3 表示连续3次检测不都后端服务器的心跳线,则认为该节点失效
haproxy系统服务的添加 :
cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
chmod 777 /etc/init.d/haproxy
chkconfig --add /etc/init.d/haproxy
cd /etc/init.d
ln -s /usr/local/sbin/haproxy /usr/sbin
软连接一定要是绝对路径
systemctl restart haproxy
后端RS配置:
后端RS启动nginx 改静态页面index.html
关闭nginx的keepalive_timeout
访问代理服务器:
四层转发实验:
注释掉之后创建新的
重启haproxy
访问代理服务器:
Haproxy的日志重定义:
重启服务:
tail -f /var/log/haproxy/haproxy-info.log #查看haproxy的访问请求日志信息