haproxy实现mysql从库负载均衡
本文主要讲述通过haproxy实现mysql从库间的负载均衡,至于mysql主从的搭建,本文不再重述,可以参考我之前写的博客。
1.首先下载haproxy包
wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.13.tar.gz
2.安装
tar zxvf haproxy-1.4.13.tar.gz cd haproxy-1.4.13/ make TARGET=linux26 PREFIX=/usr/local/haproxy ##我的系统内核为2.6,所以target=linux26 make install PREFIX=/usr/local/haproxy
3.进行配置
mkdir /etc/haproxy touch /etc/haproxy/haproxy.cfg vi /etc/haproxy/haproxy.cfg
##写入以下内容:
global daemon nbproc 1 pidfile /var/run/haproxy.pid defaults mode tcp #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK retries 2 #两次连接失败就认为是服务器不可用,也可以通过后面设置 option redispatch #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器 option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接 maxconn 4096 #默认的最大连接数 timeout connect 5000ms #连接超时 timeout client 30000ms #客户端超时 timeout server 30000ms #服务器超时 #timeout check 2000 #=心跳检测超时 log 127.0.0.1 local0 err #[err warning info debug] ########test1配置################# listen test1 bind 0.0.0.0:3306 mode tcp #maxconn 4086 #log 127.0.0.1 local0 debug server s1 192.168.103.59:3306 server s2 192.168.103.52:3306 ########frontend配置##############
在test1配置下添加server s1 192.168.103.59:3306和server s2 192.168.103.52:3306,即mysql从库的ip和端口号,
多个从库在下面继续添加。
4.启动haproxy
在解压目录下执行haproxy -f /etc/haproxy/haproxy.cfg
![](https://images2015.cnblogs.com/blog/345832/201606/345832-20160611183140902-1430779727.png)
先将占用3306端口的程序停掉
haproxy -f /etc/haproxy/haproxy.cfg
(若提示错误:bash: haproxy: 未找到命令
执行 1 cd /usr/local/haproxy/sbin
2 ./haproxy -f /etc/haproxy/haproxy.cfg
![](https://images2015.cnblogs.com/blog/345832/201606/345832-20160611183205933-1583144340.png)
)
![](https://images2015.cnblogs.com/blog/345832/201606/345832-20160611183227855-1068986938.png)
5.测试
使用navicat连接安装haproxy的机器
第一次连的52
![](https://images2015.cnblogs.com/blog/345832/201606/345832-20160611183333527-94628607.png)
关闭连接,重新连103.55
![](https://images2015.cnblogs.com/blog/345832/201606/345832-20160611183350902-549062169.png)
可见实现了mysql的负载均衡。
6.其他注意事项
查看haproxy的进程
ps -ef | grep haproxy
![](https://images2015.cnblogs.com/blog/345832/201606/345832-20160611183510105-1086862836.png)
kill -9 28924
干掉haproxy运行的进程
![](https://images2015.cnblogs.com/blog/345832/201606/345832-20160611183536683-927359718.png)
再连55失败
![](https://images2015.cnblogs.com/blog/345832/201606/345832-20160611183554043-1807839458.png)
查看所有进程
ps -ef
![](https://images2015.cnblogs.com/blog/345832/201606/345832-20160611183618246-725886247.png)
![](https://images2015.cnblogs.com/blog/345832/201606/345832-20160611183639996-2106555220.png)
修改配置文件:
![](https://images2015.cnblogs.com/blog/345832/201606/345832-20160611183742043-96496138.png)
重新启动haproxy:
![](https://images2015.cnblogs.com/blog/345832/201606/345832-20160611183806308-788997312.png)