64yuty 发表于 2016-7-15 10:03:43

haproxy实现mysql的读负载均衡

上一篇博文里面,我们只用了一个slave节点。
实际生产环境中,我们肯定有多个slave节点负责读数据库。

假设我们还有一个配置好的slave,IP为192.168.2.15。那么现在的情况是:

Master1:192.168.2.13
Master2:192.168.2.14
VIP:192.168.2.100
Slave1:192.168.2.11
Slave2:192.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.iyunv.com/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 -ycd /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 1checkinter 1s rise 2 fall 2    server slave2 192.168.2.15:3306 weight 1checkinter 1s rise 2 fall 2
在各个mysqlslave节点上创建账号
创建允许haproxy连接到数据库的账号获取其运行状态> GRANT PROCESS ON *.* TO'haproxy_check'@'192.168.2.%';> flush privileges;
再创建一个访问的账号,一会要通过它连接haproxy的3336节点尝试访问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状态了。slave2是down状态。因为我们实际上192.168.2.15这台主机都没开机(slave2的配置和slave1一样的方法)。

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


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


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

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


页: [1]
查看完整版本: haproxy实现mysql的读负载均衡