Mysql的Haproxy反向代理和负载均衡
来源:互联网 发布:八级技工 知乎 编辑:程序博客网 时间:2024/06/05 08:52
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 haproxyrpm -qi haproxyrpm -ql haproxy
(二)配置haproxy.cfg文件(重点)
cd /etc/haproxyvim 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/statslisten 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/logmkdir haproxycd haproxytouch haproxy.logchmod 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.logvim /etc/sysconfig/rsyslog --修改rsylog文件SYSLOGD_OPTIONS="" 改为 SYSLOGD_OPTIONS="-r -m 2 -c 2"
(五)重启日志和haproxy服务
systemctl restart rsyslogsystemctl restart haproxy
(六)haproxy相关命令
killall haproxy --停止haproxyps -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配置成功了。
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反向代理和负载均衡
- Mysql的Haproxy反向代理和负载均衡
- Haproxy——反向代理负载均衡
- Nginx的反向代理 和 负载均衡
- Nginx的负载均衡和反向代理
- Nginx的反向代理和负载均衡
- Nginx的反向代理和负载均衡
- 反向代理和负载均衡的关系
- nginx的反向代理和负载均衡
- 反向代理和负载均衡的关系
- 使用haproxy实现反向代理负载均衡实战
- 反向代理负载均衡Nginx的http和tcp代理
- 反向代理原理,反向代理负载均衡,免费反向代理服务器软件nginx和nat123的使用方法
- HAProxy MySQL负载均衡
- nginx的反向代理和负载均衡的区别是什么
- nginx的反向代理和负载均衡的区别是什么
- ubuntu apache2 的负载均衡和反向代理
- ubuntu apache2 的负载均衡和反向代理
- Android:学习AIDL,这一篇文章就够了
- http8种请求方式
- 【信息安全】一些数论小知识
- W:Failed to fetch http://archive.ubuntukylin.com:10006/ubuntukylin/dists/pre
- 最好用的java商城_惠多javashop商城o2o优惠券系统介绍
- Mysql的Haproxy反向代理和负载均衡
- Spring单例模式与线程安全ThreadLocal
- 中大型Java多用户B2B2C商城系统开发的心得体会和困难!!!
- keepalived + haproxy 实现web 双主模型的高可用负载均衡--转
- java多用户多店铺 B2B2C 商城电商系统源码代码介绍
- 【每天一个Linux命令】A-adduser
- Nginx 与 Tomcat : 413 Request Entity Too Large(请求实体太大)
- mysql如何设置密码
- maven setting为什么需要配置镜像