全网最详细haproxy配置

news2024/11/13 22:38:10

Haproxy是法国人Willy Tarreau开发的一款高性能的TCP和HTTP负载均衡器,具有广泛的功能和特性,使其在负载均衡和反向代理领域备受推崇。以下是对Haproxy的详细介绍:

一、基本概述

定义:Haproxy是一个开源的高性能的反向代理或者说是负载均衡服务软件,能够处理大量并发连接,提供高可用性和负载均衡功能。

功能:支持双机热备、虚拟主机、基于TCP和HTTP应用代理等功能,同时内置了监控和统计功能,可以实时获取服务器的状态和性能指标。

应用场景:特别适用于负载特大的web站点,这些站点通常又需要会话保持或七层处理。

二、核心特性

高性能

使用异步事件驱动的架构,能够处理非常高的并发连接数,支持数以万计的并发连接。

较低的延迟和高吞吐量,使得Haproxy在处理大规模网络请求时表现优异。

高可靠性

提供无单点故障的服务,确保服务的高可用性。

能够对后端服务器进行健康检查,及时发现并排除出故障的服务器。

负载均衡

可以将流量均匀地分配到后端服务器上,提高系统的性能和可扩展性。

支持多种负载均衡算法,如轮询(roundrobin)、最少连接数(leastconn)等,可以根据实际需求选择合适的算法。

会话保持

支持多种会话保持机制,如基于客户端IP的Hash计算、基于cookie的会话保持等,确保用户请求能够被转发到正确的后端服务器上。

SSL终结和加速

可以在前端进行SSL终结,解密和加密SSL/TLS流量,从而减轻后端服务器的负担并提升性能。

可定制性

提供了丰富的配置选项和灵活的扩展机制,使得用户可以根据实际需求进行定制化配置和扩展。

支持多种协议

支持HTTP、HTTPS、TCP、SMTP等多种协议,可以满足不同场景下的需求。

三、工作模式

Haproxy的工作模式一般有两种:TCP模式和HTTP模式。

TCP模式:实例运行于TCP模式,在客户端和服务器端之间将建立一个全双工的连接,且不会对7层报文做任何类型的检查,只能以简单模式工作。通常为SSL、SSH、SMTP等应用使用。

HTTP模式:实例运行于HTTP模式,客户端请求在转发至后端服务器之前将被深度分析,所有不与RFC格式兼容的请求都会被拒绝。适用于需要HTTP层处理的场景。

haproxy实验环境的配置

haproxy的网络环境配置

webserver1和webserver2的网络环境的配置

将webserver1和webserver2的文件导入nginx的默认发布文件

在webserver1和webserver2上分别打开nginx的服务

最后在haproxy主机上进行测试,访问成功环境配置就搞定了

1.haproxy的基本部署方法以及负载均衡的实现

在haproxy主机上安装haproxy

查看haproxy的配置文件并进行配置

2.haproxy的全局配置参数以及日志分离

查看haproxy的默认进程

现在进行多进程的设置

开启两个以后查看

查看子进程中的线程数

同时设定多线程和多进程,会产生互斥

互斥后重启服务就会报错

现在将一个注释掉

然后重启服务后在进行查看

自定义haproxy的日志

进入配置文件进行配置,同时还需要开启udp协议

3.haproxy-proxies中的常用配置参数

check:对指定的real进行健康状态检查  inter:健康状态检查间隔时间 默认为2000ms  fall:后端服务器从线上转为线下的连续失败次数,默认为3 rise:后端服务器从下线恢复上线的检查的连续有效次数,默认为2 weight:默认为1,最大值为256,0(状态为蓝色)表示不参与负载均衡,但仍接受持久连接                   

设置backup,设置为web_sorry还要把webserver1和webserver2的nginx下线

先在haproxy主机上安装httpd

进入httpd的配置文件将端口号改为8080

然后开启httpd服务

给index.html文件写入内容

然后进入haproxy配置文件写入

然后进行访问

要进行维护先将一台下线,使用disabled:将后端服务器标记为不可用状态,即维护状态

下线的为172.25.254.10,所以访问就没有10

然后进入配置文件将disabled删掉10又可以访问

redirect prefix http://www.baidu.com/ 表示将请求定向定向到一个指定网站

在浏览器上访问172.25.254.100 定向到了百度

maxconn:当前后端server的最大并发连接数

4.haproxy的热更新方法

给该文件提权进行查看

在haproxy上安装socat(动态调整haproxy中的参数)

查看haproxy的状态

查看服务器的状态

查看当前权重,更改权重为1,更改后查看

下线后端服务器下线后查看全为172.25.254.20

上线后端服务器,上线后查看恢复正常

haproxy多进程热处理

重启服务后查看

5.haproxy的算法

haproxy的静态算法,是不能修改权重

haproxy的动态算法

roundrobin算法,是谁空闲了就给谁

leastconn:加权最少连接的动态,并且支持慢启动

haproxy的其他算法

source:当后端服务器数据量发生变化时,会导致很多用户的请求转发至新的后端服务器

进行访问时全部掉到172.25.254.20

一致性hash:当服务器的总权重发生变化时,对调度结果影响时局部的,不会引起大的变动hash(0)mod n 该hash算法是动态的,支持使用socat等工具进行在线权重调整,支持慢启动

uri:基于用户请求的uri的左半部分或整个uri做hash,再将hash结果对总权重进行取模后根据最终结果将请求转发到后端指定服务器,适用于后端是缓存服务器场景

进行访问

hdr:针对每个http头部(header)请求中的指定信息做hash

6.haproxy的状态页面监控

7.haproxy-基于cookie的会话保持

把hash打开

进行基于cookie的会话保持,cookie value:为当前server指定cookie值,实现基于cookie的会话粘性,相对于基于source地址hash调度算法对客户端的粒度更精准,但同时也加大了haproxy负载

8.haproxy-ip透传

把该条注释掉,进行访问

在172.25.254.20主机上访问日志,看不到后台支持的服务,把该条打开,做透传,就能看到是100进行访问的

在httpd上做透传,在webserver1主机上将nginx服务关闭掉,然后安装httpd

在haproxy主机中访问

在webserver1查看日志编辑httpd主配置文件在haproxy主机上进行访问

四层代理

在webserver2的nginx配置文件中进行配置

再次进行访问就可以访问到20

在webserver2的nginx配置文件中添加

9.haproxy的访问控制列表应用

添加ACL列表保存然后进行访问在计算机中查看文件然后进行访问即可

10.haproxy-自动筛选错误页面内容

先将webserver1的httpd服务和webserver2的nginx服务都暂停

然后使用浏览器进行访问

来到haproxy主机过滤一下配置文件,找到503的,首先在haproxy文件下建立一个文件,然后在新建文件底下再次新建一个503.http文件在此文件中写入内容把该文件加入haproxy主配置文件中,保持与退出并重启服务

然后在浏览器上再次访问172.25.254.100

11.haproxy的四层负载示例

首先在webserver1和webserver2上安装数据库

进入数据库配置文件修改id在webserver1和webserver2上都要修改

然后就可以实现远程登录

进入haproxy的主配置文件添加

12.haproxy-https的加密访问

证书制作

将文件导入,公钥和私钥都有了

进入haproxy主配置文件进行写入

查看443端口已打开

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

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

相关文章

15个提升学术写作的 ChatGPT 高效技巧

不束手无策地面对空白页面这里有 15 个充满灵感的 ChatGPT 提示,帮助你找到研究灵感、建有力论据、撰写条理清晰的文章,突破创作的障碍,提高学术写作的效率。 学术写作充满挑战。要创作出优秀的文章,必须探索新思维,并…

Python OpenCV 影像处理:边缘检测

►前言 上篇介绍使用OpenCV Python findContours() 函数用于在二值化影像中寻找连通的白色区域,并返回一系列点的集合来表示找到的轮廓。本篇将介绍基于计算影像的梯度,通过在影像中找到梯度值的变化来识别边缘,边缘检测通常用于预处理步骤&…

XXL-JOB分布式定时任务框架快速入门

文章目录 前言定时任务分布式任务调度 1、XXL-JOB介绍1.1 XXL-JOB概述1.2 XXL-JOB特性1.3 整体架构 2、XXL-JOB任务中心环境搭建2.1 XXL-JOB源码下载2.2 IDEA导入xxljob工程2.3 初始化数据库2.4 Docker安装任务管理中心 3、XXL-JOB任务注册测试3.1 引入xxl-job核心依赖3.2 配置…

rust 编译时报错:type annotations needed for Box

如下图所示: 解决方法: 升级time的版本: cargo update -p time

【Python基础】Python入门基础教程(非常详细){附带源码}

引言 Python 是一种广泛使用的高级编程语言,因其简洁的语法和强大的功能库而受到开发者的喜爱。本教程将带你从零开始,逐步掌握 Python 的基础知识,并通过附带的源码和表格来加深理解。 点击免费领取《CSDN大礼包》:Python入门到…

c语言基础知识详解,c语言入门必看

在线书籍:54笨鸟 前言 C 语言是一门抽象的、面向过程的语言,C 语言广泛应用于底层开发,C 语言在计算机体系中占据着不可替代的作用,可以说 C 语言是编程的基础,也就是说,不管你学习任何语言,都…

最详细!教你学习haproxy七层代理

一、工作原理 (1)包括 监听端口:HAProxy 会在指定的端口上监听客户端的请求。 例如,它可以监听常见的 HTTP 和 HTTPS 端口,等待客户端连接。请求接收:当客户端发起请求时,HAProxy 接收到请求。…

Gin框架接入pyroscope完美替代pprof实现检测内存泄露

传统检测内存泄露可以看一下我这篇文章Gin框架接入Prometheus,grafana辅助pprof检测内存泄露-CSDN博客 pyroscope被Grafana收购,GPT来总结一下pyroscope的强大之处🐶 pyroscope github地址 pyroscope与grafana的安装 docker compose安装,这里我们其实…

GET和POST这两种常用的HTTP请求方法的区别

GET和POST是HTTP协议中最常用的两种请求方法,它们在使用场景、安全性、数据传输等方面有很大的不同。让我从以下几个方面来比较GET和POST: 1.「用途和语义」 「GET」: 主要用于获取资源 应该是幂等的,即多次请求应该返回相同的结果 通常用…

超详细!!!electron-vite-vue开发桌面应用之开启调试工具(二)

云风网 云风笔记 云风知识库 上篇已经初步搭建完项目,这次配置比较重要的一部分,那就是开启调试工具,这是开发项目比较重要且基础的部分 vite.config.ts配置更新 main: {// Shortcut of build.lib.entry.entry: electron/main.ts,onstart(ar…

2003-2023年高铁数据高铁开通时间数据

2003-2023年高铁数据高铁开通时间数据 1、时间:2003-2023年 2、来源:整理自高铁航线数据库(Chinese High-speed Rail and Airline Database,CRAD) 3、指标:高铁站名称、开通时间、所在省份、所在城市、所…

通过网关将数据上传到两台eqmx服务器上

我们是通过WAN 来读取数据。 线连接以后打开 然后要配置上去服务器 在这里遇到的问题是我自己搭emqx服务器的时候,没有固定ip地址,这个ip地址要通过ipconfig来获取,然后将其设置为静态IP地址,才可以的。让后emqx服务器还要重新启…

美股开户:新手投资者的完整入门教程

炒美股是许多投资者心中的梦想,但对于新手小白来说,如何开户炒美股可能会显得有些复杂和困难。本文将为您提供一份完整的入门教程,详细介绍从选择券商到完成开户的步骤,帮助您顺利进入美股市场。 选择合适的券商 在开户之前&…

【Linux基础】Linux中的开发工具(1)--yum和vim

目录 ✈️前言一,Linux 软件包管理器 yum1. 什么是软件包2. 如何安装软件3. 如何卸载软件 二,Linux编辑器-vim使用1. vim的基本概念1.1 命令/正常/普通模式1.2 插入模式1.3 底行模式 三,vim命令模式命令集1. 移动光标2. 删除字符3. 复制4. 替…

后端调优——分布式锁选型——入门

文章目录 引言正文分布式锁的定义分布式锁的具体应用场景如何实现分布式锁主动轮询型分布式锁实现思路一、MySQL分布式锁二、Redis分布式锁 监听回调型分布式锁Etcd分布式锁Zookeeper分布式锁 锁的对比 总结 引言 最近面试,一直被问到分布式锁,然后仅仅…

基于Martin实现MapboxGL自定义底图

概述 本文分享基于Martin实现MapboxGL底图的自定义。 实现后效果 Martin简介 Martin 是一个瓦片服务器,它能够从 PostGIS 数据库、PMTiles(本地或远程)以及 [MBTiles] (https://github.com/mapbox/mbtiles-spec) 文件中快速生成并提供矢量瓦…

七人共享拼团:社交电商的裂变新引擎

在当今电商市场中,七人共享拼团模式以其独特的社交属性和裂变机制,正成为一股不可忽视的力量。这一模式巧妙融合了社交电商的互动性与拼购的实惠性,通过平台利润回馈用户的方式,构建了一个既人性化又高效的奖励体系,旨…

QT 添加程序图标

1. 使用免费网站将其他图片格式转化成ico格式 Ico转换器 : https://cn.free-converter.com/ico-converter 2.qmake项目添加程序图标 在.pro文件内添加语句,如下图 RC_ICONS favicon.ico2.1 程序图标文件添加到项目目录内 2.2 通过windeployqt xxx.exe构建生成的…

动手研发实时口译系统

重磅推荐专栏: 《大模型AIGC》 《课程大纲》 《知识星球》 本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域,包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用,以及与之相关的人工智能生成内容(AIGC)技术。通过深入的技术解析和实践经…

一文通晓 AI 框架

首先深度学习是机器学习研究领域中的一种范式,而深度学习的概念源于对人工神经网络的研究,很多深度学习算法都使用神经网络进行表示,因为神经网络的性能精度和通用效果都非常好,于是业界习惯性地把深度学习算法等同于 AI。 深度学…