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

相关推荐
小羊没烦恼!几秒前
TypedSql:在 C# 类型系统上实现一个 SQL 查询引擎
java·linux·运维·服务器·开发语言·数据库·mysql
2401_868534789 分钟前
国家东数西算纵深推进的算力感知网络(APN6/算网一体)架构规划与设计
服务器·网络
快乐的韭菜根根12 分钟前
SLURM配置服务器一
运维·服务器
xiaogai_gai12 分钟前
委外出入库单从旺店通同步到 MySQL:基于轻易云的实战方案
数据库·mysql
极光通讯16 分钟前
国产存储替代进展:长鑫DDR5与长江存储企业级SSD的适配现状
服务器·数据库·内存
Mortalbreeze18 分钟前
MySQL 基础篇(十):用户管理
数据库·mysql
张小姐的猫38 分钟前
【MySQL】表的约束
android·linux·服务器·数据库·c++·mysql·adb
guo_wen_qiang1 小时前
mongodb集群模式的原理
服务器·数据库·mongodb
服务器硬件项目经理1 小时前
第5章消费级vs专业级vs数据中心:显卡的门派
服务器·嵌入式硬件·gru·硬件工程·硬件
邪修king1 小时前
Re:Linux系统篇(三十六):进程间通信Chapter3:从匿名管道到命名管道:Linux 进程间通信实战(FIFO 深度解析)
linux·运维·服务器