一、环境
第一台SQL节点:ip:10.0.31.40;port:4306
第二台SQL节点:ip:10.0.31.41;port:4306
haproxy服务器:ip:10.0.31.49。haproxy最好用最新的,老的版本可能不支持mysql-check,网上的采用脚本的方式过于麻烦。
二、配置
至于怎么安装haproxy就不记录了,很容易安装。我的安装目录为:/usr/local/haproxy
在/usr/local/haproxy/etc/下新建haproxy.cfg配置文件。内容为:
haproxy.cfg# this config needs haproxy-1.1.28 or haproxy-1.2.1 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 round robin #调度算法 server mysql1 10.0.31.40:4306 weight 1 check inter 1s rise 2 fall 2 #健康检查加上check server mysql2 10.0.31.41:4306 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 :
依照权重一次调度服务,当服务器的处理时间公平分配时这是最快的最顺畅的算法 。
启动:
登录浏览器查看:http://10.0.31.49:8888/dbs输入admin admin登录
停掉一个sql节点:service mysqld stop
再次查看:
可以看到检查出了mysql1不可用,service mysqld start 恢复mysql1的实例。
这样,我们就可以不关心自己连接的是哪个sql节点,只要有一个sql节点可用,我们就能使用sql服务。
注意,这里我们不在连接sql节点的ip和4306服务端口,而是连接的haproxy的ip和代理出来的端口。