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

haproxy实现MySQL服务器负载均衡

 1.环境准备

准备好下面四台台服务器:

主机名IP角色
open-Euler1192.168.121.150mysql-server1
openEuler-2192.168.121.151mysql-server2
openEuler-3192.168.121.152client
Rocky8-1192.168.121.160haproxy

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)如何赋能智能漏洞扫描与利用的思考

当下&#xff0c;网络安全威胁持续演变&#xff0c;从简单恶意软件传播发展为结合人工智能、大数据分析的APT&#xff0c;对个人、企业及政府关键信息基础设施构成严重挑战。 漏洞作为网络安全薄弱点&#xff0c;数量和种类随软件系统升级与网络架构复杂化急剧增加&#xff0c…...

Springboot使用Redis发布订阅自动更新缓存数据源

背景 当项目有很多数据源的时候&#xff0c;通常会在启动的时候就把数据源连接加载缓存上&#xff0c;当数据源进行变更后如何自动实时将缓存的数据源进行更新呢&#xff1f;如果是单个项目直接调接口方法就行了&#xff0c;但是涉及到分布式多个系统呢&#xff1f; 解决方案…...

rust学习六、简单的struct结构

一、结构定义 struct-翻译为结构/结构体 总体上有两种定义方式&#xff1a;带有详细属性名的&#xff1b;不带属性名&#xff08;元组&#xff09; 从工程角度出发&#xff0c;并不推荐不带属性的定义方式&#xff0c;因为不友好。希望rust后面不要搞类似好像很友好&#xff…...

.NET周刊【2月第2期 2025-02-09】

国内文章 开箱即用的.NET MAUI组件库 V-Control 发布了! https://www.cnblogs.com/jevonsflash/p/18701494 文章介绍了V-Control&#xff0c;一个适用于.NET MAUI的组件库。作者计划将其开源&#xff0c;强调.NET MAUI是生产力强的跨平台移动开发工具。V-Control提供多种组件…...

Linux的基础指令和环境部署,项目部署实战(下)

目录 上一篇&#xff1a;Linxu的基础指令和环境部署&#xff0c;项目部署实战&#xff08;上&#xff09;-CSDN博客 1. 搭建Java部署环境 1.1 apt apt常用命令 列出所有的软件包 更新软件包数据库 安装软件包 移除软件包 1.2 JDK 1.2.1. 更新 1.2.2. 安装openjdk&am…...

【分布式理论15】分布式调度1:分布式资源调度的由来与过程

文章目录 一、操作系统的资源调度&#xff1a;从单核到多核二、 分布式系统的资源调度&#xff1a;从单台服务器到集群三、 固定资源映射四、 动态资源分配&#xff1a;灵活的任务-资源匹配五、 资源调度过程&#xff1a;从申请到执行 本文主要讨论主题&#xff1a; 从操作系统…...

Python常见面试题的详解12

1. hasattr ()、getattr ()、setattr () 函数是如何使用的&#xff1f; 要点 这三个函数用于对对象的属性进行检查、获取和设置操作&#xff0c;是 Python 中进行对象属性动态操作的重要工具。 hasattr()&#xff1a;用于检查对象是否具有指定属性或方法。 getattr()&#x…...

未来AI方向落地场景:小语言模型,super_private_agent

未来AI方向落地场景:小语言模型,super_private_agent 目录 未来AI方向落地场景:小语言模型,super_private_agent小语言模型super - private - agent(注重隐私的智能代理)碳基生命和硅基生命交互界面面向agent的专用交互协议和数据接口从web平台经济到网络平台举例说明社交…...

使用 PyTorch 实现标准卷积神经网络(CNN)

卷积神经网络&#xff08;CNN&#xff09;是深度学习中的重要组成部分&#xff0c;广泛应用于图像处理、语音识别、视频分析等任务。在这篇博客中&#xff0c;我们将使用 PyTorch 实现一个标准的卷积神经网络&#xff08;CNN&#xff09;&#xff0c;并介绍各个部分的作用。 什…...

开题报告——基于Spring Boot的垃圾分类预约回收系统

关于本科毕业设计(论文)开题报告的规定 为切实做好本科毕业设计(论文)的开题报告工作,保证论文质量,特作如下规定: 一、开题报告是本科毕业设计(论文)的必经过程,所有本科生在写作毕业设计(论文)之前都必须作开题报告。 二、开题报告主要检验学生对专业知识的驾驭能…...

YOLOv5 目标检测优化:降低误检与漏检

1. 引言 在目标检测任务中&#xff0c;误检&#xff08;False Positive, FP&#xff09;和漏检&#xff08;False Negative, FN&#xff09;是影响检测性能的两个主要问题。误检意味着模型检测到了不存在的目标&#xff0c;而漏检则指模型未能检测到真实存在的目标。本文将介绍…...

网络安全治理模型

0x02 知识点 安全的目标是提供 可用性 Avialability机密性 confidentiality完整性 Integrity真实性 Authenticity不可否认性 Nonrepudiation 安全治理是一个提供监督、问责和合规性的框架 信息安全系统 Information Security Management System ISMS 策略&#xff0c;工作程…...

网络原理-

文章目录 协议应用层传输层网络层 数据链路层 协议 在网络通信中,协议是非常重要的概念.协议就是一种约定. 在网络通信过程中,对协议进行了分层 接下来就按照顺序向大家介绍每一种核心的协议. 应用层 应用层是咱们程序员打交道最多的一层协议.应用层里有很多现成的协议,但…...

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&#xff1a; Looking in indexes: https://download.pytorch.org/whl/cu118 Co…...

Spring Boot过滤器链:从入门到精通

文章目录 一、过滤器链是什么&#xff1f;二、为什么需要过滤器链&#xff1f;三、Spring Boot中的过滤器链是如何工作的&#xff1f;&#xff08;一&#xff09;过滤器的生命周期&#xff08;二&#xff09;过滤器链的执行流程 四、如何在Spring Boot中定义自己的过滤器&#…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述&#xff1a;海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而&#xff0c;目前该领域仍面临一个挑战&#xff0c;即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...

springboot 日志类切面,接口成功记录日志,失败不记录

springboot 日志类切面&#xff0c;接口成功记录日志&#xff0c;失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...

区块链技术概述

区块链技术是一种去中心化、分布式账本技术&#xff0c;通过密码学、共识机制和智能合约等核心组件&#xff0c;实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点&#xff1a;数据存储在网络中的多个节点&#xff08;计算机&#xff09;&#xff0c;而非…...

Visual Studio Code 扩展

Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后&#xff0c;命令 changeCase.commands 可预览转换效果 EmmyLua…...

土建施工员考试:建筑施工技术重点知识有哪些?

《管理实务》是土建施工员考试中侧重实操应用与管理能力的科目&#xff0c;核心考查施工组织、质量安全、进度成本等现场管理要点。以下是结合考试大纲与高频考点整理的重点内容&#xff0c;附学习方向和应试技巧&#xff1a; 一、施工组织与进度管理 核心目标&#xff1a; 规…...