高可用集群
Haproxy :他是常用的负载均衡软件 |
Nginx 支持四层转发,和七层转发 |
Haproxy 也可以四层和七层转发 |
LVS的DR发和nat是基于四层还是七层的转?
都基于是四层转发(端口和协议),没有增加URL Tun模式:四层加七层 |
基于四层的转发 |
lvs |
nginx |
haproxy |
基于七层转发 |
nginx |
haproxy |
Haproxy概念
法国人开发的,威利塔罗在2000年基于c语言开发的一个开源的软件。 haproxy可以支持一万以上的并发请求 他是一个高性能tcp和HTTP的负载均衡器最新的2.4 ,我们一般用1.5版本 Haproxy:主要用于高并发的web站点,工作原理和nginx一样,lvs都一样 |
支持的功能
1 | tcp和http的反向代理功能 |
2 | 支持https的代理配置加密的http通信 |
3 | 可以针对http请求添加cookie(本地缓存),可以转发到后端服务器(添加缓存) |
4 | 支持主备服务器切换(keepalived) |
5 | 可以实现基于端口的实时监控 |
6 | 可以压缩响应报文 |
Haproxy的特点
1 | 可靠性和稳定性非常好,可以和硬件F5 big负载均衡的硬件设备相媲美 |
2 | 同时维护4万到5wan个并发连接,单位时间内处理最大请求数2万个 |
3 | 支持8种负载均衡算法,但是haproxy不带缓存功能,但是可以支持会话保持功能 |
4 | 支持配置虚拟主机 |
Haproxy的负载均衡算法
1 | roundrobin rr 轮询 |
2 | static-rr wrr 加权轮询 |
3 | leastconn 最小连接数 |
4 | source 根据请求的源ip进行调度 sh |
5 | URI uri 根据请求的地址进行调度 URL——hash |
6 | Url param URL的参数实现调度 |
7 | hdr (name)表示根据http的请求头锁定每一次的http的请求 |
8 | rdp-cookie(name)表示根据cookie 的名称来锁定每一次请求 |
Lvs nginx haproxy区别
LVS | 1.lvs基于linux内核实现负载均衡,性能最高,但是对系统硬件要求比较高,haproxy和nginx基于第三方的应用实现负载均衡,性能较低 2.lvs可以实现ip加端口的四层负载均衡,无法实现基于地址http请求的转发,haproxy和nginx都是可以实现四层和七层的转发技术 3.lvs只能实现四层转发,检测的状态只能是单一的功能(检测端口),haproxy可以实现更复杂的,如端口,uri,可以检测多种状态 |
haproxy | 功能虽然强大,但整体性能低于lvs,nginx的性能比haproxy低 |
nginx | nginx主要应用还是web服务或者缓存服务器,nginx的stream模块和upstream也可以支持集群,但是对节点的健康检查能力不行,没有lvs和haproxy的监控性能好 |
Lvs---haproxy----nginx(bug多,稳定性差) |
Haproxy缺点
1 | 一般都是单点部署,单实例运行,代理服务器出现故障,整个负载集群全部不可用 |
2 | haproxy是一个无状态的负载均衡器,他不会在状态之间保持,而是在后端服务器,或者依靠cookie解决 |
3 | 日志问题,haproxy的日志比较简单,一般来说只提供基本的请求日志和错误日志,需要更高级的日志,要人工自定义 |
Timeout 都是向后兼容
实验
- 搭建
- 实现七层 实现四层
- 如何实现haproxy 的日志单独存放