阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL的HaProxy反向代理和负载均衡

469次阅读
没有评论

共计 3772 个字符,预计需要花费 10 分钟才能阅读完成。

HaProxy 提供高可用性、负载均衡以及基于 TCP 和 HTTP 应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。应用到 Haproxy 主要是因为他免费,并且基于 TCP 和 HTTP 的应用代理。

先介绍一下 Haproxy 的应用场景,一个是 TCP 代理,这边也是我项目中应用的,另一个是 HTTP 代理,我就简单介绍一下。基于 Tcp 协议的 Haproxy 代理应用场景:在 VPC 网络环境下,虚机 A 的数据库不能被外界网络访问到,只能被在同一内网环境下的虚机 B 访问,这时候可以通过在虚机 B 上搭建 Haproxy 环境,通过 Haproxy 代理实现外部虚机 C 对虚机 A 数据库的访问;这里我项目中实际运用到的场景是这样的,在公有云上创建 RDS 实例,会有 VPC 网络和 Classic 网络,在选择 VPC 网络创建 RDS 后,在进行数据同步时,会对该 RDS 数据库进行数据同步,这时候由于 RDS 的数据库在 VPC 网络环境下,外网是不能直接访问这个 RDS 数据库。这时候我们采用的是用一个 ECS 云服务器上搭建一个 Haproxy 代理,公网通过 haproxy 代理访问这个 RDS 数据库,这样就解决了 VPC 网络的访问问题;

基于 HTTP 协议的 Haproxy 代理应用场景:用户访问网站域名时,通过我们设置的 Haproxy 代理,HTTP 请求到后端配置的 web 服务器上,获得后方服务器返回的内容后重新封装,响应给客户端;就不啰嗦了,直接来干货,应用 haproxy 代理访问后端 MySQL 数据库(这里不一定是 mysql 数据库)。

(一)Haproxy 下载、安装:网上的资源都要积分,所以直接在 yum 上找免费资源。

yum install -y haproxy
rpm -qi haproxy
rpm -ql haproxy

(二)配置 haproxy.cfg 文件(重点)

cd /etc/haproxy
vim haproxy.cfg
 
# 配置的 haproxy.cfg 文件
global
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
        log     global
        log 127.0.0.1 local3
        mode    http
        option httplog
        option  dontlognull
        retries 10
        option redispatch
        maxconn         2000
        timeout http-request    10s                  
        timeout queue           1m                   
        timeout connect         10s                  
        timeout client          1m                   
        timeout server          1m                   
        timeout http-keep-alive 10s                  
        timeout check           10s                  

#后端 mysql 配置,访问虚机地址 + 端口号可以访问后端的 mysql,例如:192.168.108.133:7306 可以访问 140/133 的 mysql 数据库
listen  mysql
        bind 0.0.0.0:7306
        mode tcp
        balance roundrobin
        server mysql1 192.168.108.140:3306
server mysql2 192.168.108.133:3306
#haproxy 监听端口(可去掉),访问虚机地址 + 端口号 +/stats 可以看到,例如:192.168.108.133:1080/stats listen stats bind 0.0.0.0:1080 mode http option httplog maxconn 10 stats refresh 30s stats uri /stats stats realm XingCloud\ Haproxy stats auth admin:admin #用这个账号登录,可以自己设置 stats auth Frank:Frank stats hide-version stats admin if TRUE

(三)创建日志文件 /var/log/haproxy/haproxy.log

cd /var/log
mkdir haproxy
cd haproxy
touch haproxy.log
chmod a+w haproxy.log

(四)开启 rsyslog 的 haproxy 的日志记录功能

vim /etc/rsyslog.cnf -- 修改 rsyslog.cfg 文件
    $ModLoad imudp  
    $UDPServerRun 514 
    将这两行前的 #去掉。在 local7.*                                                /var/log/boot.log 之后添加如下内容
    # Save haproxy log  
    local2.*                       /var/log/haproxy/haproxy.log
vim /etc/sysconfig/rsyslog -- 修改 rsylog 文件
SYSLOGD_OPTIONS=""  改为  SYSLOGD_OPTIONS="-r -m 2 -c 2"

(五)重启日志和 haproxy 服务

systemctl restart rsyslog
systemctl restart haproxy

(六)haproxy 相关命令

killall haproxy -- 停止 haproxy
ps -ef |grep haproxy |grep -v grep -- 查看 haproxy 的运行状态(这里直接可以通过配置的监听页面也可以看到 192.168.108.133:1080/stats)netstat -plantu | grep 7306 -- 查看端口 7306

(七)测试

 1. 输入网址 http://192.168.108.133:1080/stats 可以查看 Haproxy 的监考页面,出现这个页面也说明你 haproxy 配置成功了。

MySQL 的 HaProxy 反向代理和负载均衡

 

2.haproxy 代理访问后端的 mysql 数据库,这里我用的工具是 Navicat。这里 7306 连接的就是 192.168.108.140/133:3306 数据库,这里用的用户名和密码是 140/133 数据库的用户名和密码,这里 140 和 133 的用户名和密码需保持一致。有疑问的同学可以在 140 上新建个数据库,通过 7306 这个端口访问数据库也可以看见刚新建的数据库。关闭之后重新打开 192.168.108.133:7306 时,就会访问到 192.168.108.133:3306 数据库,实现 mysql 的均衡负载。

MySQL 的 HaProxy 反向代理和负载均衡

结束语:Haproxy 功能还是挺强大的,基于 Haproxy 代理的 web 应用,还有 web/mysql 的均衡负载,。这里一直遇到一个很棘手的问题,就是测试连接后端 mysql 数据库的时候,一直报 Host is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts’,最后解决的是查看 140 服务器上的 3306 端口一直有个连接占用着,并且没有连接成功,最后只能重启 140 的 mysql 数据库就好使了。这个问题现在没有办法复现,所以这里就不分析具体的错误原因了。这里主要就是 Haproxy 简单的应用,如果有不对或者疑问大家都可以积极指出。

Haproxy+Keepalived 搭建 Weblogic 高可用负载均衡集群 http://www.linuxidc.com/Linux/2013-09/89732.htm

Keepalived+HAProxy 配置高可用负载均衡 http://www.linuxidc.com/Linux/2012-03/56748.htm

CentOS 6.3 下 Haproxy+Keepalived+Apache 配置笔记 http://www.linuxidc.com/Linux/2013-06/85598.htm

Haproxy + KeepAlived 实现 WEB 群集 on CentOS 6 http://www.linuxidc.com/Linux/2012-03/55672.htm

HAProxy+Keepalived 实现高可用负载均衡 http://www.linuxidc.com/Linux/2016-06/132225.htm

使用 HAProxy 配置 HTTP 负载均衡器 http://www.linuxidc.com/Linux/2015-01/112487.htm

Ubuntu 16.04 下安装 HAProxy 1.5.11 做 tcp 负载均衡 http://www.linuxidc.com/Linux/2016-06/132689.htm

HAproxy 的详细介绍 :请点这里
HAproxy 的下载地址 :请点这里

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-12/138744.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3772字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19356
评论数
4
阅读量
8277942
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛 NAS-7:手把手教你免费内网穿透 -Cloudflare tunnel 前言 大家好,我是星...
星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛 NAS-2:飞牛配置 RAID 磁盘阵列 前言 大家好,我是星哥之前星哥写了《星哥带你玩飞牛 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛 NAS-4:飞牛 NAS 安装 istore 旁路由,家庭网络升级的最佳实践 开始 大家好我是...
2025年11月28日-Cloudflare史诗级事故:一次配置失误,引爆全球宕机

2025年11月28日-Cloudflare史诗级事故:一次配置失误,引爆全球宕机

2025 年 11 月 28 日 -Cloudflare 史诗级事故: 一次配置失误,引爆全球宕机 前言 继今...
星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛 NAS-5:飞牛 NAS 中的 Docker 功能介绍 大家好,我是星哥,今天给大家带来如何在...
如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的 Nano Banana Pro?附赠邪修的用法 前言 大家好,我是星哥,今天来介绍谷歌的 ...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...
星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛 NAS-14:解锁公网自由!Lucky 功能工具安装使用保姆级教程 作为 NAS 玩家,咱们最...
飞牛NAS升级到最新版,有线无法获取IP、无线网络莫名打开的BUG问题

飞牛NAS升级到最新版,有线无法获取IP、无线网络莫名打开的BUG问题

  飞牛 NAS 升级到最新版,有线无法获取 IP、无线网络莫名打开的 BUG 问题 星哥的飞牛 N...
开源项目绝版游戏保护计划:重温一下经典游戏

开源项目绝版游戏保护计划:重温一下经典游戏

  开源项目绝版游戏保护计划:重温一下经典游戏 在数字时代,游戏作为一种文化载体,面临着前所未有的生...
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...