nginx支持四层和七层转发
Haproxy也支持四层和七层转发
(重点)LVS-DR模式和LVS-NAT模式是基于四层还是七层转发?
四层转发(IP地址+端口)
LVS-TUN模式是四层+七层转发
基于四层的转发:
1、LVS
2、nginx
3、haproxy
基于七层的转发:
1、nginx
2、haproxy
主要用于高并发的web场景。可以支持一万以上的并发请求。高性能的TCP和http的负载均衡器。版本:1.5.9
和nginx、lvs一样,都是提供一个代理地址
(1)基于tcp四层和http七层的反向代理
(2)支持https的代理配置
(3)支持针对http请求添加cookie(缓存),转发到后端服务器(添加缓存)。haproxy自身不带缓存功能
(4)支持主备服务器切换(keepalived)
(5)实现基于端口的实时监控
(6)压缩响应报文
(1)可靠性和稳定性非常好,可以和负载均衡的硬件设备f5 BIG相媲美
(2)可以同时维护40000-50000个并发,单位时间内处理最大请求数20000个
(3)可以支持8种负载均衡算法,但是haproxy不带缓存功能,却可以支持会话保持
(4)支持虚拟主机功能
(1)roundrobin轮询(常用)
(2)static-rr加权轮询(常用)
(3)leastconn最小连接数(常用)
(4)source根据请求的源IP进行调度
(5)uri根据请求地址进行调度
(6)url param根据URL参数实现调度(很少用)
(7)hdr(name)根据http的请求头锁定每一次http的请求(很少用)
(8)rdp-cookie(name)根据cookie的名称锁定每一次请求(很少用)
(1)lvs基于linux内核实现负载均衡,性能最高,但对系统硬件要求比较高。nginx和haproxy基于第三方应用实现负载均衡(用户态),性能较低,最低的是nginx
(2)lvs可以实现ip+端口的四层负载均衡,无法实现基于http请求的转发。nginx和haproxy都可以实现四层和七层的转发
(3)lvs只能实现四层转发,所以只能检测端口(检测状态单一)。haproxy可以实现更复杂的(例如:端口、uri)
(4)haproxy虽然功能强大,但整体性能低于lvs,nginx性能比haproxy低。性能:lvs>haproxy>nginx(bug多,稳定性查,处理小集群足以)
(5)nginx主要应用是提供web服务或者缓存服务器,nginx的stream模块和upstream模块也可以支持集群,但对节点的健康检查能力不行,没有lvs和haproxy的监控性能好
(1)单节点部署(单实例运行)。代理服务器出现故障,整个负载集群全部不可用,必须结合keepalived
(2)haproxy是一个无状态的负载均衡器,没有缓存,依靠应用程序实现会话保持。状态不是保存在代理服务器,而是在后端服务器,或者依靠cookie
(3)日志问题:haproxy的日志较简单,只提供基本的请求日志和错误日志,更高级的日志需由人工自定义
实验条件:
nginx1——20.0.0.11——haproxy服务
nginx2——20.0.0.21——后端真实服务器1——nginx服务
nginx3——20.0.0.31——后端真实服务器2——nginx服务
test1客户端
实验步骤:
1、搭建haproxy服务
(1)安装依赖环境
(2)编译安装haproxy
uname -r查看内核版本。只要比2628大,统一用2628
编译
安装
haproxy需要自己进行服务配置(自己指定主配置文件存放目录)
2、指定目录存放haproxy配置文件
3、修改配置文件
或者做四层代理
check intet 开启对后端服务器的健康检查,检查时间间隔2000ms
fall 3 连续3次检测不到后端服务器的心跳线,则认为该节点失效
3、启动haproxy服务
4、设置后端真实服务器真实静态页面
(1)nginx2
(2)nginx3
5、测试
6、模拟节点服务器故障——nginx2故障
测试
7、模拟节点服务器恢复——nginx2正常运行
8、haproxy日志分割
创建脚本便于分割日志
测试