上一篇博文里面,我们只用了一个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/archiv ... 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;
再创建一个访问的账号,一会要通过它连接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的我就不详细演示如何配了。
最后,附上一张最终完成后机器拓扑图:
|