昊漫玉 发表于 2015-9-4 14:32:48

用Haproxy给MySQL做负载均衡

  1.安装



# 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配置文件。内容为:
  



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
optiondontlognull
retries 3
option redispatch
maxconn         2000
contimeout      5000
clitimeout      50000
srvtimeout      50000
listenmysql
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 checkinter 1s rise 2 fall 2 #健康检查加上check
server mysql2 192.168.137.46:3306 weight 1 checkinter 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 启动:


# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.cfg
# cd ../sbin/
# ls
haproxy
# ps -ef | grep haproxy
root      4223   10 18:12 ?      00:00:00 /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.cfg
root      422837540 18:12 pts/0    00:00:00 grep haproxy
#


4 登录浏览器查看:http://192.168.137.46:8888/dbs输入admin admin登录



停掉一个sql节点:service mysqld stop
再次查看:

  

可以看到检查出了mysql1不可用,service mysqld start 恢复mysql1的实例。

  

虽然测试成功 但是还有一个问题 就是现在访问数据库的用户root不能有密码, 加上了密码就显示数据库DOWN 要想数据库加密码 需要将
  option mysql-check user root 这行注释点
页: [1]
查看完整版本: 用Haproxy给MySQL做负载均衡