当前位置: 首页 > news >正文

使用haproxy搭建web架构

haproxy

HAProxy是一个免费的负载均衡软件,可以运行于大部分主流的Linux操作系统上。

HAProxy提供了可以在七层和四层两种负载均衡能力,它可以提供高可用性、负载均衡、及基于TCP和HTTP应用的代理。·适用于负载大的Web站点,在运行在硬件上可支持数以万计的并发连接的连接请求。

Haproxy主要特性

1、可靠性和稳定性非常好,可以与硬件级的F5负载均衡设备相媲美;

2、最高可以同时维护40000-50000个并发连接,单位时间内处理的最大请求数为20000个,最大处理能力可达10Git/s;

3、支持多达8种负载均衡算法,同时也支持会话保持;

4、支持虚机主机功能,从而实现web负载均衡更加灵活;

5、支持连接拒绝、全透明代理等独特的功能;

6、拥有强大的ACL支持,用于访问控制;

7、其独特的弹性二叉树数据结构,使数据结构的复杂性上升到了0(1),即数据的查寻速度不会随着数据条目的增加而速度有所下降;

8、支持客户端的keepalive功能,减少客户端与haproxy的多次三次握手导致资源浪费,让多个请求在一个tcp连接中完成;

9、支持TCP加速,零复制功能,类似于mmap机制;

10、支持响应池(response buffering);

11、支持RDP协议;

12、基于源的粘性,类似nginx的ip_hash功能,把来自同一客户端的请求在一定时间内始终调度到上游的同一服务器;

13、更好统计数据接口,其web接口显示后端集群中各个服务器的接收、发送、拒绝、错误等数据的统计信息;

14、详细的健康状态检测,web接口中有关于对上游服务器的健康检测状态,并提供了一定的管理功能;

15、基于流量的健康评估机制;

16、基于http认证;

17、基于命令行的管理接口;

18、日志分析器,可对日志进行分析。

Haproxy负载均衡的策略

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

(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请求。

Haproxv、lvs、nginx的区别

LVS基于Linux操作系统内核实现软负载均衡,而HAProxy和Nginx是基于第三方应用实现的软负载均衡;

LVs是可实现4层的IP负载均衡技术,无法实现基于目录、URL的转发。而HAProxy和Nginx都可以实现4层和7层技术,HAPToxy可提供TCP和HTTP应用的负载均衡综合解决方案;

Lvs因为工作在iso模型的第四层,其状态监测功能单一,而HAProxy在状态监测方面功能更丰富、强大,可支持端口、URL、脚本等多种状态检测方式;

HAProxy功能强大,但整体性能低于4层模式的LVS负载均衡。

Nginx主要用于web服务器或缓存服务器。Nginx的upstream模块虽然也支持群集功能,但是对群集节点健康检查功能不强,性能没有Haproxy好。

实验:Haproxy搭建 Web 群集

编译安装 Haproxy

 配置Haproxy服务器

 

 添加haproxy 系统服务

部署节点服务器

下载并启动nginx

 访问haproxy服务器地址

 

 

 

http://www.lryc.cn/news/138507.html

相关文章:

  • Java基础之IO流File类创建及删除
  • 高速道路监控:工业路由器助力高速监控远程管理与维护
  • 【校招VIP】前端基础之post和get
  • 如何合理设计API接口?
  • Jsp 解决out.print()输出多出空行
  • SMC状态机 讲解2 从模型到SMC
  • MyBatis-Plus的使用
  • 板卡设计+硬件每日学习十个知识点(44)23.8.24 (检测单元设计,接口部分设计,板卡电源输入设计,电源检测电路)
  • jmeter HTTP信息头管理器
  • 各种中间件的默认端口
  • leetcode303. 区域和检索 - 数组不可变(java)
  • PHP 安装Composer,vue前端依赖包
  • OpenCV项目开发实战--基于Python/C++实现鼠标注释图像和轨迹栏来控制图像大小
  • ❤ Vue使用Eslint检测报错问题和解决
  • 解决运行在微信小程序中报[ app.json 文件内容错误] app.json: app.json 未找到(env: Windows,mp,1.05.2204
  • python 基础 -- 安装Python模块
  • C语言实现状态机
  • 交叉编译工具链arm-linux-gnueabihf的安装-ubuntu 20.04
  • Java的类加载器
  • Stable Diffusion web UI 部署详细教程
  • 《深度学习计算机视觉 》书籍分享(包邮送书三本)
  • 【使用 k 折叠交叉验证的卷积神经网络(CNN)】基于卷积神经网络的无特征EMG模式识别研究(Matlab代码实现)
  • 微服务 Nacos配置热部署
  • 国产调度器之光——Fsched到底有多能打?
  • LeetCode:53. 最大子数组和 - Python
  • 网站建设 之 react usestate
  • 第一讲使用IDEA创建Java工程——HelloWorld
  • BootstrapBlazor组件使用:数据注解
  • MySQL 触发器
  • DPDK主从进程模式 rte_mempool_put失败