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 时,能够正常访问数据库,并且后端服务器的负载得到了有效分担。

相关推荐
大树8810 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠10 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
小宇宙Zz11 小时前
Maven依赖冲突
java·服务器·maven
ApacheSeaTunnel12 小时前
实战演示 | 基于 Apache SeaTunnel 与 Apache DolphinScheduler 实现 MySQL 到 Doris 离线定时增量同步
大数据·mysql·开源·doris·数据集成·seatunnel·数据同步
古城小栈12 小时前
Unix 与 Linux 异同小叙
linux·服务器·unix
DARLING Zero two♡12 小时前
【MySQL数据库】数据类型与表约束
数据库·mysql
程序猿阿伟13 小时前
《Chrome离线扩展安装的底层逻辑与场景落地指南》
服务器·网络·chrome
活宝小娜13 小时前
mysql详细安装教程
数据库·mysql·adb
凡人叶枫13 小时前
Effective C++ 条款42:了解 typename 的双重意义
java·linux·服务器·c++
AC赳赳老秦13 小时前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw