Mysql的Haproxy反向代理和负载均衡
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
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
option redispatch
maxconn
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:
mode tcp
balance roundrobin
server mysql1 192.168.108.140:3306
server mysql2 192.168.108.133:3306 #haproxy监听端口(可去掉),访问虚机地址+端口号+/stats可以看到,例如:192.168.108.133:/stats
listen stats
bind 0.0.0.0:
mode http
option httplog
maxconn
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
将这两行前的#去掉。
在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.:/stats)
netstat -plantu | grep --查看端口7306
(七)测试
1.输入网址http://192.168.108.133:1080/stats可以查看Haproxy的监考页面,出现这个页面也说明你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的均衡负载。

结束语:Haproxy功能还是挺强大的,基于Haproxy代理的web应用,还有web/mysql的均衡负载,。这里一直遇到一个很棘手的问题,就是测试连接后端mysql数据库的时候,一直报Host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts',最后解决的是查看140服务器上的3306端口一直有个连接占用着,并且没有连接成功,最后只能重启140的mysql数据库就好使了。这个问题现在没有办法复现,所以这里就不分析具体的错误原因了。这里主要就是Haproxy简单的应用,如果有不对或者疑问大家都可以积极指出。
Mysql的Haproxy反向代理和负载均衡的更多相关文章
- nginx详解反向代理、负载均衡、LNMP架构上线动态网站(week4_day1_part1)-技术流ken
nginx介绍 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理 ...
- Linux实战教学笔记30:Nginx反向代理与负载均衡应用实践
1.1 集群简介 简单地说,集群就是指一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器.这些服务器之间可 ...
- nginx 反向代理与负载均衡应用实践
集群介绍 集群就是指一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器.这些服务器之间可以彼此通信,协同向 ...
- [转帖]nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件
nginx学习,看这一篇就够了:下载.安装.使用:正向代理.反向代理.负载均衡.常用命令和配置文件 2019-10-09 15:53:47 冯insist 阅读数 7285 文章标签: nginx学习 ...
- Nginx的反向代理和负载均衡服务
Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行. ...
- nginx 反向代理实现负载均衡*理论
Nginx负载均衡集群介绍 负载均衡集群提供了一种廉价,有效,透明的方法,来扩展网络设备和服务器的负载,带宽和吞吐量,同时加强了网络数据处理能力,提高了网络的灵活性和可用性. 搭建负载均衡服务的需求: ...
- Nginx反向代理与负载均衡应用实践(一)
Nginx反向代理与负载均衡应用实践(一) 链接:https://pan.baidu.com/s/1xB20bnuanh0Avs4kwRpSXQ 提取码:migq 复制这段内容后打开百度网盘手机App ...
- Nginx(三):反向代理,负载均衡
环境准备 配置反向代理,负载均衡,动静分离需要的必备环境,JDK,2个tomcat开启8080和8081端口. 安装jdk [root@localhost ~]# rpm -qa|grep jav ...
- nginx反向代理、负载均衡以及分布式下的session保持
[前言]部署服务器用到了nginx,相比较于apache并发能力更强,优点也比其多得多.虽然我的项目可能用不到这么多性能,还是部署一个流行的服务器吧! 此篇博文主要学习nginx(ingine x)的 ...
随机推荐
- 利用Netty构建自定义协议的通信
在复杂的网络世界中,各种应用之间通信需要依赖各种各样的协议,比如:HTTP,Telnet,FTP,SMTP等等. 在开发过程中,有时候我们需要构建一些适应自己业务的应用层协议,Netty作为一个非常优 ...
- ABP文档 - 审计日志
文档目录 本节内容: 简介 关于 IAuditingStore 配置 通过特性启用/禁用 注意 简介 维基百科:“一个审计追踪(也叫审计日志)是一个安全相关的时序记录.记录组.和/或记录源和目标,作为 ...
- 【WPF】运用MEF实现窗口的动态扩展
若干年前,老周写了几篇有关MEF的烂文,简单地说,MEF是一种动态扩展技术,比如可以指定以某个程序集或某个目录为搜索范围,应用程序在运行时会自动搜索符合条件的类型,并自动完成导入,这样做的好处是,主程 ...
- CSS3 Notes: -webkit-box-reflect实现倒影
平常我们要实现倒影的效果,一般的做法是使用多个DOM元素绝对定位+scale(负-1)或者rotate.这种方法的缺点是占据空间以及DOM元素过多. 在使用webkit内核的浏览器中(chrome,s ...
- 【原创经验分享】JQuery(Ajax)调用WCF服务
最近在学习这个WCF,由于刚开始学 不久,发现网上的一些WCF教程都比较简单,感觉功能跟WebService没什么特别大的区别,但是看网上的介绍,就说WCF比WebService牛逼多少多少,反正我刚 ...
- 检索COM类工厂中CLSID为{00024500-0000-0000-C000-000000000046}的组件时失败
具体解决方法如下: 1:在服务器上安装office的Excel软件: 2:在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务&q ...
- OpenNLP:驾驭文本,分词那些事
OpenNLP:驾驭文本,分词那些事 作者 白宁超 2016年3月27日19:55:03 摘要:字符串.字符数组以及其他文本表示的处理库构成大部分文本处理程序的基础.大部分语言都包括基本的处理库,这也 ...
- SQLServer学习笔记系列1
一.前言 一直自己没有学习做笔记的习惯,所以为了加强自己对知识的深入理解,决定将学习笔记写下来,希望向各位大牛们学习交流! 不当之处请斧正!在此感谢!这边就先从学习Sqlserver写起,自己本身对数 ...
- react入门(3)
在第一篇文章里我们介绍了jsx.组件.css写法 点击查看react入门(1) 第二篇文章里我们介绍了事件.this.props.children.props....other.map循环 点击查 ...
- IL接口和类的属性
上一篇文章学习了IL的入门,接下来我们再通过两个例子来了解下类的属性.构造函数以及接口的使用 一.类的属性.构造函数 1.先看下我们要构建的类的C#代码,然后再进行IL的实现,示例代码如下: [Ser ...