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

haproxy 负载均衡

haproxy负载均衡
haproxy:基于C语言开发的开源软件
支持高性能的tcp和http负载均衡器,工作中用的版本1.5.9
haproxy功能:主要用于高并发的web站点,工作原理和nginx、lvs都一样

haproxy缺点: 单节点部署,单实例运行。代理服务器出现故障,整个负载集群全部不可用。

正常功能:
1、tcp和http的反向代理
2、https的代理配置
3、可以针对http请求添加cookie,转发到后端服务器(添加缓存)
4、也支持主备切换(keepalive)
5、基于端口的实时监控
6、压缩响应的报文

haproxy的特点
1、可靠性和稳定非常好,可以和硬件F5 BIG 负载均衡的硬件设备
2、可以同时维护4w-5w个并发,单位时间内处理最大的请求20000个
3、支持8中负载均衡算法。但是haproxy不带缓存功能,但是可以支持会话保持
4、也支持配置虚拟主机。

haproxy的负载均衡算法:

1、roundrobin  rr轮询
2、static-rr    wrr加权轮询
3、leastconn    最小连接数
4、source        根据请求的源IP进行调度 sh
5、uri            根据请求地址进行调度
6、url param URL的参数实现调度
7、hdr(name)     根据http的请求头锁定每一次http的请求
8、rdp-cookie(name)根据cookie的名称来锁定每一次请求。

lvs nginx haproxy三种负载均衡的区别


1、Ivs基于linux内核实现负载均衡,性能最高,但是对系统硬件要求也比较高。
        haproxy和nginx基于第三方应用实现负载均衡,性能较低。
2、lvs可以实现 'ip+端口' 的四层负载均衡,无法实现http请求的转发。
        haproxy和nginx都可以实现四层和七层的转发。
3、lvs只能四层转发,单一的功能:基于端口来进行检测
        haproxy 可以实现端口,uri 也可以
4、haproxy虽然功能强大但整体功能低于lvs的性能比gaproxy低
        lvs-------haproxy---------nginx (bug多,稳定也差)
5、nginx主要应用还是web服务或者缓存服务器,nginx的stream模块和upstream也可以支持集群,但是对节点的健康检查能力不行。没有lvs和haproxy的监控性能好

Haproxy:是常用的负载均衡软件
nginx 支持四层转发,七层转发
haproxy 也可以四层和七层转发

基于四层的转发
1、lvs
2、nginx
3、haproxy
基于七层:
nginx
haproxy

/etc/haproxy/haproxy.cfg内容说明

global                          #全局配置定义 定义全局参数
log /dev/log localo info        系统日志
log /dev/log -local0    notice    修改日志的存放路径
log loghost localo info            注释
maxconn 10240                    支持每个cpu的最大连接数 1024 一定要改limits.conf
chroot /usr/share/haproxy        注释
nbproc 6                         在daemon下添加,同时并发进程数,要么和cpu相同,要么是cpu的两倍。
defaults                         默认配置,包括监听地址和协议backend (upstream)
log global                         引入全局配置日志格式
mode http                         模式为http 七层
option dontlognull                不记录健康检查的日志信息
retries 3                         检查节点服务器的失败次数 3次失败就认为节点服务器失效
redispatch                         服务器的负载很高,自动结束当前队列处理比较久的连接
maxconn 2000                     最大连接数,不能超过全局配置的定义数量
timeout http-request 10s        默认http请求的超时时间
timeout queue 1m                默认队列超时时间
timeout connect 10s                默认连接超时的时间
timeout client 1m                客户端的超时时间
timeout server 1m                 服务端的超时时间
timeout http-keep-alive 10s        默认会话保持的超时时间
timeout check 10s                心跳检查的超时时间

nginx-haproxy负载均衡

1、haproxy代理服务器

        192.168.10.10

2、web服务器

        192.168.10.20

        192.168.10.30

        提供 nginx 页面服务

数据流向

haproxy代理服务器(七层

yum install -y pcre-devel bzip2-devel gcc gcc-c++ make
cd /opt/
tar zxvf haproxy-1.5.19.tar.gz
cd haproxy-1.5.19/
make TARGET=linux2628 ARCH=x86_64
make install
mkdir /etc/haproxy
cp /opt/haproxy-1.5.19/examples/haproxy.cfg /etc/haproxy/
cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
chmod 777 /etc/init.d/haproxy
chkconfig --add /etc/init.d/haproxy
ln -s /usr/local/sbin/haproxy /usr/sbin
 
vim /etc/haproxy/haproxy.cfg
.................
 
修改
log /dev/log    local0 info
log /dev/log    local0 notice
chroot /usr/share/haproxy        注释掉
nbproc 2                         在daemon下添加
contimeout     5000              注释掉
clitimeout     50000             注释掉
srvtimeout     50000             注释掉
添加以下内容
timeout http-request 10s
#默认http请求的超时时间
timeout queue 1m
#默认队列的超时时间
timeout connect 10s
#默认连接的超时时间
timeout client 1m
#客户端默认的连接超时时间
timeout server 1m
#客户端默认的超时时间
timeout http-keep-alive 10s
#默认会话的保持的超时时间
timeout check 10s
#心跳检查的超时时间,在下面添加
listen  liu 0.0.0.0:80
        option httpchk GET /index.html
        balance roundrobin        算法
        server  liu1 192.168.10.20:80 check inter 2000 fall 3
        server  liu2 192.168.10.30:80 check inter 2000 fall 3
 
把添加完成后面的全部删除
.................
 
systemctl restart haproxy

yum install -y pcre-devel bzip2-devel gcc gcc-c++ make
cd /opt/
tar zxvf haproxy-1.5.19.tar.gz
cd haproxy-1.5.19/
make TARGET=linux2628 ARCH=x86_64
make install
mkdir /etc/haproxy
cp /opt/haproxy-1.5.19/examples/haproxy.cfg /etc/haproxy/
cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
chmod 777 /etc/init.d/haproxy
chkconfig --add /etc/init.d/haproxy
ln -s /usr/local/sbin/haproxy /usr/sbin
 
vim /etc/haproxy/haproxy.cfg
.................
 
修改
log /dev/log    local0 info
log /dev/log    local0 notice
chroot /usr/share/haproxy        注释掉
nbproc 2                         在daemon下添加
contimeout     5000              注释掉
clitimeout     50000             注释掉
srvtimeout     50000             注释掉
添加以下内容
timeout http-request 10s
#默认http请求的超时时间
timeout queue 1m
#默认队列的超时时间
timeout connect 10s
#默认连接的超时时间
timeout client 1m
#客户端默认的连接超时时间
timeout server 1m
#客户端默认的超时时间
timeout http-keep-alive 10s
#默认会话的保持的超时时间
timeout check 10s
#心跳检查的超时时间,在下面添加
 
frontend liu
bind *:80
mode tcp
default_backend liu
 
backend liu
mode tcp
balance roundrobin
        server  liu1 192.168.10.20:80 check inter 2000 fall 3
        server  liu2 192.168.10.30:80 check inter 2000 fall 3
 
把添加完成后面的删除
.................
 
systemctl restart haproxy

Haproxy的日志重定义

日志单独存放

nginx服务
keepalive_timeout  65;        注释掉或将其改为0
 
 
 
haproxy服务
vim /etc/haproxy/haproxy.cfg
global
    log /dev/log local0 info
    log /dev/log local0 notice
 
systemctl restart haproxy
 
 
vim /etc/rsyslog.d/haproxy.conf
....................
 
if ($programname == 'haproxy' and $syslogseverity-text == 'info')
then -/var/log/haproxy/haproxy-info.log
&~
if ($programname == 'haproxy' and $syslogseverity-text == 'notice')
then -/var/log/haproxy/haproxy-notice.log
&~
只能添加ifno和notice其他的要手动添加,格式类似
 
....................
 
systemctl restart rsyslog.service
 
haproxy日志会修改到cd /var/log/haproxy/下,/var/log/messages中将不会显示haproxy的日志

相关文章:

haproxy 负载均衡

haproxy负载均衡 haproxy:基于C语言开发的开源软件 支持高性能的tcp和http负载均衡器,工作中用的版本1.5.9 haproxy功能:主要用于高并发的web站点,工作原理和nginx、lvs都一样 haproxy缺点: 单节点部署,单实例运行。代…...

在el-dialog中使用tinymce 点击工具栏下拉框被遮挡

在el-dialog中使用tinymce控件时,会出现点击工具栏下拉框出现在弹窗下一层,审查元素之后发现是tinymce的下拉框z-index优先级低于el-dialog的z-index导致的,所以需要增加tinymce的下拉框的z-index值。 通过审查元素得到,需要修改t…...

CloudQuery + StarRocks:打造高效、安全的数据库管控新模式

随着技术的迅速发展,各种多元化的数据库产品应运而生,它们不仅类型众多,而且形式各异,国产化数据库千余套,开源数据库百余套 OceanBase 、PolarDB 、StarRocks…还有一些像 Oracle、MySQL 这些传统数据库。这些数据库产…...

各类统计模型R语言的详细使用教程-R语言的线性回归使用教程

各类统计模型R语言的详细使用教程-R语言的线性回归使用教程 前言R语言的线性回归代码示例回归诊断误差项正态qq图内学生化残差外学生化残差线性关系异常值的发现、处理帽子矩阵的方法DFFITS 准则Cook统计量COVRATIO准则多重共线性summaryKlein判别法特征根法条件指数法方差膨胀…...

点云从入门到精通技术详解100篇-基于尺度统一的三维激光点云与高清影像配准

目录 前言 研究现状 三维激光点云与影像配准研究现状 点云配准研究现状...

<蓝桥杯软件赛>零基础备赛20周--第2周

报名明年4月蓝桥杯软件赛的同学们,如果你是大一零基础,目前懵懂中,不知该怎么办,可以看看本博客系列:备赛20周合集 20周的完整安排请点击:20周计划 每周发1个博客,共20周(读者可以按…...

CMake多文件构建初步

前面学习了cmake,不熟悉,只是记录了操作过程;下面再继续; 略有一点进步,增加一个代码文件,之前是1个代码文件; 如下图,prj是空文件夹, CMakeLists.txt如下;…...

游戏研发的解决方案有哪些?

游戏研发的解决方案可以根据不同的需求和情境而有所不同,以下是一些常见的游戏研发解决方案: 游戏引擎: 游戏引擎是游戏研发的基础,它提供了开发游戏所需的核心功能,如图形渲染、物理引擎、音效管理、动画等。一些流行…...

Bayes决策:身高与体重特征进行性别分类

代码与文件请从这里下载:Auorui/Pattern-recognition-programming: 模式识别编程 (github.com) 简述 分别依照身高、体重数据作为特征,在正态分布假设下利用最大似然法估计分布密度参数,建立最小错误率Bayes分类器,写出得到的决…...

【考研数学】数学“背诵”手册 | 需要记忆且容易遗忘的知识点

文章目录 引言一、高数常见泰勒展开 n n n 阶导数公式多元微分函数连续、可微、连续可偏导之间的关系多元函数极值无条件极值条件极值 三角函数的积分性质华里士公式( “点火”公式 )特殊性质 原函数与被积函数的奇偶性结论球坐标变换公式 二、写在最后 …...

HJ3 明明的随机数

牛客网:HJ3 明明的随机数 https://www.nowcoder.com/practice/3245215fffb84b7b81285493eae92ff0?tpId37&tqId21226&ru/exam/oj 使用Go语言解题,最简单的方式: 解题一: // 运行时间:5ms 占用内存&#xff1a…...

如何恢复u盘删除文件?2023最新分享四种方法恢复文件

U盘上删除的文件怎么恢复?使用U盘存储文件是非常方便的,例如:在办公的时候,会使用U盘来存储网络上查找到的资料、产品说明等。在学习的时候,会使用U盘来存储教育机构分享的教学视频、重点知识等。而随着U盘存储文件的概…...

8.稳定性专题

1. anr https://code84.com/303466.html 一句话,规定的时间没有干完要干的事,就会发生anrsystem_anr场景 input 5sservice 前台20s 后台60scontentprivider超市 比较少见 原因 主线程耗时 复杂layout iobinder对端block子线程同步锁blockbinder被占满导…...

基于51单片机的四种波形信号发生器仿真设计(仿真+程序源码+设计说明书+讲解视频)

本设计 基于51单片机信号发生器仿真设计 (仿真程序源码设计说明书讲解视频) 仿真原版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0015 这里写目录标题 基于51单片机信号发生…...

不同网段的IP怎么互通

最近在整理工作的时候发现一个不同网段无法互通的问题,就是我们大家熟知的一级路由和二级路由无法互通的问题。由于需要记录整个过程的完整性,这里也需要详细记录下整个过程,明白的人不用看,可以直接跳过,到解决方法去…...

C#序列化与反序列化详解

在我们深入探时C#序列化和反序列化,之前我们先要明白什么是序列化,它又称串行化,是.ET运行时环境用来支持用户定义 类型的流化的机制。序列化就是把一个对象保存到一个文件或数据库字段中去,反序列化就是在适当的时候把这个文件再…...

如何在k8s的Java服务镜像(Linux)中设置中文字体

问题描述:服务是基于springboot的Java服务,在项目上是通过Maven的谷歌插件打包,再由k8s部署的。k8s的镜像就是一个Java服务,Java服务用到了中文字体。 解决这个问题首先需要搞定镜像字体的问题。有很多类似的解决方案,…...

CT 扫描的 3D 图像分类-预测肺炎的存在

介绍 此示例将展示构建 3D 卷积神经网络 (CNN) 所需的步骤,以预测计算机断层扫描 (CT) 扫描中是否存在病毒性肺炎。2D CNN 通常用于处理 RGB 图像(3 通道)。3D CNN 就是 3D 的等价物:它以 3D 体积或一系列 2D 帧(例如 CT 扫描中的切片)作为输入,3D CNN 是学习体积数据表…...

整合管理案例题分析

本文摘自江山老师文档 五个过程 制定项目章程 1.没有写项目章程,没有颁布 2.项目经理自己颁布项目章程 3.项目经理修改项目章程 4.项目章程授权不够,项目经理没有权限,下面的人不听话 5.项目章程的内容不完整 制定项目管理计划 1.项目…...

mysql4

创建表并插入数据: 字段名 数据类型 主键 外键 非空 唯一 自增 id INT 是 否 是 是 否 primary key name VARCHAR(50) 否 否 是 否 否 not null glass VARCHAR(50) 否 否 是 否 否 not nullsch 表内容 id name glass 1 xiaommg glass 1 2 xiaojun …...

Python深度学习实战-基于tensorflow原生代码搭建BP神经网络实现分类任务(附源码和实现效果)

实现功能 前面两篇文章分别介绍了两种搭建神经网络模型的方法,一种是基于tensorflow的keras框架,另一种是继承父类自定义class类,本篇文章将编写原生代码搭建BP神经网络。 实现代码 import tensorflow as tf from sklearn.datasets import…...

PDF 文档处理:使用 Java 对比 PDF 找出内容差异

不论是在团队写作还是在个人工作中,PDF 文档往往会经过多次修订和更新。掌握 PDF 文档内容的变化对于管理文档有极大的帮助。通过对比 PDF 文档,用户可以快速找出文档增加、删除和修改的内容,更好地了解文档的演变过程,轻松地管理…...

压敏电阻有哪些原理?|深圳比创达电子EMC

压敏电阻是一种金属氧化物陶瓷半导体电阻器。它以氧化锌(ZnO)为基料,加入多种(一般5~10种)其它添加剂,经压制成坯体,高温烧结,成为具有晶界特性的多晶半导体陶瓷组件。氧化锌压敏电阻器的微观结构如下图1所示。 氧化锌…...

【计算机网络笔记】Web应用之HTTP协议(涉及HTTP连接类型和HTTP消息格式)

系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…...

IDEA 2023.2.2 使用 Scala 编译报错 No scalac found to compile scala sources

一、问题 scala: No scalac found to compile scala sources 官网 Bug 链接 二、临时解决方案 Incrementality Type 先变成 IDEA 类型 Please go to Settings > Build, Execution, Deployment > Compiler > Scala Compiler and change the Incrementality type to …...

C51--PWN-舵机控制

PWM开发sg90舵机 1、简介 PWM(pulse width modulation)是脉冲宽度调制缩写。 通过对一系列脉冲的宽度进行调制,等效出所需要的波形(包含形状以及幅值)。对模拟信号电平进行数字编码,通过调节占空比的变化来…...

electron27+react18集成搭建跨平台应用|electron窗口多开

基于Electron27集成React18创建一个桌面端exe程序。 electron27-vite4-react18基于electron27结合vite4构建工具快速创建react18跨端应用实践。 版本列表 "vite": "^4.4.5" "react": "^18.2.0" "electron": "^27.0.1&…...

【k8s】kubeadm安装k8s集群

一、环境部署 master192.168.88.10docker、kubeadm、kubelet、kubectl、flannelnode01192.168.88.20docker、kubeadm、kubelet、kubectl、flannelnode02192.168.88.30docker、kubeadm、kubelet、kubectl、flannelhub.lp.com192.168.88.40 docker、docker-compose harbor-offli…...

三、虚拟机的迁移和删除

虚拟机的本质就是文件(放在文件夹的)。因此虚拟机的迁移很方便,可以把安装好的虚拟系统这个文件夹整体拷贝或者剪切到另外的位置使用。删除也很简单,使用vmware进行移除,再点菜单->从磁盘删除即可,或者手动删除虚拟系统对应的文…...

RabbitMQ的交换机(原理及代码实现)

1.交换机类型 Fanout Exchange(扇形)Direct Exchange(直连)opic Exchange(主题)Headers Exchange(头部) 2.Fanout Exchange 2.1 简介 Fanout 扇形的,散开的&#xff1…...