一、利用haproxy做MySQL的负载均衡
1.架构
1台haproxy服务器、2台MySQL的服务器
haproxy能够正常使用、MySQL服务器也能够正常访问。
2.haproxy的配置文件
(1)我的配置文件[可选]
vim /etc/haproxy/haproxy.cfg
# this config needs haproxy-1.1.28 or haproxy-1.2.1
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
#log loghost local0 info
maxconn 4096
#chroot /usr/share/haproxy
uid 99
gid 99
#daemon
debug
#quiet
defaults
log global
mode http
option httplog
option dontlognull
retries 3
#redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen mysql_3306 *:3306
mode tcp
option tcpka
balance roundrobin
server mysql_01 192.168.8.116:3306 check inter 3000 rise 1 fall 3
server mysql_02 192.168.8.115:3306 check inter 3000 rise 1 fall 3
(2)配置文件的修改【必选】
只需要在你原来的haproxy配置文件中添加如下内容即可:
listen mysql_3306 *:3306
mode tcp
option tcpka
balance roundrobin
server mysql_01 192.168.8.116:3306 check inter 3000 rise 1 fall 3
server mysql_02 192.168.8.115:3306 check inter 3000 rise 1 fall 3
说明:
*:3306 haproxy服务器(本机)的IP与端口,即客户端可用 haproxy_IP:3306连接数据库
mode tcp 以tcp的方式连接数据库。
option tcpka 开启tcp检测服务器存活功能
balance roundrobin 采用轮询的调度方式
mysql_01 为名字,可随便写,不冲突就行
192.168.8.116:3306 MySQL服务器的IP与端口号
inter 3000 每隔3000ms检测一个健康状态
rise 1 在离线的状态下,只要检测1次成功,就让其上线;
fall 3 如果检测3次都失败,将此server剔除
3.开启haproxy的日志功能
haproxy默认是不会开启日志的,所以要手动开启。而且要利用rsyslog去记录日志。
(1)修改系统日志配置文件
vim /etc/rsyslog.conf
记住此处local0,haproxy.cnf文件中也要开启0的。详情见(3)修改haproxy配置文件
(2)修改系统日志配置参数
vim /etc/sysconfig/rsyslog
-c 2 指定rsyslog运行的版本号
-r 开启接受外来日志消息的功能,其监控514UDP端口
-m 0 修改syslog的内部mark消息写入间隔时间(0为关闭,无间隔,随时都写)(2为每2分钟写入一次)
(3)修改haproxy的配置文件
vim /etc/haproxy/haproxy.cfg
此处的local0和(1)中文件设置相对应。此处我设置的日志级别为info
(4)重启服务
service haproxy restart
service rsyslog restart
(5)查看日志
2019-10-12T14:42:49+08:00(时间) localhost(主机) haproxy[26584](程序): 192.168.8.112:53347 [12/Oct/2019:14:41:59.812] mysql_3306 mysql_3306/mysql_02 0/0/50016 740 cD 2/2/2/2/0 0/0