用Haproxy给MySQL做负载均衡
1.安装
1
2
3
4
5 |
# wget http: //haproxy.1wt.eu/download/1.4/src/haproxy-1.4.24.tar.gz # tar zcvf haproxy- 1.4 . 24 .tar.gz # cd haproxy- 1.4 . 24 # make TARGET=linux26 PREFIX=/usr/local/haproxy #将haproxy安装到/usr/local/haproxy # make install PREFIX=/usr/local/haproxy |
2.配置
在/usr/local/haproxy/etc/下新建haproxy.cfg配置文件。内容为:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 |
global log 127.0 . 0.1
local0 info #日志相关 log 127.0 . 0.1
local1 notice maxconn 4096 chroot /usr/local/haproxy uid root gid root daemon #debug #quiet pidfile /usr/local/haproxy/haproxy.pid defaults log global mode http #option httplog option dontlognull retries 3 option redispatch maxconn 2000 contimeout 5000 clitimeout 50000 srvtimeout 50000 listen mysql bind 0.0 . 0.0 : 23306
#代理端口 mode tcp #模式 TCP option mysql-check user root #mysql健康检查 root为mysql登录用户名 balance roundrobin #调度算法 server mysql1 192.168 . 137.122 : 3306
weight 1 check inter 1s rise 2
fall 2 #健康检查加上check server mysql2 192.168 . 137.46 : 3306
weight 1 check inter 1s rise 2
fall 2 listen stats #监控 mode http bind 0.0 . 0.0 : 8888 stats enable stats uri /dbs stats realm Global\ statistics stats auth admin:admin |
说明:mysql负载均衡要用tcp模式,在使用负载均衡前,需要mysql能让haproxy的ip远程访问,inter表示健康检查的间隔,单位为毫秒 可以用1s等,fall代表健康检查失败2回后放弃检查。rise代表连续健康检查成功2此后将认为服务器可用。默认的,haproxy认为服务时永远可用的,除非加上check让haproxy确认服务是否真的可用。
调度算法:
roundrobin :
依照权重一次调度服务,当服务器的处理时间公平分配时这是最快的最顺畅的算法 。
3 启动:
1
2
3
4
5
6
7
8 |
[root @web2
etc]# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.cfg [root @web2
etc]# cd ../sbin/ [root @web2
sbin]# ls haproxy [root @web2
sbin]# ps -ef | grep haproxy root 4223
1 0 18 : 12
? 00 : 00 : 00
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.cfg root 4228
3754 0 18 : 12
pts/ 0
00 : 00 : 00
grep haproxy [root @web2
sbin]# |
4 登录浏览器查看:http://192.168.137.46:8888/dbs输入admin admin登录
停掉一个sql节点:service mysqld stop
再次查看:
可以看到检查出了mysql1不可用,service mysqld start 恢复mysql1的实例。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。