如何在 CentOS 7 上将 HAProxy 设置为 MariaDB 的负载均衡器如何在 CentOS 7 上将 HAProxy 设置为 MariaDB 的负载均衡器如何在 CentOS 7 上将 HAProxy 设置为 MariaDB 的负载均衡器如何在 CentOS 7 上将 HAProxy 设置为 MariaDB 的负载均衡器
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 CentOS 7 上将 HAProxy 设置为 MariaDB 的负载均衡器

在此页

  1. 第 1 步 - 安装和配置 MariaDB Galera 集群
    1. A.配置主机名并准备基本系统
    2. B.安装 MariaDB Galera 服务器
    3. C.配置防火墙
    4. D.配置 MariaDB Galera 集群
    5. E。配置集群检查

    1. A.复制测试
    2. B.通过 HAProxy 访问 MariaDB Server
    3. C.登录到 HAProxy Web-Gui

    在本教程中,我将指导您在 CentOS 7 上安装 MariaDB Galera 集群,该集群前面有一个 HAProxy 负载均衡器。整个设置包括 4 台服务器。我将为数据库节点使用 3 个 CentOS 7 服务器,2 个节点将处于活动状态,1 个充当备份节点。第四个服务器将用于 HAProxy 负载均衡器。对于平衡算法,我们使用 leastconn(但你可以使用其他算法)。

    MariaDB 是最流行的关系数据库服务器之一,由 MySQL 数据库服务器的原始开发人员制作。 MariaDB 是 MySQL 的一个分支,它支持 XtraDB 存储引擎、InnoDB 存储引擎和一个名为 aria 的新存储引擎。

    MariaDB Galera Cluster 是 MariaDB 的同步多主集群,仅在基于 GNU/Linux 的操作系统上可用。 Galera Cluster 仅支持 XtraDB 和 InnoDB 存储引擎。它使用 Galera 库进行具有自动成员控制的复制、自动节点加入以及读取和写入集群节点。

    先决条件

    • 4 台 CentOS 7 服务器 - 64 位:

    mariadb1
    192.168.1.132

    mariadb2
    192.168.1.133

    mariadb3
    4 192.16

    HAProxy
    192.168.1.135

    • 所有四台服务器的根权限。

    第 1 步 - 安装和配置 MariaDB Galera 集群

    在这一步中,我们将在 3 台 CentOS 服务器上安装和配置 MariaDB Galera 集群。我们将安装 MariaDB-Galera 服务器,然后启用防火墙并为数据库和其他服务打开一些端口。然后我们将在每个 MariaDB 服务器上安装 clustercheck 脚本,这样我们就可以从 HAProxy 检查服务器状态。

    A. 配置主机名并准备基础系统

    使用您的 ssh 帐户登录到所有数据库服务器:

    ssh 

    使用 sudo 命令切换到 root 用户:

    sudo su

    编辑每个 MariaDB 服务器上的主机文件,并添加所有服务器 IP 地址和其他节点的主机名:

    vi /etc/hosts

    请参阅下面我的 /etc/hosts 配置:

    192.168.1.132   mariadb1
    192.168.1.133   mariadb2
    192.168.1.134   mariadb3

    保存文件并退出。

    接下来,在每台服务器上禁用 SELinux,因为它会导致 MariaDB Galera 出现问题。使用此 sed 命令禁用 SELinux:

    sed -i -e 's/SELINUX=permissive/SELINUX=disabled/g' /etc/sysconfig/selinux

    sed(流编辑器):将 /etc/sysconfig/selinux 文件中的 \SELINUX=permissive\ 替换为 \SELINUX=disabled\。

    B. 安装 MariaDB Galera 服务器

    在此步骤中,我们将安装 MariaDB 存储库中提供的 MariaDB Galera 10.0。

    使用 vi 命令在 yum.repos.d 目录中创建一个新的 .repo 文件:

    vi /etc/yum.repos.d/mariadb.repo

    粘贴下面的 MariaDB Galera 存储库详细信息并保存:

    # MariaDB 10.0 CentOS repository list - created 2015-07-09 14:56 UTC
    # http://mariadb.org/mariadb/repositories/
    [mariadb]
    name = MariaDB
    baseurl = http://yum.mariadb.org/10.0/centos7-amd64
    gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
    gpgcheck=1

    现在安装 MariaDB Galera Server 和 Client,以及本教程所需的其他一些包:

    yum -y install MariaDB-Galera-server MariaDB-client galera rsync xinetd percona-toolkit precona-xtrabackup xinetd wget

    等待安装过程完成。

    C.配置Firewalld

    我们将开启 CentOS 7 的默认防火墙 Firewalld。我们将打开它并打开我们将安装的服务使用的 TCP 端口。

    3306=用于 MySQL/MariaDB 客户端连接。
    4567=Galera 集群复制流量。
    873=Rsync 端口。< br> 4444=对于所有其他状态快照传输 (SST)。
    9200=xinetd - clustercheck。

    使用此 systemctl 命令打开 firewalld:

    systemctl start firewalld

    现在使用 firewall-cmd 打开端口:

    firewall-cmd --permanent --add-port=3306/tcp
    firewall-cmd --permanent --add-port=4567/tcp
    firewall-cmd --permanent --add-port=873/tcp
    firewall-cmd --permanent --add-port=4444/tcp
    firewall-cmd --permanent --add-port=9200/tcp

    并重新加载 firewalld:

    firewall-cmd --reload

    D. 配置 MariaDB Galera 集群

    进入 /etc/my.cnf.d/ 目录并使用 vi 编辑 server.conf 文件:

    cd /etc/my.cnf.d/
    vi server.conf

    取消注释并添加一些配置行,您可以在下面看到详细信息:

    wsrep_provider=/usr/lib64/galera/libgalera_smm.so   # Path to wsrep provider library
    wsrep_cluster_address="gcomm://192.168.1.132,192.168.1.133,192.168.1.134"   # Group Node, add all MardiaDB Server IP
    binlog_format=row
    default_storage_engine=InnoDB
    innodb_autoinc_lock_mode=2
    bind-address=0.0.0.0

    # Add some configuration below
    # Cluster Name
    wsrep_cluster_name="mariadb_cluster"

    # Add Server IP - on mariadb2 = 192.168.1.133 - on mariadb3 = 192.168.1.134
    wsrep_node_address="192.168.1.132"

    # Replication Provider with rsync
    wsrep_sst_method=rsync

    保存文件并退出。

    在服务器 mariadb1 上,使用以下命令引导集群:

    /etc/rc.d/init.d/mysql bootstrap

    结果:

    Bootstrapping the cluster.. Starting MySQL.. SUCCESS!

    在 mariadb2 和 mariadb3 服务器上,正常启动 MariaDB:

    /etc/init.d/mysql start

    mariadb1 引导程序。

    mariadb2 和 mariadb3 启动。

    MariaDB 已在所有节点上启动,现在使用以下命令在所有服务器上配置 MariaDB 的 root 密码:

    /usr/bin/mysql_secure_installation

    E.配置Clustercheck

    Clustercheck 是一个有用的 bash 脚本,可以使代理(例如:HAProxy)能够监控 MariaDB 服务器。

    转到 /tmp 目录并使用 wget 下载脚本:

    cd /tmp
    wget https://raw.githubusercontent.com/olafz/percona-clustercheck/master/clustercheck

    现在通过更改权限使脚本可执行并将其移动到 /usr/bin/ 目录:

    chmod +x clustercheck
    mv clustercheck /usr/bin/

    接下来,在 \/etc/xinet.d/\ 目录中使用 vi 命令为 clusterchek 创建一个 xinetd 脚本:

    vi /etc/xinetd.d/mysqlchk

    粘贴下面的配置:

    # default: on
    # description: mysqlchk
    service mysqlchk
    {
            disable = no
            flags = REUSE
            socket_type = stream
            port = 9200             # This port used by xinetd for clustercheck
            wait = no
            user = nobody
            server = /usr/bin/clustercheck
            log_on_failure += USERID
            only_from = 0.0.0.0/0
            per_source = UNLIMITED
    }

    保存并退出。

    将 clustercheck 添加到服务列表:

    vi /etc/services

    转到 10101 行,注释使用端口 9200 的服务并为 mysqlchk/clustercheck 添加新行。

    mysqlchk        9200/tcp                # mysqlchk

    #wap-wsp         9200/tcp                # WAP connectionless session service
    #wap-wsp         9200/udp                # WAP connectionless session service

    保存文件并退出。

    然后启动xinetd服务:

    systemctl start xinetd

    要执行 clustercheck,您必须在 MySQL 中创建一个新用户。登录到 MariaDB shell 并使用名称“clustercheckuser”和密码“clustercheckpassword!”创建一个新用户。

    mysql -u root -p
    GRANT PROCESS ON *.* TO 'clustercheckuser'@'localhost' IDENTIFIED BY 'clustercheckpassword!' ;
    exit;

    在此阶段,所有 MariaDB 服务都是同步的。

    测试集群检查:

    /usr/bin/clustercheck

    确保结果代码为 200。

    第 2 步 - 安装和配置 HAProxy

    登录到 HAProxy 服务器:

    ssh 

    成为 root 用户并将 MariaDB 服务器 IP 和主机名添加到 \/etc/hosts\ 文件:

    sudo su
    vi /etc/hosts

    HAProxy 在 CentOS 基础仓库中可用,运行这个 yum 命令来安装它:

    yum -y install haproxy

    然后通过编辑 rsyslog 配置文件为 HAProxy 配置日志:

    vi /etc/rsyslog.conf

    取消注释 udp 端口:

    # Provides UDP syslog reception
    $ModLoad imudp
    $UDPServerRun 51

    保存文件并退出编辑器。

    在 rsyslog.d 目录中添加 HAProxy 配置:

    vi /etc/rsyslog.d/haproxy.conf

    下面粘贴配置:

    local2.=info     /var/log/haproxy-access.log
    local2.notice    /var/log/haproxy-info.log

    保存文件并重启 rsyslog:

    systemctl restart rsyslog

    接下来,创建一个新的 HAProxy 配置文件。

    进入 /etc/haproxy 目录并备份 dafult haproxy 配置文件。

    cd /etc/haproxy/
    mv haproxy.cfg haproxy.cfg.orig

    创建新的 haproxy 配置文件:

    vi /etc/haproxy/haproxy.cfg

    并粘贴下面的 HAProxy 配置:

    global
            log 127.0.0.1   local2
            maxconn 1024
            user haproxy
            group haproxy
            daemon
            stats socket /var/run/haproxy.sock mode 600 level admin         # Make sock file for haproxy

    defaults
            log     global
            mode    http
            option  tcplog
            option  dontlognull
            retries 3
            option  redispatch
            maxconn 1024
            timeout connect 5000ms
            timeout client 50000ms
            timeout server 50000ms

    listen mariadb_cluster 0.0.0.0:3030
    ## MariaDB balance leastconn - the cluster listening on port 3030.
            mode tcp
            balance leastconn
            option httpchk
            server mariadb1 192.168.1.132:3306 check port 9200
            server mariadb2 192.168.1.133:3306 check port 9200
            server mariadb3 192.168.1.134:3306 check port 9200 backup       # Make mariadb3 as backup - automatic replication data

    listen stats 0.0.0.0:9000
    ## HAProxy stats web gui running on port 9000 - username and password: howtoforge.
            mode http
            stats enable
            stats uri /stats
            stats realm HAProxy\ Statistics
            stats auth howtoforge:howtoforge
            stats admin if TRUE

    3030端口是MariaDB的负载均衡端口,我们可以通过负载均衡IP和该端口访问所有MariaDB服务器上的数据库。

    端口 9000 是 web-gui 的端口,它允许从浏览器监控 HAProxy。

    现在启动 firewalld,打开端口 9000 和 3030,然后重新加载它:

    systemctl start firewalld
    firewall-cmd --permanent --add-port=9000/tcp
    firewall-cmd --permanent --add-port=3030/tcp
    firewall-cmd --reload

    使用 systemctl 命令启动 HAProxy:

    systemctl start haproxy

    第 3 步 - 测试 HAProxy 和 MariaDB

    A. 复制测试

    登录到 MariaDB 服务器,访问 MySQL shell 并从 mariadb1 创建一个新数据库,然后从 mariadb2,最后从 mariadb3。

    mysql -u root -p
    create database this_mariadb1;  # Run this on mariadb1 server
    create database this_mariadb2;  # Run this on mariadb2 server
    create database this_mariadb3;  # Run this on mariadb3 server

    检查数据库:

    B. 通过 HAProxy 访问 MariaDB Server

    现在我们通过端口 3030 上的 HAProxy IP 访问 MariaDB 服务器集群和数据库。

    在进行此测试之前,通过创建一个主机为 \%\ 的新用户 root 来启用对 MariaDB 服务器的远程访问。

    登录到 MariaDB shell 并创建一个新用户 \root\,密码为 \aqwe123\:

    mysql -u root -p
    GRANT ALL PRIVILEGES ON *.* TO '%' IDENTIFIED BY "aqwe123";

    接下来,通过 HAProxy 服务器访问 mysql.user 数据库表:

    mysql -u root -p -h 192.168.1.135 -P 3030 -e "select Host, User, Password from mysql.user"

    可以通过3030端口访问负载均衡IP看到数据库服务器的用户,通过3030端口访问HAProxy IP可以访问MySQL节点上的数据库。

    服务器的另一个测试:leastconn算法:

    C. 登录到 HAProxy Web-Gui

    您可以使用用户名和密码“howtoforge”访问端口 9000 上的 HAProxy 监控服务器以显示 HAProxy web UI:

    http://192.168.1.135:9000/stats

    HAProxy 已经安装成功,您可以看到 MariaDB 服务器被监控。

    结论

    MariaDB Galera Cluster 是一个同步多主集群,为 MySQL 数据库提供负载平衡。这是为您的站点构建强大的数据库系统的一个很好的解决方案。 MariaDB Galera Cluster 支持 xtradb 和 innodb 存储引擎,它提供自动复制并允许自动加入新节点。我们可以在数据库集群前面使用HAProxy作为负载均衡器。负载平衡器有助于将传入请求分发到所有数据库。我们使用 bash 脚本 clustercheck 从 HAProxy 执行数据库监控。 MariaDB Galera Cluster 和 HAProxy 是构建高可用性数据库系统的最佳解决方案之一。

©2015-2025 艾丽卡 support@alaica.com