接前一篇博客<keepalived+Master-Master-Slave实现双主高可用及读写分离>
地址http://lee90.blog.51cto.com/10414478/1825478
上一篇博文里面,我们只用了一个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.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;
再创建一个访问的账号,一会要通过它连接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的我就不详细演示如何配了。
最后,附上一张最终完成后机器拓扑图:
原文地址:http://lee90.blog.51cto.com/10414478/1826368