Haproxy 搭建集群实验

news2024/12/23 18:13:11

Haproxy

HAProxy是可提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,是免费、快速并且可靠的一种解决方案。

HAProxy非常适用于并发大(并发达1w以上)web站点,这些站点通常又需要会话保持或七层处理。

HAProxy的主要特性

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

HAProxy 负载均衡策略

  • roundrobin:表示简单的轮询
  • static-rr:表示根据权重
  • leastconn:表示最少连接者先处理
  • source:表示根据请求源IP
  • uri:表示根据请求的URI,做cdn需使用
  • url_param:表示根据请求的URl参数'balance url_param' requires an URL parameter name
  • hdr(name):表示根据HTTP请求头来锁定每一次HTTP请求;
  • rdp-cookie(name):表示根据cookie(name)来锁定并哈希每一次TCP请求

LVS、Nginx、HAproxy 区别

  • LVS基于Linux操作系统内核实现软负载均衡,而HAProxy和Nginx是基于第三方应用实现的软负载均衡
  • LVS是可实现4层的IP负载均衡技术,无法实现基于目录、URL的转发。而HAProxy和Nginx都可以实现4层和7层技术,HAProxy可提供TCP和HTTP应用的负载均衡综合解决方案
  • LVS因为工作在ISO模型的第四层,其状态监测功能单一,而HAProxy在状态监测方面功能更丰富、强大,可支持端口、URL、脚本等多种状态检测方式;
  • HAProxy功能强大,但整体性能低于4层模式的LVS负载均衡。
  • Nginx主要用于Web服务器或缓存服务器。Nginx的upstream模块虽然也支持群集功能,但是对群集节点健康检查功能不强,性能没有Haproxy好

Nginx

  • 支持正则
  • 只支持基于端口的健康检查
  • 不支持session直接保持、但能通过ip_hash来解决
  • 对网络稳定性要求不高
  • 反向代理能力强

LVS

  • 只能基于四层端口转发
  • 尽在四层做分发作用 抗负载能力强
  • 应用范围广

Haproxy

  • 支持8中负载均衡策略
  • 仅作负载均衡软件使用,在高并发情况下性能优于nginx
  • 支持URL检测  支持session保持

Haproxy搭建Web集群 实验

准备三台服务器:
192.168.154.10 做Haproxy
192.168.154.20 做Nginx
192.168.154.40 做Nginx

为 10服务器编译安装Haproxy

将源配置文件/examples/haproxy.cfg 单独复制到 /etc/haproxy目录下进行修改

globe
#全局配置,主要用于定义全局参数,属于进程级的配置,通常和操作系统配置有关

log /dev/log   local0 info		
log /dev/log   local0 notice	
#log loghost   local0 info
maxconn 4096			        #最大连接数
#chroot /usr/share/haproxy 
#chroot运行路径,为该服务自设置的根目录,一般需将此行注释掉

uid 99					#用户UID
gid 99					#用户GID
daemon					#守护进程模式
nbproc 1				#添加设置并发进程数,建议与当前服务器CPU核数相等或为其2倍



defaults   	
#配置默认参数,这些参数可以被用到Listen,frontend,backend组件

log     global			#引入global定义的日志格式
mode    http			#模式为http(7层代理http,4层代理tcp)
option  httplog			#日志类别为http日志格式
option  dontlognull		#不记录健康检查日志信息
retries 3				#检查节点服务器失败次数,连续三次失败则不可用
redispatch				#当服务器负载很高时,自动结束当前队列处理比较久的连接
maxconn 2000			#最大连接数,“defaults”中的值不能超过“global”段中的定义
                         因此要注释下面的设置
#contimeout 5000        #设置连接超时时间,默认单位是毫秒
#clitimeout 50000       #设置客户端超时时间,默认单位是毫秒
#srvtimeout 50000       #设置服务器超时时间,默认单位是毫秒
timeout http-request 10s 	    #默认http请求超时时间
timeout queue 1m   		#默认队列超时时间 1分钟
timeout connect 10s		#默认连接超时时间 10秒
timeout client 1m		#默认客户端超时时间 1分钟
timeout server 1m		#默认服务器超时时间 1分钟
timeout http-keep-alive 10s		#默认持久连接超时时间 10秒

添加Haproxy系统服务

为 20、40服务器安装Nginx

日志定义

默认haproxy的日志是输出到系统的syslog中,查看起来不是非常方便,为了更好的管理haproxy的日志,我们在生产环境中一般单独定义出来

需要将haproxy的info及notice日志分别记录到不同的日志文件中

需要修改rsyslog配置,为了便于管理,将haproxy相关的配置独立定义到haproxy.conf,并放到/etc/rsyslog.d/下,rsyslog启动时会自动加载此目录下的所有配置文件,如下配置:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/911758.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenCV使用CMake和MinGW-w64的编译安装

OpenCV使用CMake和MinGW-w64的编译安装中的问题 问题:gcc: error: long: No such file or directory** C:\PROGRA~2\Dev-Cpp\MinGW64\bin\windres.exe: preprocessing failed. modules\core\CMakeFiles\opencv_core.dir\build.make:1420: recipe for target ‘modul…

操作系统——shell编程

文章目录 shell入门什么是 Shell?Shell 编程的 Hello World Shell 变量Shell 编程中的变量介绍Shell 字符串入门Shell 字符串常见操作Shell 数组 Shell 基本运算符算数运算符关系运算符逻辑运算符布尔运算符字符串运算符文件相关运算符 shell流程控制if 条件语句for…

带着问题看SpringBoot

带着问题看SpringBoot 1、Spring容器具体是什么? 跟进run方法,context this.createApplicationContext(),得出容器是AnnotationConfigServletWebServerApplicationContext类。 SpringApplication.run(ServeroneApplication.class, args);…

轻松实现24小时无人直播带货,只需一款无人值守手机直播软件!

现在做线上运营,基本上就离不开短视频平台,想要做好短视频平台,就得弄懂如何在平台上进行直播。 今年以来,以专帮科技为首的一些科技公司研发的手机无人直播技术得到了快速发展,使得越来越多的企业和个人开始使用此类…

不溶性微粒该如何检测?液体粒子计数器

不溶性微粒是什么? 不溶性微粒系指可流动的、随机存在于静脉注射用药物中不溶于水的微小颗粒,通常采用光阻法(Light Obscuration Particles Count Test)和显微计数法(Microscopic Particles Count Test)进行检测。所谓静脉注射用药物中不溶于水的微小颗…

Go与Rust的对比与分析

Rust 和 Go 是两种现代语言,近年来获得了巨大的关注,每种语言都有自己独特的优势和权衡。在这篇文章中,我们将深入探讨 Rust 和 Go 之间的差异,重点关注性能、语言功能和其他关键因素,以帮助您针对您的开发需求做出明智…

VS13打开后菜单中没有“生成”这个选项

小白新手学开发之vs2013下载后没有生成菜单 今天下载了vs2013竟然发现程序在调试的时候,菜单上没有了生成这个选项! 很苦恼,上网查了半天,也没有找到合适的方法,自己琢磨吧! 不舍得把好不容易安装的这个v…

Workspace ONE 统一端点管理系统对 Windows 多用户的支持

自从二十多年前微软推出 Active Directory(AD)以来,用户就可以使用他们在 AD 中的任何账户登录到 Windows 域连接的 PC 上,而该 PC 将根据他们的需求量身定制。组策略对象(Group policy objects, GPOs)使这…

番茄(西红柿)叶病害识别(Python代码,pyTorch框架,深度卷积网络模型,很容易替换为其它模型,带有GUI识别界面)

代码运行要求:Torch>1.13.1即可 1.数据集介绍: 每一个文件夹里装有一类病害叶子的照片,一共10种类别,每种类别下有1100张照片 从第一类到第十类分别如下图所示 2.整体文件夹 data文件夹存放的是未被划分训练集和测试集的原…

HCIP实验之三层架构

目录 一、实验题目 二、实验思路 2.1 拓扑设计(IP地址规划) 2.2 实施 2.3 维护 2.4 升级 涉及知识点: 配置顺序: 三、实验步骤 3.1 建立eth-trunk 3.2 建立vlan 3.3 划入vlan 3.4 trunk干道 3.5 STP生成树协议 3.6 调整边缘接口…

解决vant组件 van-dialog造成的页面闪动问题

解决方案:该问题是因为van-dialog默认是scale,将这个属性改为fade即可

解决express引入express-session报错require(...) is not a function

我引入的版本是7.1.0 然后就报错 换成了6.1.0 就没事了 具体的还没有探究

Android开发基础知识总结(三)简单控件(上)

一.文本显示 考虑到结构样式相分离的思想&#xff0c;我们往往在XML中设置文本 <TextViewandroid:layout_width"342dp"android:layout_height"70dp"android:text"房价计算器"android:layout_gravity"center"android:textColor"…

OLED透明屏:如何选择合适的OLED透明屏供应商?定制、安装、生产

引言&#xff1a;OLED透明屏作为一种创新的显示技术&#xff0c;正逐渐占领市场并在各个行业中得到广泛应用。 在这篇文章中&#xff0c;尼伽将为您提供OLED透明屏的品牌排名、制造过程和安装要点的综合指南&#xff0c;结合相关调查数据和报告&#xff0c;详细介绍该技术的优…

Linux系统查看文件系统类型C代码

系统&#xff1a;VM Ubuntu 实现Linux系统下通过输入指定路径查看文件系统类型,MSDOS_SUPER_MAGIC&#xff0c;NTFS_SUPER_MAGIC和EXT4_SUPER_MAGIC这些宏定义并不是在sys/mount.h中定义的&#xff0c;它们实际上是在linux/magic.h头文件中定义的。不同系统下宏定义可能不一样&…

基于微信小程序的美食系统/基于微信小程序的美食网站/基于springboot的美食宣传平台

摘 要 在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括微信小程序美食天下的网络应用&#xff0c;在外国微信小程序美食天下已经是很普遍的方式&#xff0c;不过国内的美食天下可能还处于起步阶段。微信小程序美食天下具有在…

rook-ceph部署

宿主机&#xff1a; MacBook Pro&#xff08;Apple M2 Max&#xff09; VMware Fusion Player 版本 13.0.2 VM软硬件&#xff1a; ubuntu 22.04.2 4核 CPU&#xff0c;5G 内存&#xff0c;40G硬盘 *每台机器分配硬件资源很重要&#xff0c;可以适当超过宿主机的资源量&am…

【php】windows下php运行已有php web项目环境配置教程

php环境配置教程 php安装composer安装扩展安装redis扩展安装 composer install 本文操作系统使用的是win11&#xff0c;软件PhpStorm 2023.1 php安装 要安装的php版本可以在composer.json看到&#xff0c;下载安装对应版本 windows下载地址https://windows.php.net/download …

华为OD机试之报文重排序【Java源码】

题目描述 对报文进行重传和重排序是常用的可靠性机制&#xff0c;重传缓中区内有一定数量的子报文&#xff0c;每个子报文在原始报文中的顺序已知&#xff0c;现在需要恢复出原始报文。 输入描述 输入第一行为N&#xff0c;表示子报文的个数&#xff0c;0 &#xff1c;N ≤ …