Haproxy

一、haproxy

支持功能

  • TCP 和 HTTP反向代理

  • SSL/TSL服务器

  • 可以针对HTTP请求添加cookie,进行路由后端服务器

  • 可平衡负载至后端服务器,并支持持久连接

  • 支持所有主服务器故障切换至备用服务器 keepalive

  • 支持专用端口实现监控服务

  • 支持停止接受新连接请求,而不影响现有连接

  • 可以在双向添加,修改或删除HTTP报文首部字段

  • 响应报文压缩

  • 支持基于pattern实现连接请求的访问控制

  • 通过特定的URI(url)为授权用户提供详细的状态信息

二、haproxy主要特性

  1. 可靠性和稳定性非常好,可以与硬件级的F5负载均衡设备相媲美;
  2. 最高可以同时维护40000-50000个并发连接,单位时间内处理的最大请求数为20000个,最大处理能力可达10Git/s;
  3. 支持多达8种负载均衡算法,同时也支持会话保持;
  4. 支持虚拟机主机功能,从而实现web负载均衡更加灵活;
  5. 支持连接拒绝、全透明代理等独特的功能;
  6. 拥有强大的ACL支持,用于访问控制; sendfile
  7. 其独特的弹性二x树数据结构,使数据结构的复杂性上升到了0(1),即数据的查寻速度不会随着数据条日的增加而速度有所下降;·支持客户端的keepalive功能,减少客户端与haproxy的多次三次握手导致资源浪费,让多个请求在一个tcp连接中完成;
  8. 支持TCP加速,零复制功能,类似于mmap机制;
  9. 支持响应池(response buffering) ;
  10. 支持RDP协议;
  11. 基于源的粘性,类似nginx的ip hash功能,把来自同一客户端的请求在一定时间内始终调度到上游的同一服务器;·更好统计数据接口,其web接口显示后端集群中各个服务器的接收、发送、拒绝、错误等数据的统计信息;
  12. 详细的健康状态检测,web接口中有关于对上游服务器的健康检测状态,并提供了一定的管理功能;
  13. 基于流量的健康评估机制;
  14. 基于http认证;
  15. 基于命令行的管理接口;
  16. 日志分析器,可对日志进行分析

三、haproxy负载均衡策略

静态调度算法:不管后端,按照调度器的算法进行 分配

动态调度算法:会考虑后端服务器的负载情况,直接动态调整,发送指令给进程(不需要重启加载),直接生效,可以发给socket文件

常见的有8种:

(1) roundrobin,表示简单的轮询 rr

(2) static-rr,表示根据权重

(3)leastconn,表示最少连接者先处理

( 4) source,表示根据请求源IP,缺点:重复率太高

(5) uri,表示根据请求的URI,做cdn需使用;

(6) url param,表示根据请求的URl参数' balance url param'requires an URL parameter name

(7) hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;

(8) rdp-cookie (name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。

四、LVS、NGINX、HAPROXY三者的区别

  1. LVS是内核中的功能,nginx haproxy是第三方实现的功能
  2. LVS只能提供四层负载均衡无法提供七层(无法控制7层协议,例如:http 头部 url等)功能单一
  3. nginx和haproxy可以实现4层和7层负载均衡,功能较多,但是性能不如LVS。性能的优先级对比LVS>haproxy>nginx
  4. haproxy相对比喻nginx性能优越,功能单一,haproxy只能做反向代理
  5. LVS无后端服务器健康性检测,nginx和haproxy则有。

五、实际操作

5.1 安装proxy和haproxy

首先关闭防火墙,安装proxy,把文件拖到xshell里再安装haproxy

5.2 安装runtime的安装包

5.3 再重新安装haproxy

5.4 显示过滤出haproxy,启动服务

5.5 解决lua环境

5.6 解压lua,编译安装

5.7 多lua做软链接

5.8 解压haproxy进行编译安装操作

相关推荐
身如柳絮随风扬无论云泥意贯一9 分钟前
计算机网络 实验七 NAT配置实验
服务器·网络·计算机网络·智能路由器
深思慎考17 分钟前
计算机操作系统——进程控制(Linux)
linux·服务器·c++·c
澜世40 分钟前
2024小迪安全基础入门第七课
网络·笔记·安全·网络安全
阿熊不会编程42 分钟前
【计网】自定义协议与序列化(一) —— Socket封装于服务器端改写
linux·开发语言·网络·c++·设计模式
北冥有鱼被烹1 小时前
微知-如何通过lspci指定某个deviceid查看pcie设备?(lspci -d 15b3:和lspci -d :1021 )
linux·pcie
炽天使1 小时前
aws rds-mysql不支持性能详情监控
linux·数据库·mysql·云计算·aws·rds
妙哉7361 小时前
零基础学安全--云技术基础
安全
追风赶月、1 小时前
【Linux】线程同步与互斥
linux
zl.rs1 小时前
对比C++,Rust在内存安全上做的努力
c++·安全·rust
网络研究院1 小时前
远程视频验证如何改变商业安全
安全·视频·远程·验证·商业