您的位置:首页 > 运维架构 > 反向代理

Mysql的Haproxy反向代理和负载均衡

2017-01-05 14:02 169 查看
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
    
----------
**代理多个mysql数据库地址
listen  proxy-mysql 0.0.0.0:3306
mode tcp
option tcplog
server MySQL1 x1.x1.x1:3306
listen  proxy-mysql 0.0.0.0:3307
mode tcp
option tcplog
server MySQL2 x2.x2.x2: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

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相关命令

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


http://www.cnblogs.com/jave1ove/p/5980053.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: