haproxy实现MySQL服务器负载均衡
1.环境准备
准备好下面四台台服务器:
| 主机名 | IP | 角色 |
| open-Euler1 | 192.168.121.150 | mysql-server1 |
| openEuler-2 | 192.168.121.151 | mysql-server2 |
| openEuler-3 | 192.168.121.152 | client |
| Rocky8-1 | 192.168.121.160 | haproxy |
2.mysql服务器配置
1.下载mariadb
#下载mariadb
[root@open-Euler2 ~]# yum install mariadb-server -y
2.创建用户并授权
MariaDB [(none)]> RENAME USER 'test'@'%' TO 'test'@'%';
Query OK, 0 rows affected (0.001 sec)
3.配置server_id便于测试
在/etc/my.cnf配置文件的[mysqld]下增加一行server_id,例如:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/run/mariadb/mariadb.pid
server-id=150
然后重启服务:
systemctl restart mariadb
注:两台服务器的server-id不能一样,另外一台我配成了server-id=150
3.haproxy安装和配置
1.下载合适版本的haproxy
下载链接
我这里是源码编译安装haproxy-3.0.8-tar.gz
当然也可以用命令在线安装
curl -O https://www.haproxy.org/download/3.0/src/haproxy-3.0.8.tar.gz
解压:
[root@Rocky8 ~]# tar -xf haproxy-3.0.8.tar.gz -C /usr/local/src/
[root@Rocky8 ~]# cd /usr/local/src/haproxy-3.0.8/
[root@Rocky8 haproxy-3.0.8]# ll
total 1736
drwxrwxr-x. 7 root root 79 Jan 29 09:38 addons
drwxrwxr-x. 12 root root 4096 Jan 29 09:38 admin
-rw-rw-r--. 1 root root 14046 Jan 29 09:38 BRANCHES
-rw-rw-r--. 1 root root 345 Jan 29 09:38 BSDmakefile
-rw-rw-r--. 1 root root 1528884 Jan 29 09:38 CHANGELOG
-rw-rw-r--. 1 root root 55775 Jan 29 09:38 CONTRIBUTING
drwxrwxr-x. 17 root root 4096 Jan 29 09:38 dev
drwxrwxr-x. 5 root root 4096 Jan 29 09:38 doc
drwxrwxr-x. 4 root root 4096 Jan 29 09:38 examples
drwxrwxr-x. 5 root root 47 Jan 29 09:38 include
-rw-rw-r--. 1 root root 43394 Jan 29 09:38 INSTALL
-rw-rw-r--. 1 root root 2029 Jan 29 09:38 LICENSE
-rw-rw-r--. 1 root root 5628 Jan 29 09:38 MAINTAINERS
-rw-rw-r--. 1 root root 54751 Jan 29 09:38 Makefile
-rw-rw-r--. 1 root root 1093 Jan 29 09:38 README
drwxrwxr-x. 35 root root 4096 Jan 29 09:38 reg-tests
drwxrwxr-x. 2 root root 4096 Jan 29 09:38 scripts
drwxrwxr-x. 2 root root 8192 Jan 29 09:38 src
-rw-rw-r--. 1 root root 10 Jan 29 09:38 SUBVERS
drwxrwxr-x. 5 root root 41 Jan 29 09:38 tests
-rw-rw-r--. 1 root root 37 Jan 29 09:38 VERDATE
-rw-rw-r--. 1 root root 6 Jan 29 09:38 VERSION
安装基础命令及其编译依赖环境
[root@Rocky8 haproxy-3.0.8]# yum -y install gcc openssl-devel pcre-devel systemd-devel make
[root@Rocky8 ~]# curl -L -R -O http://www.lua.org/ftp/lua-5.4.7.tar.gz
[root@Rocky8 ~]# tar xvf lua-5.4.7.tar.gz -C /opt/
[root@Rocky8 ~]# cd /opt/lua-5.4.7
[root@Rocky8 ~] lua-5.4.7]# make linux test
编译安装
[root@Rocky8 haproxy]# cd /usr/local/src/haproxy-3.0.8/
[root@Rocky8 haproxy-3.0.8]# make ARCH=x86_64 TARGET=linux-glibc USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 USE_LUA=1 LUAINC=/opt/lua-5.4.7/src LUA_LIB=/opt/lua-5.4.7/src #编译
[root@Rocky8 haproxy-3.0.8]# make install PREFIX=/apps/haproxy/ #安装
[root@Rocky8 haproxy-3.0.8]# tree /apps #查看生成的文件
/apps
└── haproxy├── doc│ └── haproxy│ ├── 51Degrees-device-detection.txt│ ├── architecture.txt│ ├── configuration.txt│ ├── cookie-options.txt│ ├── DeviceAtlas-device-detection.txt│ ├── intro.txt│ ├── linux-syn-cookies.txt│ ├── lua.txt│ ├── management.txt│ ├── netscaler-client-ip-insertion-protocol.txt│ ├── network-namespaces.txt│ ├── peers.txt│ ├── peers-v2.0.txt│ ├── proxy-protocol.txt│ ├── regression-testing.txt│ ├── seamless_reload.txt│ ├── SOCKS4.protocol.txt│ ├── SPOE.txt│ └── WURFL-device-detection.txt├── sbin│ └── haproxy└── share└── man└── man1└── haproxy.17 directories, 21 files
2.验证haproxy版本
[root@Rocky8 haproxy-3.0.8]# haproxy -v
HAProxy version 3.0.8-6036c31 2025/01/29 - https://haproxy.org/
Status: long-term supported branch - will stop receiving fixes around Q2 2029.
Known bugs: http://www.haproxy.org/bugs/bugs-3.0.8.html
Running on: Linux 4.18.0-553.el8_10.x86_64 #1 SMP Fri May 24 13:05:10 UTC 2024 x86_64
3.HAProxy启动脚本
[root@Rocky8 haproxy-3.0.8]# cat /usr/lib/systemd/system/haproxy.service
[Unit]
Description=HAProxy Load Balancer
After=syslog.target network.target[Service]
ExecStartPre=/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -f /etc/haproxy/conf.d -c -q
ExecStart=/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -f /etc/haproxy/conf.d -p /var/lib/haproxy/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID[Install]
WantedBy=multi-user.target默认缺少配置文件,无法启动创建自定义的配置文件:[root@Rocky8 haproxy-3.0.8]# mkdir /etc/haproxy
[root@Rocky8 haproxy-3.0.8]# cat /etc/haproxy/haproxy.cfg
globalmaxconn 100000chroot /apps/haproxystats socket /var/lib/haproxy/haproxy.sock mode 600 level admin#uid 99#gid 99user haproxygroup haproxydaemon#nbproc 4#cpu-map 1 0#cpu-map 2 1#cpu-map 3 2#cpu-map 4 3pidfile /var/lib/haproxy/haproxy.pidlog 127.0.0.1 local2 infodefaultsoption http-keep-aliveoption forwardformaxconn 100000mode httptimeout connect 300000mstimeout client 300000mstimeout server 300000mslisten statsmode httpbind 0.0.0.0:9999stats enablelog globalstats uri /haproxy-statusstats auth haadmin:123456
4.启动haproxy
[root@Rocky8 haproxy-3.0.8]# mkdir /var/lib/haproxy
[root@Rocky8 haproxy-3.0.8]# useradd -r -s /sbin/nologin -d /var/lib/haproxy haproxy
[root@Rocky8 haproxy-3.0.8]# systemctl enable --now haproxy
5.验证haproxy状态
[root@Rocky8 haproxy-3.0.8]# systemctl status haproxy.service
● haproxy.service - HAProxy Load BalancerLoaded: loaded (/usr/lib/systemd/system/haproxy.service; disabled; vendor preset: disabled)Active: active (running) since Sat 2025-02-15 17:29:43 CST; 1h 2min agoProcess: 12629 ExecStartPre=/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -f /etc/haproxy/conf.d -c -q (code=exited, status=0/SU>Main PID: 12632 (haproxy)Tasks: 3 (limit: 23007)Memory: 20.2MCGroup: /system.slice/haproxy.service├─12632 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -f /etc/haproxy/conf.d -p /var/lib/haproxy/haproxy.pid└─12634 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -f /etc/haproxy/conf.d -p /var/lib/haproxy/haproxy.pidFeb 15 17:29:43 Rocky8 systemd[1]: Starting HAProxy Load Balancer...
Feb 15 17:29:43 Rocky8 systemd[1]: Started HAProxy Load Balancer.
Feb 15 17:29:43 Rocky8 haproxy[12632]: [NOTICE] (12632) : haproxy version is 3.0.8-6036c31
Feb 15 17:29:43 Rocky8 haproxy[12632]: [NOTICE] (12632) : path to executable is /usr/sbin/haproxy
Feb 15 17:29:43 Rocky8 haproxy[12632]: [ALERT] (12632) : config : parsing [/etc/haproxy/haproxy.cfg:15] : 'pidfile' already spe>
Feb 15 17:29:43 Rocky8 haproxy[12632]: [WARNING] (12632) : config : 'option forwardfor' ignored for proxy 'web_test' as it requir>
Feb 15 17:29:43 Rocky8 haproxy[12632]: [WARNING] (12632) : config : 'option forwardfor' ignored for frontend 'mysql' as it requir>
Feb 15 17:29:43 Rocky8 haproxy[12632]: [WARNING] (12632) : config : 'option forwardfor' ignored for backend 'mysqlsrvs' as it req>
Feb 15 17:29:43 Rocky8 haproxy[12632]: [NOTICE] (12632) : New worker (12634) forked
Feb 15 17:29:43 Rocky8 haproxy[12632]: [NOTICE] (12632) : Loading success.[root@Rocky8 haproxy-3.0.8]# pstree -p |grep haproxy|-haproxy(12632)---haproxy(12634)---{haproxy}(12635)
6.查看haproxy的状态页面
浏览器访问:http://192.168.121.160:9999/haproxy-status 这里的ip改成你的haproxy服务器ip

注:登录该界面需要用户名和密码,我这里用户名和密码在配置文件/etc/haproxy/haproxy.cfg设置成了
账号:hadmin
密码:123456
7.配置haproxy实现MySQL服务器负载均衡
在/etc/haproxy/haproxy.cfg追加以下内容:
frontend mysqlbind :3306mode tcpdefault_backend mysqlsrvs
backend mysqlsrvsmode tcpbalance leastconnserver mysql1 192.168.121.150:3306server mysql2 192.168.121.151:3306
8.测试

相关文章:
haproxy实现MySQL服务器负载均衡
1.环境准备 准备好下面四台台服务器: 主机名IP角色open-Euler1192.168.121.150mysql-server1openEuler-2192.168.121.151mysql-server2openEuler-3192.168.121.152clientRocky8-1192.168.121.160haproxy 2.mysql服务器配置 1.下载mariadb #下载mariadb [rootop…...
Windows桌面系统管理5:Windows 10操作系统注册表
Windows桌面系统管理0:总目录-CSDN博客 Windows桌面系统管理1:计算机硬件组成及组装-CSDN博客 Windows桌面系统管理2:VMware Workstation使用和管理-CSDN博客 Windows桌面系统管理3:Windows 10操作系统部署与使用-CSDN博客 Wi…...
CSDN文章质量分查询系统【赠python爬虫、提分攻略】
CSDN文章质量分查询系统 https://www.csdn.net/qc 点击链接-----> CSDN文章质量分查询系统 <------点击链接 点击链接-----> https://www.csdn.net/qc <------点击链接 点击链接-----> CSDN文章质量分查询系统 <------点击链接 点击链…...
Mysql测试连接失败
解决方案 1 将mysql.exe(C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe)配置到系统环境变量 2 管理员权限启动cmd 输入 3 ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY 123456; 4 FLUSH PRIVILEGES;...
DeepSeek(AI)如何赋能智能漏洞扫描与利用的思考
当下,网络安全威胁持续演变,从简单恶意软件传播发展为结合人工智能、大数据分析的APT,对个人、企业及政府关键信息基础设施构成严重挑战。 漏洞作为网络安全薄弱点,数量和种类随软件系统升级与网络架构复杂化急剧增加,…...
Springboot使用Redis发布订阅自动更新缓存数据源
背景 当项目有很多数据源的时候,通常会在启动的时候就把数据源连接加载缓存上,当数据源进行变更后如何自动实时将缓存的数据源进行更新呢?如果是单个项目直接调接口方法就行了,但是涉及到分布式多个系统呢? 解决方案…...
rust学习六、简单的struct结构
一、结构定义 struct-翻译为结构/结构体 总体上有两种定义方式:带有详细属性名的;不带属性名(元组) 从工程角度出发,并不推荐不带属性的定义方式,因为不友好。希望rust后面不要搞类似好像很友好ÿ…...
.NET周刊【2月第2期 2025-02-09】
国内文章 开箱即用的.NET MAUI组件库 V-Control 发布了! https://www.cnblogs.com/jevonsflash/p/18701494 文章介绍了V-Control,一个适用于.NET MAUI的组件库。作者计划将其开源,强调.NET MAUI是生产力强的跨平台移动开发工具。V-Control提供多种组件…...
Linux的基础指令和环境部署,项目部署实战(下)
目录 上一篇:Linxu的基础指令和环境部署,项目部署实战(上)-CSDN博客 1. 搭建Java部署环境 1.1 apt apt常用命令 列出所有的软件包 更新软件包数据库 安装软件包 移除软件包 1.2 JDK 1.2.1. 更新 1.2.2. 安装openjdk&am…...
【分布式理论15】分布式调度1:分布式资源调度的由来与过程
文章目录 一、操作系统的资源调度:从单核到多核二、 分布式系统的资源调度:从单台服务器到集群三、 固定资源映射四、 动态资源分配:灵活的任务-资源匹配五、 资源调度过程:从申请到执行 本文主要讨论主题: 从操作系统…...
Python常见面试题的详解12
1. hasattr ()、getattr ()、setattr () 函数是如何使用的? 要点 这三个函数用于对对象的属性进行检查、获取和设置操作,是 Python 中进行对象属性动态操作的重要工具。 hasattr():用于检查对象是否具有指定属性或方法。 getattr()&#x…...
未来AI方向落地场景:小语言模型,super_private_agent
未来AI方向落地场景:小语言模型,super_private_agent 目录 未来AI方向落地场景:小语言模型,super_private_agent小语言模型super - private - agent(注重隐私的智能代理)碳基生命和硅基生命交互界面面向agent的专用交互协议和数据接口从web平台经济到网络平台举例说明社交…...
使用 PyTorch 实现标准卷积神经网络(CNN)
卷积神经网络(CNN)是深度学习中的重要组成部分,广泛应用于图像处理、语音识别、视频分析等任务。在这篇博客中,我们将使用 PyTorch 实现一个标准的卷积神经网络(CNN),并介绍各个部分的作用。 什…...
开题报告——基于Spring Boot的垃圾分类预约回收系统
关于本科毕业设计(论文)开题报告的规定 为切实做好本科毕业设计(论文)的开题报告工作,保证论文质量,特作如下规定: 一、开题报告是本科毕业设计(论文)的必经过程,所有本科生在写作毕业设计(论文)之前都必须作开题报告。 二、开题报告主要检验学生对专业知识的驾驭能…...
YOLOv5 目标检测优化:降低误检与漏检
1. 引言 在目标检测任务中,误检(False Positive, FP)和漏检(False Negative, FN)是影响检测性能的两个主要问题。误检意味着模型检测到了不存在的目标,而漏检则指模型未能检测到真实存在的目标。本文将介绍…...
网络安全治理模型
0x02 知识点 安全的目标是提供 可用性 Avialability机密性 confidentiality完整性 Integrity真实性 Authenticity不可否认性 Nonrepudiation 安全治理是一个提供监督、问责和合规性的框架 信息安全系统 Information Security Management System ISMS 策略,工作程…...
网络原理-
文章目录 协议应用层传输层网络层 数据链路层 协议 在网络通信中,协议是非常重要的概念.协议就是一种约定. 在网络通信过程中,对协议进行了分层 接下来就按照顺序向大家介绍每一种核心的协议. 应用层 应用层是咱们程序员打交道最多的一层协议.应用层里有很多现成的协议,但…...
HTML/CSS中交集选择器
1.作用:选中同时符合多个条件的元素 交集就是或的意思 2.语法:选择器1选择器2选择器3......选择器n{} 3.举例: /* 选中:类名为beauty的p元素,此种写法用的非常的多 */p.beauty{color: red;}/* 选中:类名包含rich和beauty的元素 */.rich.beauty{color: blue;} 4.注意: 1.有标签…...
机器学习(1)安装Pytorch
1.安装命令 pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 2.安装过程Log: Looking in indexes: https://download.pytorch.org/whl/cu118 Co…...
Spring Boot过滤器链:从入门到精通
文章目录 一、过滤器链是什么?二、为什么需要过滤器链?三、Spring Boot中的过滤器链是如何工作的?(一)过滤器的生命周期(二)过滤器链的执行流程 四、如何在Spring Boot中定义自己的过滤器&#…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...
论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving
地址:LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂,正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...
