码迷,mamicode.com
首页 > 数据库 > 详细

haproxy实现mysql的读负载均衡

时间:2016-07-14 19:45:10      阅读:293      评论:0      收藏:0      [点我收藏+]

标签:haproxy mysql 读负载均衡

接前一篇博客<keepalived+Master-Master-Slave实现双主高可用及读写分离>

地址http://lee90.blog.51cto.com/10414478/1825478


上一篇博文里面,我们只用了一个slave节点。

实际生产环境中,我们肯定有多个slave节点负责读数据库。


假设我们还有一个配置好的slaveIP192.168.2.15。那么现在的情况是:


Master1192.168.2.13

Master2192.168.2.14

VIP192.168.2.100

Slave1192.168.2.11

Slave2192.168.2.15

Web服务器:192.168.2.11


haproxy的安装配置

演示用法而已,我们就将haproxy安装到192.168.2.11上,能验证效果即可。

 

参考文档:

    官方:http://cbonte.github.io/haproxy-dconv/configuration-1.6.html

    http://blog.chinaunix.net/uid-30212356-id-5698536.html

    http://blog.c1gstudio.com/archives/1728?utm_source=tuicool&utm_medium=referral

 

软件版本:

haproxy-1.5.4-2 haproxy1.6配置文件和以往的有点不一样,这里没有用最新的】

yum install haproxy -y

cd /etc/haproxy

 

vim 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

 

    stats socket /var/lib/haproxy/stats

 

defaults

    mode                    tcp

    log                     global

    option                  dontlognull

    retries                 3

    timeout http-request    10s

    timeout queue           1m

    timeout connect         10s

    timeout client          1m

    timeout server          1m

    timeout http-keep-alive 10s

    timeout check           10s

    maxconn                 3000

 

## 定义一个监控页面,监听在1080端口,并启用了验证机制

listenstats

    mode http

    bind 0.0.0.0:1080

    stats enable

    stats hide-version

    stats uri     /haproxy

    stats realm   Haproxy\ Statistics

    stats auth    admin:123456

    stats admin if TRUE

 

listenmysql

    bind 0.0.0.0:3336

    mode tcp

    option mysql-check userhaproxy_check   # 定义了一个用于后端的mysql健康检查的用户[主要:这个用户要在后端的slave上存在才行]

    balance roundrobin

    server slave1 192.168.2.11:3306 weight 1check  inter 1s rise 2 fall 2

    server slave2 192.168.2.15:3306 weight 1check  inter 1s rise 2 fall 2

 

在各个mysqlslave节点上创建账号

创建允许haproxy连接到数据库的账号获取其运行状态

> GRANT PROCESS ON *.* TO‘haproxy_check‘@‘192.168.2.%‘;

> flush privileges;

 

再创建一个访问的账号,一会要通过它连接haproxy3336节点尝试访问slave,以便验证是否能负载均衡

> GRANT ALL ON *.* TO‘lirl‘@‘192.168.2.%‘ identified by ‘123456‘;

> flush privileges;

 

启动haproxy

/etc/init.d/haproxy start

 

浏览器访问http://192.168.2.11:1080/haproxy

输入用户名admin 密码123456 进到下面的界面:

技术分享

dashboard界面,可看到slave1 已经是up状态了。slave2down状态。因为我们实际上192.168.2.15这台主机都没开机(slave2的配置和slave1一样的方法)

 

我们在其他节点,用haproxy访问后端的数据库,如下图,已经能连接到了:

技术分享


slave上,用root账号登录查看,如下图,能看到lirl账号登录上来了。

技术分享


slave2的我就不详细演示如何配了。


最后,附上一张最终完成后机器拓扑图:

技术分享


haproxy实现mysql的读负载均衡

标签:haproxy mysql 读负载均衡

原文地址:http://lee90.blog.51cto.com/10414478/1826368

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!