haproxy基础

HAProxy (High Availability Proxy) 是一款强大的开源负载均衡器和代理服务器。它主要用于提高 Web 应用程序和服务的可用性和性能。HAProxy 可以在 TCP 和 HTTP 层面上工作,并且支持多种负载均衡算法,广泛应用于高流量网站和大型分布式系统中。

社区版与企业版网站:[HAProxy Technologies ]

网站界面

企业版与社区版区别

HAProxy (High Availability Proxy)的主要功能:

1. 负载均衡:
   - 支持多种负载均衡算法,如轮询(Round Robin)、最少连接(Least Connections)、源地址哈希(Source Address Hashing)等。

2. 健康检查:
   - 自动检测后端服务器的健康状态,并在服务器出现故障时将其从负载均衡池中移除,以避免向故障服务器发送请求。

3. 会话保持:
   - 支持基于 cookie 的会话保持,确保来自同一个客户端的请求被定向到相同的后端服务器,以维持会话的一致性。

4. 高级路由:
   - 支持基于 URL、HTTP 头等的高级路由功能,允许根据请求的不同属性将流量分发到不同的后端服务器组。

5. SSL/TLS 加密:
   - 支持 SSL/TLS 加密,可以在 HAProxy 和客户端之间加密通信,减轻后端服务器的加密负担。

6. TCP 和 HTTP 层代理:
   - 可以在 TCP 层和 HTTP 层工作,支持 TCP 和 HTTP/HTTPS 协议。

7. 压缩和解压:
   - 支持对 HTTP 响应进行压缩,减少传输的数据量,提高带宽利用率。

8. 缓存:
   - 支持简单的缓存机制,可以缓存 HTTP 响应,减少后端服务器的负载。

9. 日志记录:
   - 提供详细的日志记录功能,可以记录请求和响应信息,用于调试和监控。

10. 监控和统计:
    - 提供详细的监控和统计信息,包括连接数、请求处理时间等,有助于管理员了解系统的运行状态。

11. 高可用性:
    - 可以通过集群配置实现高可用性,确保即使某个节点出现故障,服务仍可继续运行。

12. 灵活的配置:
    - 支持复杂的配置选项,可以根据需要进行高度定制。

13. 虚拟主机:
    - 支持虚拟主机,允许在一个 HAProxy 实例上托管多个不同的站点。

14. 访问控制:
    - 支持基于 IP 地址或 HTTP 头的访问控制,可以限制某些客户端访问特定的资源。

15. 错误页面:
    - 支持自定义错误页面,当请求无法成功处理时,可以显示友好的错误信息。

16. 重定向:
    - 支持 URL 重定向,可以在 HTTP 层面对 URL 进行重定向。

17. 请求和响应头部操作:
    - 支持修改请求和响应头部,例如添加、删除或修改 HTTP 头部字段。

 使用场景

1. Web 应用程序负载均衡:
   - 为高流量的 Web 应用程序提供负载均衡服务。

2. API 网关:
   - 作为 API 网关,为多个微服务提供统一的入口点。

3. 数据库负载均衡:
   - 可以用于数据库读写分离或负载均衡。

4. 邮件服务器负载均衡:
   - 为邮件服务器提供负载均衡和高可用性。

5. 云环境中的负载均衡:
   - 在云环境中部署 HAProxy 以实现横向扩展和负载均衡。

6. 混合环境负载均衡:
   - 在混合环境中(如私有云和公有云)部署 HAProxy 以统一管理负载均衡。

配置和管理和一些重要的global参数说明

- HAProxy 通过文本配置文件进行配置,该文件通常位于 `/etc/haproxy/haproxy.cfg`。
- 可以使用 `haproxy` 命令行工具启动、停止和重启服务。

实例练习

haproxy的基本部署

准备3台虚拟机 两台主机 一太haproxy服务器 三台虚拟机配置同一个网段的IP

haproxy IP :172.25.254.100 

web1,web2 ip

在haproxy主机上安装haproxy 软件

服务器上配置对应环境

listen webclusterbind *:80mode httpbalance roundrobinserver web1 172.25.254.10:80 server web2 172.25.254.20:80 

环境配置完成

常用全局参数练习

nbproc--(开启进程个数)

查看默认情况开启几个进程,有几行代表几个进程看到默认只有一个进程

pstree -p | grep haproxy

打开配置文件添加 nbproc   2

[root@haproxy ~]# vim /etc/haproxy/haproxy.cfg 

重启服务查看改变

[root@haproxy ~]# systemctl restart haproxy.service 
[root@haproxy ~]# pstree -p | grep haproxy

不过这样设置会造成CPU在短时间内频繁地在不同任务间切换,导致性能下降。

为了防止对应事件我们引入新的参数;

nbthread 开启多线程

注意:多进程与多线程不能同时开多个,同时打开多个会报错。

禁用之前的设置 ,和设置多线程;

重启服务


[root@haproxy ~]# systemctl restart haproxy.service 

这里现实什么查看什么要不然看不到

Proxies

frontend参数介绍

bind:   #指定HAProxy的监听地址,可以是IPV4或IPV6,可以同时监听多个IP或端口,可同时用于listen字段中bind [<address>]:<port_range> [, ...] [param*]#注意:如果需要绑定在非本机的IP,需要开启内核参数:net.ipv4.ip_nonlocal_bind=1

示例

frontend  webcluster               #可以采用后面形式命名:业务-服务-端口号bind :80,:8080bind 10.0.0.7:10080,:8801-8810,10.0.0.17:9001-9010mode  http|tcp              #指定负载协议类型use_backend <backend_name>  #调用的后端服务器组名称

网页重定向

编辑文件 

vim /etc/haproxy/haproxy.cfg

重启服务

测试

Socat 工具的使用

haproxy多进程热处理 示例1

haproxy的算法1

在主机中配置

测试

haproxy的算法2

测试

haproxy的算法3

测试

示例练习4: 状态页面监控

登陆后的监控界面

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数学建模】简单的优化模型-6 血管分支

背景&#xff1a;机体提供能量维持血液在血管中的流动&#xff0c;给血管壁以营养&#xff1b;克服血液流动的阻力&#xff0c;能量消耗与血管的几何形状有关。在长期进化中动物血管的几何形状已经在能量消耗最小原则下达到最优化。 问题&#xff1a;在能量消耗最小原则下&…

现代卷积神经网络

经典的CNN架构 一、早期的CNN架构 LeNet LeNet&#xff0c;&#xff08;也称为LeNet-5&#xff0c;5代表使用了2个卷积层和3个全连接层&#xff09;是一个经典的卷积神经网络架构&#xff0c;最初由Yann LeCun等人开发用于MNIST数据集手写数字&#xff08;灰度图像 输入通道…

nuPlan环境配置和开环及闭环评测

环境配置 下载nuplan mini 数据集 nuPlan Maps nuPlan Mini Split 解压并按照制定目录结构存储 ./nuplan/ |-- maps -- nuplan-v1.1-- splits-- mini为了不修改代码, 需软链目录 ln -s ./nuplan /data/sets/ 下载nuplan镜像 docker pull horizonrobotics/nuplan:cuda11.8.0…

Golang | Leetcode Golang题解之第327题区间和的个数

题目&#xff1a; 题解&#xff1a; func countRangeSum(nums []int, lower, upper int) int {var mergeCount func([]int) intmergeCount func(arr []int) int {n : len(arr)if n < 1 {return 0}n1 : append([]int(nil), arr[:n/2]...)n2 : append([]int(nil), arr[n/2:]…

Flink 实时数仓(八)【DWS 层搭建(二)流量域、用户域、交易域搭建】

前言 今天的任务是完成流量域最后一个需求、用户域的两个需求以及交易域的部分需求&#xff1b; 1、流量域页面浏览各窗口汇总表 任务&#xff1a;从 Kafka 页面日志主题读取数据&#xff0c;统计当日的首页和商品详情页独立访客数。 注意&#xff1a;一般我们谈到访客&…

H264基本原理

文章目录 引子 - 为什么要视频压缩I、 P、 B帧GOP图像序列H264编码介绍其它为什么视频格式一般为YUVH264 画质级别 参考资料 引子 - 为什么要视频压缩 一张为720x480的图像&#xff0c;用YUV420P的格式来表示&#xff0c; 其大小为&#xff1a; 720 * 480 * 1.5 约等于0.5MB。…

【深度学习与NLP】——注意力机制

1 注意力机制 1.1 学习目标 了解什么是注意力计算规则以及常见的计算规则.了解什么是注意力机制及其作用.掌握注意力机制的实现步骤. 什么是注意力: 我们观察事物时&#xff0c;之所以能够快速判断一种事物(当然允许判断是错误的), 是因为我们大脑能够很快把注意力放在事物最具…

使用Python和Flask构建简单的RESTful API

目录 环境准备 创建Flask应用 运行Flask应用 扩展功能&#xff1a;处理POST请求 注意事项 在Web开发中&#xff0c;RESTful API是一种广泛使用的架构风格&#xff0c;它允许客户端和服务器之间通过HTTP请求进行通信。Python的Flask框架以其轻量级和易于上手的特点&#xf…

XML动态sql查询当前时间之前的信息报错

如图&#xff0c;sql语句在数据库里可以正常运行但是再XML文件不可以正常运行&#xff0c;报错。 原因&#xff1a;在XML中小于号"<"是会被默认认定成文一个标签的开始&#xff0c;所以用小于号就会报错。 解决办法&#xff1a; 1.把表达式反过来改成大于号 2…

linux 源码部署polardb-x 错误汇总

前言 在linux 源码部署polardb-x 遇到不少错误&#xff0c;特在此做个汇总。 问题列表 CN 启动报错 Failed to init new TCP 详细错误如下 Caused by: Failed to init new TCP. XClientPool to my_polarx#267b21d8127.0.0.1:33660 now 0 TCP(0 aging), 0 sessions(0 runni…

MySQL的字符集配置

MySQL的字符集配置 创建database创建表插入数据查看字符集配置查看字符集的比较规则关于字符集的配置总结 创建database create database dbtest1; show databases;use dbtest1;创建表 create table employees(id int,name varchar(15));插入数据 insert into employees valu…

PDF转换器推荐:轻松将图片批量转为PDF

高质量的图片与文档管理已经逐渐成为了我们日常工作中不可或缺的一部分。为了防止图片在传输的过程中被压缩&#xff0c;我经常将他们转换为PDF格式。这次我给你推荐几个我常用的图片转PDF的小工具吧。 1.福昕PDF转换大师 链接一下>>https://www.pdf365.cn/pdf2word/ …

牛客JS题(三十二)Proxy计数器

注释很详细&#xff0c;直接上代码 涉及知识点&#xff1a; Proxy的基础使用set、deleteProperty及deleteProperty用法 题干&#xff1a; 我的答案 <!DOCTYPE html> <html><head><meta charsetutf-8></head><body><script type"t…

【C++】类和对象 ——中

1. 赋值运算符重载 1.1 运算符重载 • 当运算符被⽤于类类型的对象时&#xff0c;C语⾔允许我们通过运算符重载的形式指定新的含义。C规定类类型对象使⽤运算符时&#xff0c;必须转换成调⽤对应运算符重载&#xff0c;若没有对应的运算符重载&#xff0c;则会编译报错。 •…

clion开发stm32f4系列(2)————使用rt-thread提供的libc库时遇到的问题

CMakeList文件配置 问题1 解决方式 问题2&#xff08;在链接过程中&#xff0c;出现重复定义&#xff09; 解决 编译结果(解决ok)

android10 系统定制:增加应用锁功能

实现效果如下,上锁应用在桌面或最近任务打开弹出解锁界面,需要解锁成功才能打开应用。解锁界面可点击返回或Home键关闭,非上锁应用可直接打开。 基本思路:拦截系统应用启动,判断应用是否在锁住状态,弹出解锁Window。解锁完成后再正常启动应用。分为从桌面启动和最近任务…

量化投资策略与技术学习PART2:量化选股之风格轮动

市场上的投资者是有偏好的&#xff0c;有时候偏好于价值股&#xff0c;有时候偏好于成长股&#xff0c;有时偏于大盘&#xff0c;有时又偏于小盘&#xff0c;由于投资者的这种不同的交易行为&#xff0c;形成了市场风格&#xff0c;本节主要研究如何判断市场风格&#xff0c;以…

【C语言】预处理详解(下)

文章目录 前言6. 宏和函数的对比7. #和##7.1 #运算符7.2 ##运算符&#xff08;运用较少&#xff0c;了解即可&#xff09; 8. 命名的约定9. #undef &#xff08;了解即可&#xff09;10. 条件编译&#xff08;重点&#xff09;11. 头文件的包含11.1 头文件被包含的方式&#xf…

House of Rabbit

House of Rabbit 介绍&#xff1a; House of rabbit 是一种伪造堆块的技术&#xff0c;早在 2017 年已经提出&#xff0c;但在最近两个月才在 CTF 比赛中出现。我们一般运用在 fastbin attack 中&#xff0c;因为 unsorted bin 等其它的 bin 有更好的利用手段。 原理&#x…

接口基础知识6:详解http request body(一篇讲完常见请求体)

课程大纲 一、定义 HTTP请求体&#xff08;HTTP Request body&#xff09;&#xff1a;HTTP请求消息的可选部分&#xff0c;仅在请求方法支持且需要发送数据时使用。 POST方法、PUT方法有请求体&#xff0c;GET和HEAD方法没有请求体。 请求头和请求体之间会有一个空行&#…