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.测试

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

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

相关文章

数据大屏炫酷UI组件库:B端科技风格PSD资源集

一个既精准传达数据内涵,又极具视觉冲击力的UI设计,无疑是提升用户体验、彰显品牌科技实力的关键。但面对如此高要求,UI设计师们往往面临着寻找高质量设计素材的巨大挑战。为此,我们精心打造了这款数据大屏炫酷UI组件库&#xff0…

强化学习笔记7——DDPG到TD3

前提:基于TD 的方法多少都会有高估问题,即Q值偏大。原因两个:一、TD目标是真实动作的高估。 二:自举法高估。 DDPG 属于AC方法:异策略,适合连续动作空间,因为他的策略网络直接输出的动作&#…

150,[5] BUUCTF WEB [BJDCTF2020]EasySearch

进入靶场 有个文件 和之前一道题如出一辙 <?php// 开启输出缓冲&#xff0c;将后续所有的输出内容先暂存到缓冲区&#xff0c;而不是直接发送到浏览器ob_start();/*** 生成一个基于随机字符串和唯一标识符的哈希值* return string 返回生成的 sha1 哈希值*/function get_…

分布式光纤传感:为生活编织“感知密网”

分布式光纤测温技术虽以工业场景为核心&#xff0c;但其衍生的安全效益已逐步渗透至日常生活。 分布式光纤测温技术&#xff08;DTS&#xff09;作为一种先进的线型温度监测手段&#xff0c;近年来在多个领域展现了其独特的优势。虽然其核心应用场景主要集中在工业、能源和基础…

腾讯发布混元-3D 2.0: 首个开源高质3D-DiT生成大模型

在之前的文章中已经和大家介绍过腾讯HunYuan-3D 1.0&#xff0c;感兴趣的小伙伴可以点击下面链接阅读~ HunYuan-3D 是首个开源高质3D-DiT生成大模型&#xff0c;几何与纹理解藕生成&#xff0c;一键将创意具象化。 2.0模型架构图及介绍 2.0模型将几何和纹理生成解耦&#xff0…

CentOS搭建PPPOE服务器

一、安装软件包 yum -y install rp-pppoe 二、配置服务器 1.修改配置文件 打开/etc/ppp/pppoe-server-options文件 nano /etc/ppp/pppoe-server-options 编辑为以下内容&#xff1a; # PPP options for the PPPoE server # LIC: GPL require-pap require-chap login …

数据结构实现顺序表的尾插,尾删,按值查找/修改/删除,按下标查找/增加/删除

头文件&#xff1a;head.h #ifndef __HEAD_H__ #define __HEAD_H__#include <stdio.h> #include <string.h> #include <stdlib.h> #define MAXSIZE 20enum num {success,false-1};typedef int datatype;typedef struct {int len;datatype data[MAXSIZE]; }S…

IDEA集成DeepSeek

引言 随着数据量的爆炸式增长&#xff0c;传统搜索技术已无法满足用户对精准、高效搜索的需求。 DeepSeek作为新一代智能搜索技术&#xff0c;凭借其强大的语义理解与深度学习能力&#xff0c;正在改变搜索领域的游戏规则。 对于 Java 开发者而言&#xff0c;将 DeepSeek 集成…

2025.2.16

Web [GDOUCTF 2023]泄露的伪装&#xff1a; 点进去看就是装神弄鬼&#xff0c;那就直接扫描 果然有东西 第一个是php代码 第二个是个文件 访问发现是一样的 分析一下&#xff1a;使用 file_get_contents($cxk) 函数读取 $cxk 变量中指定的 URL 或文件的内容。 如果读取的内…

WPF的Prism框架的使用

安装Prism.DryIoc库&#xff1a; Prism的区域和模块化&#xff1a; 一个区域可以显示一个用户控件 一个模块就是一个项目&#xff0c;也就是一个类库 动态切换用户控件的案例&#xff1a; <Grid><Grid.RowDefinitions><RowDefinition Height"auto"…

S4D480 S4HANA 基于PDF的表单打印

2022年元旦的笔记草稿 SAP的表单打印从最早的SAPScripts 到后来的SMARTFORM&#xff0c;步入S4时代后由于Fiori的逐渐普及&#xff0c;更适应Web的Adobe Form成了SAP主流output文件格式。 目录 一、 基于PDF表单打印系统架构Interface 接口Form 表单ContextLayout 二、表单接…

chrome://version/

浏览器输入&#xff1a; chrome://version/ Google浏览器版本号以及安装路径 Google Chrome131.0.6778.205 (正式版本) &#xff08;64 位&#xff09; (cohort: Stable) 修订版本81b36b9535e3e3b610a52df3da48cd81362ec860-refs/branch-heads/6778_155{#8}操作系统Windows…

【Kubernetes】k8s 部署指南

1. k8s 入门 1.1 k8s 简介 需要最需要明确的就是&#xff1a;kubernetes&#xff08;简称 k8s &#xff09; 是一个 容器编排平台 &#xff0c;换句话说就是用来管理容器的&#xff0c;相信学过 Docker 的小伙伴对于容器这个概念并不陌生&#xff0c;打个比方&#xff1a;容器…

【Python】Python入门——基础语法及顺序语句

Python入门——基础语法及顺序语句 官方文档地址&#xff1a;https://docs.python.org/zh-cn/3/tutorial/index.htmlPython 是一门易于学习、功能强大的编程语言。它提供了高效的高级数据结构&#xff0c;还能简单有效地面向对象编程。Python 优雅的语法和动态类型以及解释型语…

在使用 uni.getLocation 步骤和一些坑

1.使用前需要去微信小程序申请开通wx.getLocation 获取当前位置的api (不申请上线之后会使用不了)&#xff0c;申报资料的话我让ai帮我写的&#xff0c;说一下使用场景弄几张图片就可以了 地址 &#xff1a; 小程序 2.第二个需要配置域名 具体申请腾讯地图的方法参考 &…

Docker高级篇

1.Mysql主从复制Docker版本 mysql主从复制原理 binlog 1.新建主服务器容器实例 docker run -d -p 3307:3306 --privilegedtrue \ -v /opt/mysql8.4.3/log:/var/log/mysql \ -v /opt/mysql8.4.3/conf:/etc/mysql/conf.d \ -v /opt/mysql8.4.3/data:/var/lib/mysql \ -e MYSQL…

Java中对象序列化机制的优化研究

Java中对象序列化机制的优化研究 对象序列化&#xff08;Serialization&#xff09;是Java编程中一种非常重要的机制&#xff0c;它允许将对象的状态转换为字节流&#xff0c;从而方便存储或网络传输。然而&#xff0c;Java的默认序列化机制虽然功能强大&#xff0c;但在性能、…

wordpress资讯类网站整站打包

wordpress程序&#xff0c;内置了价值499元的模板.但是有了模板没有全自动采集相信大多数人都搞不懂&#xff0c;目录那么多&#xff0c;全靠原创几乎是不可能的事情&#xff0c;除非你是大公司&#xff0c;每人控制一个板块&#xff0c; 这套源码里面最有价值的应该是这个采集…

【深度解析】图解Deepseek-V3模型架构-混合专家模型(MoE)

一、引言 最近非常火爆的DeepSeek-V3模型&#xff0c;是一个包含6710亿总参数的强大混合专家模型&#xff08;MoE&#xff09;&#xff0c;其中每个token激活370亿参数。该模型在DeepSeek-V2验证有效的核心架构基础上&#xff0c;采用多头潜在注意力&#xff08;MLA&#xff0…

hive:分区>>静态分区,动态分区,混合分区

分区表 使用场景&#xff1a;数据量庞大且经常用来做查询的表 特点&#xff1a;将数据分别存储到不同的目录里 优点&#xff1a;避免全盘扫描&#xff0c;提高查询效率 分区的类型 它们的默认值分别是: false, strict, 要求至少有一个静态分区列&#xff0c;而 nonstr…