linux之Haproxy

news/2024/4/28 0:33:26/文章来源:https://blog.csdn.net/m0_68858390/article/details/136905708

介绍

haproxy是一种开源的TCP和HTTP负载均衡代理服务器软件。客户端通过Haproxy代理服务器获得站点页面,而代理服务器收到客户请求后根据负载均衡的规则将请求数据转发给后端真实服务器

下载Haproxy

yum install haproxy -y

开启服务

systemctl start haproxy

配置文件

在主配置文件/etc/haproxy/haproxy.cfg中,由两大部分组成

global:全局配置

proxies:代理配置

defaults :为 frontend, backend, listen 提供默认配置
frontend :前端,相当于 nginx 中的 server {}
backend :后端,相当于 nginx 中的 upstream {}
listen :同时拥有 前端和后端配置

Haproxy的8种负载均衡 

在proxies中的backend模块中设置

1. 轮询 (Round Robin): 请求依次分发到每个后端服务器,按顺序进行负载均衡。

2. 加权轮询 (Weighted Round Robin): 可以为每个后端服务器设置权重,根据权重分配请求,以实现不同性能的服务器在负载均衡中发挥不同作用。

3. 最少连接 (Least Connection): 请求分发到当前连接数最少的后端服务器,以实现负载均衡。

4. 加权最少连接 (Weighted Least Connection): 与加权轮询类似,可以为每个后端服务器设置权重,但该模式根据连接数来决定负载均衡。

5. URI哈希 (URI Hash): 将请求的URI进行哈希,然后根据哈希值将请求分发到对应的后端服务器,确保相同URI的请求经常落在同一后端服务器上。

6. IP哈希 (IP Hash): 将请求的源IP进行哈希,然后根据哈希值将请求分发到对应的后端服务器,确保同一IP的请求经常落在同一后端服务器上。

7. URL参数哈希 (URL Parameter Hash): 与URI哈希类似,不过该模式是根据请求的URL参数进行哈希来实现负载均衡。

8. 复制(Backup): 当主要的服务器不可用时,请求会被转发到指定的备用服务器,用于故障转移和故障恢复。

Haproxy负载均衡实例(一)

Haproxy主机配置192.168.199.149,真实服务器为192.168.199.150,192.168.199.155,默认配置好nginx服务,自己能curl自己,显示自己的页面
关闭firewalld和selinux

修改主配置文件

vim /etc/haproxy/haprooxy.cgf(其他部分注释掉)
采取轮询模式,权重相等

修改rsyslog配置

vim /etc/rsyslog.conf
开启UDP,修改*.emarg  ,添加最后一行

开启远程日志

vim /etc/sysconfig/rsyslog

重启服务

systemctl restart rsyslog
systemctl restart haproxy

测试

访问192.168.199.149
155和150轮询成功
输入192.168.199/ha_stats

问题解决

访问192.168.199/ha_stats显示错误
查看haproxy服务状态显示没有成功启动
原因:/etc/haproxy/haproxy.cfg配置错误
修改

使用Keepalived实现HAProxy高可用

主机192.168.199.149        虚拟IP192.168.199.148

备机192.168.199.151

后端真实服务器192.168.199.150,192.168.199.155

主机+备机        keepalived,haproxy

真实服务器        nginx

关闭firewalld和selinux

主机配置

yum install keepalived

yum install hapoxyd

keepalived配置

vim /etc/keepalived/keepalived.cfg

haproxy配置

vim /etc/haproxy/haproxy.cfg

备机配置

直接把主机的配置传到备机上

在主机上执行

scp /etc/keepalived/keepalived.cfg  192.168.199.151:/etc/keepalived/keepalived.cfg

scp /etc/haproxy/haproxy.conf  192.168.199.151:/etc/haproxy/haproxy.conf

在备机的/etc/keepalivedkeepalived.cfg中把state 后面修改为BACKUP

priority修改为小于100(一般为90)

真实服务器配置

配置好nginx,开启服务并能curl自己显示界面

开启nginx服务

测试

在主机和备机分别开启服务

systemctl start keepalived

systemctl start haproxy

只有当system status 服务 显示成功启动成功才行(显示绿色running)

测试负载均衡

测试高可用

添加虚拟IP

ip addr add 192.168.199.148/32 dev ens33

主节点IP

备机IP

停掉主机的keepalived服务,查看ip是否漂移

发现没有漂移,访问192.168.199.148出现问题

检查后发现keepalived配置文件缺少检查配置,修改后如下

添加一个vrrp_script

在 Keepalived 中,vrrp_script 是用于定义状态检测脚本的配置项。通过 vrrp_script 配置,Keepalived 可以定期执行指定的状态检测脚本,用于检测特定服务或资源的可用性,从而决定节点的状态切换

再次测试

重启服务,再次测试,停止主机的haproxy服务

查看主机ip,实现漂移

备机IP

测试页面,成功

重新启动主机的haproxy服务,查看主机ip

148虚拟IP漂移回来(大概过几秒钟)

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

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

相关文章

如何在CentOS使用Docker搭建MinIO容器并实现无公网ip远程访问本地服务

文章目录 前言1. Docker 部署MinIO2. 本地访问MinIO3. Linux安装Cpolar4. 配置MinIO公网地址5. 远程访问MinIO管理界面6. 固定MinIO公网地址 前言 MinIO是一个开源的对象存储服务器,可以在各种环境中运行,例如本地、Docker容器、Kubernetes集群等。它兼…

困难重重!如何将超导量子计算机完好无损地搬进数据中心

内容来源:量子前哨(ID:Qforepost) 编辑丨慕一 编译/排版丨浪味仙 沛贤 深度好文:3700字丨18分钟阅读 如何把超导量子计算机部署到数据中心?数据中心运营商和量子公司面临着以前没有见过的重重难关。 首…

SqlServer找不到SQL Server Configuration Manager(配置管理)

1、Win键 R ,输入 compmgmt.msc 2、找到Sql Server配置管理器

自媒体用ChatGPT批量洗稿软件V5.9环境配置/软件设置教程【汇总】

大家好,我是淘小白~ 首先,感谢大家的支持~~ ChatGPT采集洗稿软件V5.9版本更新,此次版本更新修改增加了一些内容: 1、自定义多条指令,软件自动判断指令条数,进行输入 2、增加谷歌浏览多账号轮询&#xf…

阿里云4核8G云服务器优惠价格表,多配置报价

阿里云4核8G云服务器优惠价格955元一年,云服务器ECS通用算力型u1实例。2024年腾讯云服务器优惠价格表,一张表整理阿里云服务器最新报价,阿里云服务器网整理云服务器ECS和轻量应用服务器详细CPU内存、公网带宽和系统盘详细配置报价单&#xff…

面向对象的学习

封装 //用来描述一类事物的类,专业叫做:javabean类 //在javabean类是不写main方法的//一个java文件中可以定义多个类,且只能一个类是public修饰,而且public修饰的类名必须成为代码的文件名 ://在类中一般无需指定初始化值 存在默…

智慧光伏:企业无纸化办公

随着科技的快速发展,光伏技术不仅成为推动绿色能源革命的重要力量,更在企业办公环境中扮演起引领无纸化办公的重要角色。智慧光伏不仅为企业提供了清洁、可持续的能源,更通过智能化的管理方式,推动企业向无纸化办公转型&#xff0…

鸿蒙APP开发:【ArkTS类库多线程】TaskPool和Worker的对比(2)

askPool运作机制 图1 TaskPool运作机制示意图 TaskPool支持开发者在主线程封装任务抛给任务队列,系统选择合适的工作线程,进行任务的分发及执行,再将结果返回给主线程。接口直观易用,支持任务的执行、取消。工作线程数量上限为4。…

基于Python实现多功能翻译助手(下)

为了将上述步骤中的功能增强与扩展具体化为代码,我们将实现翻译历史记录功能、翻译选项配置以及UI的改进。 翻译历史记录功能 import json # 假设有一个用于存储历史记录的json文件 HISTORY_FILE translation_history.json # 初始化历史记录列表 translati…

Element-Plus下拉菜单边框去除教程

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

python中函数那点事

1.求一个十进制的数值的二进制的0、1的个数 。 2.实现一个用户管理系统(要求使用容器保存数据)[{name: xxx, pass: xxx, ... ... },{},{}] 3.求1~100之间不能被3整除的数之和 4.给定一个正整数N,找出1到N(含)之间所有质数的总和 5.计算PI(公式如下:PI4(1-1/31/5-1/71/9-1......…

简单了解原型模式

什么是原型模式 区别于单例模式,原型模式的一个类可以有多个实例化的对象。 原型模式通过拷贝来产生新的对象,而不是new,并且可以根据自己的需求修改对象的属性。 实现Cloneable接口实现拷贝 而拷贝又分为浅拷贝和深拷贝,两者在…

Codigger开发者篇:开启全新的开发体验(二)

在数字化浪潮中,开发者们始终在追求更加高效、便捷的开发工具与环境。Codigger,作为新一代开发、运营、使用私人应用的分布式操作系统,正是为这些追求者们量身打造的利器,Codigger是一个跨时代的颠覆式的创新。今天,我…

【python】flask执行上下文context,请求上下文和应用上下文原理解析

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

JAVA------基础篇

java基础 1.JDK JDK :java development kit JRE:java runtime environment JDK包含JRE java跨平台:因为java程序运行依赖虚拟机,虚拟机需要有对应操作系统的版本,而jre中有虚拟机。 当你想要在Linux系统下运行,则需要…

硅谷甄选项目笔记

硅谷甄选运营平台 此次教学课程为硅谷甄选运营平台项目,包含运营平台项目模板从0到1开发,以及数据大屏幕、权限等业务。 此次教学课程涉及到技术栈包含***:vue3TypeScriptvue-routerpiniaelement-plusaxiosecharts***等技术栈。 一、vue3组件通信方式 通信仓库地…

华为ensp中vrrp虚拟路由器冗余协议 原理及配置命令

CSDN 成就一亿技术人! 作者主页:点击! ENSP专栏:点击! CSDN 成就一亿技术人! ————前言————— VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议&#xff0…

9.HelloWorld案例常见问题

文章目录 一、BUG二、BUG的解决三、HelloWorld常见问题 一、BUG BUG(小甲虫)。计算机刚开始出现的时候,因为体积比较大,一些小虫子很容易转进去。有一天有一只蟑螂钻到了计算机当中,从而导致计算机不能正常运行&#…

SQLiteC/C++接口详细介绍sqlite3_stmt类(八)

返回:SQLite—系列文章目录 上一篇:SQLiteC/C接口详细介绍sqlite3_stmt类(七) 下一篇: SQLiteC/C接口详细介绍sqlite3_stmt类(九) 27、sqlite3_column_int 函数 sqlite3_column_int 用于返…

[Flutter] Flutter多环境版本管理器Puro, 可是试试替换Fvm了

flutter2/3版本切换,除了fvm,还可以看看puro Puro官网 Mac安装方式 curl -o- https://puro.dev/install.sh | PURO_VERSION"1.4.5" bash因为puro安装flutter需要依赖git, 请确保mac支持git命令行 brew install git快速开始 先看效果 1.创建flutter环境 这里的…