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

一、实验目标

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

二、实验环境

  • 服务器 IP 分配

    |-----------|----------------|
    | haproxy节点 | 192.168.65.131 |
    | mysql服务器1 | 192.168.65.132 |
    | mysql服务器2 | 192.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 时,能够正常访问数据库,并且后端服务器的负载得到了有效分担。

相关推荐
linux修理工29 分钟前
n1 Armbian OS 24.11.0 noble 安装suricata
linux·运维·服务器
Java水解1 小时前
【MySQL】数据库基础
后端·mysql
沃夫上校1 小时前
MySQL 中文拼音排序问题
java·mysql
要一起看日出1 小时前
MVCC-多版本并发控制
数据库·mysql·mvcc
Hx__1 小时前
MySQL InnoDB 的 MVCC 机制
数据库·mysql
萧鼎1 小时前
深入解析 Python 的 pytun 库:虚拟网络接口与隧道技术实战指南
服务器·网络·python
Re_Yang091 小时前
2025年统计与数据分析领域专业认证发展指南
服务器·人工智能·数据分析
linweidong2 小时前
负载均衡的LVS三种模式:NAT、TUN、DR场景对比与实践指南
负载均衡·lvs·dr模式·ip隧道·运维面经·k8s面试·docker面试
chat2tomorrow3 小时前
数据采集平台的起源与演进:从ETL到数据复制
大数据·数据库·数据仓库·mysql·低代码·postgresql·etl
依稀i1233 小时前
Spring Boot + MySQL 创建超级管理员
spring boot·mysql