Haproxy负载均衡

nginx支持四层和七层转发

Haproxy也支持四层和七层转发

(重点) LVS-DR模式和LVS-NAT模式是基于四层还是七层转发?

四层转发(IP地址+端口)

LVS-TUN模式是四层+七层转发

基于四层的转发:

1、LVS

2、nginx

3、haproxy

基于七层的转发:

1、nginx

2、haproxy

haproxy

主要用于高并发的web场景。可以支持一万以上的并发请求。高性能的TCP和http的负载均衡器。版本:1.5.9

1、工作原理

和nginx、lvs一样,都是提供一个代理地址

2、支持的功能

(1)基于tcp四层和http七层的反向代理

(2)支持https的代理配置

(3)支持针对http请求添加cookie(缓存),转发到后端服务器(添加缓存)。haproxy自身不带缓存功能

(4)支持主备服务器切换(keepalived)

(5)实现基于端口的实时监控

(6)压缩响应报文

3、特点

(1)可靠性和稳定性非常好,可以和负载均衡的硬件设备f5 BIG相媲美

(2)可以同时维护40000-50000个并发,单位时间内处理最大请求数20000个

(3)可以支持8种负载均衡算法,但是haproxy不带缓存功能,却可以支持会话保持

(4)支持虚拟主机功能

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的名称锁定每一次请求(很少用)

5、lvs、nginx、haproxy负载均衡的区别

(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的监控性能好

6、haproxy缺点

(1)单节点部署(单实例运行)。代理服务器出现故障,整个负载集群全部不可用,必须结合keepalived

(2)haproxy是一个无状态的负载均衡器,没有缓存,依靠应用程序实现会话保持。状态不是保存在代理服务器,而是在后端服务器,或者依靠cookie

(3)日志问题:haproxy的日志较简单,只提供基本的请求日志和错误日志,更高级的日志需由人工自定义

7、haproxy实现负载均衡,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日志分割

创建脚本便于分割日志

测试

相关推荐
2301_7809438421 分钟前
linux 对文件打补丁(Patch)
linux·运维·服务器
ICT董老师27 分钟前
通过kubernetes部署nginx + php网站环境
运维·nginx·云原生·容器·kubernetes·php
敬往事一杯酒哈32 分钟前
Ubuntu 20.04 安装Anacada
linux·运维·ubuntu
还在忙碌的吴小二33 分钟前
Jenkins CLI (jcli) 使用手册
运维·jenkins
ChangYan.35 分钟前
Windows命令行(cmd)下快速查找文件路径(类似Linux下find命令)
linux·运维·服务器
陈让然1 小时前
VS Code新版本无法连接WSL ubuntu18.04
linux·运维·ubuntu
lpfasd1231 小时前
宝塔面板使用流程及注意事项
运维
小杰帅气1 小时前
神秘的环境变量和进程地址空间
linux·运维·服务器
胖咕噜的稞达鸭1 小时前
进程间的通信(1)(理解管道特性,匿名命名管道,进程池,systeam V共享内存是什么及优势)重点理解代码!
linux·运维·服务器·数据库