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

HAProxy 实现 MySQL 服务器负载均衡实验

一、实验目标

通过配置 HAProxy 实现对 MySQL 服务器的负载均衡,确保请求能够均匀分配到后端的多个 MySQL 数据库服务器上,提高系统的可用性和性能。

二、实验环境

  • 服务器 IP 分配

    haproxy节点192.168.65.131
    mysql服务器1192.168.65.132
    mysql服务器2192.168.65.133

三、实验步骤

(一)安装 HAProxy

  1. 更新系统

    sudo yum update -y
  2. 安装 HAProxy

    sudo yum install haproxy -y

(二)安装 MySQL 服务

在每台 MySQL 服务器上安装 MySQL 服务。

  1. 更新系统

    sudo yum update -y
  2. 安装 MySQL

     yum install mysql-server.x86_64 -y
  3. 启动 MySQL 服务

    sudo systemctl start mysqld
    sudo systemctl enable mysqld
  4. 设置 MySQL 根用户密码

    alter user root@localhost identified by 'mysql@123';

    按提示设置 root 用户密码,并完成安全设置。

(三)配置 MySQL 数据库

  1. 登录 MySQL 数据库

    mysql -u root -p
  2. 创建测试数据库

    CREATE DATABASE testdb_1; #mysql服务器1
    
    CREATE DATABASE testdb_2; #mysql服务器2

为了确保 HAProxy 节点能够连接到后端 MySQL 数据库服务器,需要在每台 MySQL 服务器上授权远程连接。

  1. 登录 MySQL 数据库

    mysql -u root -p
  2. 授权远程连接

    USE mysql;
    CREATE USER 'root'@'192.168.65.131' IDENTIFIED BY 'mysql@123';
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.65.131' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
  3. 重启 MySQL 服务

    sudo systemctl restart mysqld

(五)配置 HAProxy

  1. 编辑 HAProxy 配置文件

    sudo vi /etc/haproxy/haproxy.cfg
  2. 配置内容

    global
        log /dev/log    local0
        log /dev/log    local1 notice
        stats timeout 30s
        daemon
    
    defaults
        log     global
        mode    tcp
        option  tcplog
        option  dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000
    
    frontend mysql_front
        bind *:3306
        mode tcp
        default_backend mysql_back
    
    backend mysql_back
        mode tcp
        balance roundrobin
        server mysql1 192.168.65.132:3306 check
        server mysql2 192.168.65.133:3306 check
    
    listen stats
        bind *:8080
        mode http
        stats enable                 #启用统计页面
        stats uri /stats               #定义统计页面的访问路径为 /stats
        stats realm "HAProxy Statistics"  #设置访问统计页面时的认证提示信息
        stats auth admin:password       #设置访问统计页面的用户名和密码
     
  3. 重启 HAProxy 服务

    sudo systemctl restart haproxy

(六)验证负载均衡

  1. 多次在客户端连接 MySQL

    mysql -h 192.168.65.131 -P 3306 -u root -p

  2. 由于默认采用轮询算法,所以第一次连接后数据库为testdb_1,第二次为testdb_2

(七)监控 HAProxy 状态

  1. 访问 HAProxy 状态页面: 在浏览器中访问 http://192.168.65.131:8080/stats并输入用户名和密码

  2. 查看后端服务器状态: 确保所有后端 MySQL 服务器状态为 UP

四、实验结果

通过 HAProxy 配置,MySQL 服务器的请求被成功均衡分配到后端的三台 MySQL 服务器上,实现了负载均衡。客户端通过 HAProxy 连接 MySQL 时,能够正常访问数据库,并且后端服务器的负载得到了有效分担。

http://www.dtcms.com/a/20637.html

相关文章:

  • Java多线程实战探索 —— 构建高效并发系统
  • trl+DPO 算法
  • 宏任务和微任务
  • 亲测有效!使用Ollama本地部署DeepSeekR1模型,指定目录安装并实现可视化聊天与接口调用
  • 力扣hot100第五天
  • AI大模型的文本流如何持续吐到前端,实时通信的技术 SSE(Server-Sent Events) 认知
  • Testin云测(兼容性测试)
  • [Spring Boot] Expense API 实现
  • Docker-数据卷
  • 合并多次commit记录
  • 股票数据接口API实例代码python、JAVA等多种语言演示免费获取实时数据、历史数据、CDMA、KDJ等指标数据配有API说明文档
  • 求矩阵对角线元素的最大值
  • 机器视觉3D工业相机机器视觉检测的优缺点
  • 解决前后端日期传输因时区差异导致日期少一天的问题
  • 【c++】【Linux】【进程】线程终止/崩溃 会导致进程终止/崩溃 吗?
  • 【油漆面积——线段树,扫描线,不用pushdown的特例,pushup兼有cal的性质】
  • 大数据如何帮助你在业务中创造奇迹?
  • 【HarmonyOS Next】图片选择方案
  • 精选Python小项目代码
  • 【前端框架】深入探讨 Vue 3 组件生命周期的变化和最佳实践
  • 卓越设计彰显品质:福特中国“烈马宇宙”项目展示高质量标准
  • linux--关于GCC、动态库静态库
  • kubectl exec 实现的原理
  • 【SQL技术】不同数据库引擎 SQL 优化方案剖析
  • 30天自制操作系统第一天(1)
  • 微信小程序性能优化
  • 寒假第三周周报
  • 基于JAVA的幼儿园管理系统的设计与实现源码(springboot+vue+mysql)
  • [创业之路-307]:如何解读公司的业绩?它与股价变化的关系?
  • c++中std::thread构造函数的注意事项