HAProxy简介及其负载均衡场景应用教程

本文介绍了HAProxy作为免费且高效的负载均衡器在WEB服务器和MySQL从服务器负载均衡中的配置与实践。通过配置HAProxy,实现了HTTP请求在多个WEB服务器间的轮询分配,以及MySQL读操作在多个从服务器间的负载均衡,同时提供了健康检查和监控功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、HAProxy简介

HAProxy是一种免费的、非常快速且可靠的解决方案,它提供了高可用性、负载平衡和对TCP和基于http的应用程序的代理。它特别适用于非常高的流量网站,并为世界上访问量最大的网站提供了强大的力量。多年来,它已经成为事实上的标准的opensource负载平衡器,现在随大多数主流Linux发行版本一起发布,并且经常在云平台上默认部署。

项目地址:https://github.com/haproxy/haproxy

代理的作用:web缓存(加速)、反向代理、内容路由(根据流量及内容类型等将请求转发至特定服务器)、转码器(将后端服务器的内容压缩后传输给client端)。

缓存的作用:减少冗余内容传输;节省带宽、缓解网络瓶颈;降低了对原始服务器的请求压力,降低了传输延迟。

说明:对于http协议的反向代理,并不提供缓存功能。

二、实现WEB服务器的负载均衡

1、简单架构图


2、测试环境(说明):
HAProxy:192.168.1.157
web1:192.168.1.110
web2:192.168.1.184

3、HAProxy服务器安装haproxy
yum -y install haproxy
echo "1111111" > /var/www/html/index.html
systemctl start httpd


4、web1和web2安装httpd
yum -y install httpd
echo "2222222" > /var/www/html/index.html
systemctl start httpd


5、配置HAProxy
vim /etc/haproxy/haproxy.cfg
修改前端和后端的配置如下:
frontend  main 192.168.1.157:80
    default_backend             webserver

backend webserver
    balance     roundrobin
    server      web1 192.168.1.110:80 check
    server      web2 192.168.1.184:80 check


6、配置HAProxy访问记录日志
日志位置:/var/log/haproxy.log
编辑配置文件/etc/rsyslog.conf
加入如下内容:
$ModLoad imudp
$UDPServerRun 514
local2.*                                                /var/log/haproxy.log
重启rsyslog进程
systemctl restart rsyslog
启动haproxy服务
systemctl start haproxy


7、测试环境是否健康
通过浏览器访问HAProxy
http://192.168.1.157

访问日志记录如下图:

三、实现MySQL从服务器的负载均衡

1、简单架构图

业务系统通常会采用MySQL一主多从模式设计,即1台 MySQL“主”服务器(Master)+多台“从”服务器(Slave),“从”服务器之间通过Haproxy进行负载均衡,对外只提供一个访问IP,当程序需要访问多台"从"服务器时,只需要访问Haproxy,再由Haproxy将请求分发到各个数据库节点。

2、测试环境(说明):
MySQL(Master):192.168.1.1
MySQL(Slave):192.168.1.2
MySQL(Slave):192.168.1.3
HAProxy:192.168.1.4

3、HAProxy服务器安装haproxy
yum -y install haproxy

4、三台服务器安装MySQL

这里略;

5、配置HAProxy
vim /etc/haproxy/haproxy.cfg

global
        maxconn 4096
        daemon
        chroot      /var/lib/haproxy
        pidfile     /var/run/haproxy.pid
        #debug
        #quiet
        user haproxy
        group haproxy
 
defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        log 127.0.0.1 local0
        retries 3
        option redispatch
        maxconn 2000
        #contimeout      5000
        #clitimeout      50000
        #srvtimeout      50000
        timeout http-request    10s
        timeout queue           1m
        timeout connect         10s
        timeout client          1m
        timeout server          1m
        timeout http-keep-alive 10s
        timeout check           10s
 
listen  admin_stats 0.0.0.0:8888
        mode        http
        stats uri   /dbs
        stats realm     Global\ statistics
        stats auth  admin:admin
 
listen  proxy-mysql 0.0.0.0:23306
        mode tcp
        balance roundrobin
        option tcplog
        option mysql-check user haproxy #在mysql中创建无任何权限用户haproxy,且无密码
        server MySQL1 192.168.1.2:3306 check weight 1 maxconn 2000
        server MySQL2 192.168.1.3:3306 check weight 1 maxconn 2000
        option tcpka

注:listen admin_stats 0.0.0.0:8888 这个配置是监控页面,绑定到本机8888端口,账号admin,密码admin

6、配置HAProxy健康检查MySQL的账号

用户名为haproxy 且无密码(重要) 否则haproxy无法检测MySQL状态。

CREATE USER 'haproxy'@'%' IDENTIFIED BY ''; 

如果不能设置为空,则先设置一个密码,然后在数据的user表中 把密码(authentication_string)设置为空。然后别忘记flush privileges;

7、然后用MySQL的客户端连接工具连接haproxy:

IP:192.168.1.4

Port:23306

8、通过web的方式查看所有MySQL节点的使用情况

地址:http://192.168.1:8888/dbs

账号:admin

密码:admin

即可登录监控后台,如下图:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值