本文基于PXC 5.7集群环境来配置Haproxy以及结合Keepalived实现MySQL的读写分离,以下为主要配置方法及其步骤。
参考文档:配置Haproxy + Keepalived +PXC 5.7
部分配置文件由于无法正常启动,按可以启动的配置进行修改
一、当前环境
Haproxy IP | keepalived IP(两台主机都部署haproxy以及keepalived)
192.168.81.19 hp1
192.168.81.20 hp2
192.168.81.100 vip
PXC IP
192.168.1.13 db1
192.168.1.14 db2
192.168.1.17 db3
client
192.168.1.200 client
安装mariadb测试访问即可
#more /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
#mysql -V
mysql Ver 14.14 Distrib 5.7.19-17, for Linux (x86_64) using 6.2
二、配置PXC节点监控
1、PXC 三节点安装配置xinetd服务
以下以第一节点为示例
[root@db1~]# yum install xinetd -y
[root@db1 ~]# echo ‘mysqlchk 9200/tcp # mysqlchk’ >> /etc/services
[root@db1 ~]# systemctl enable xinetd
[root@db1 ~]# systemctl start xinetd
2.rpm包安装的pxc发现无法启动,使用源码包的配置成功,详细文章参考:
MySQL高可用——PXC集群
三、Haproxy安装与配置
1、安装配置haproxy
以下以192.168.1.19 hp1节点示例
[root@hp1 ~]# yum install haproxy -y
[root@hp1 ~]# cp /etc/haproxy/haproxy.cfg{,.org}
[root@hp1 ~]#cp /etc/haproxy/haproxy.cfg{,.bak}
[root@hp1 ~]# vim /etc/haproxy/haproxy.cfg
main FRontend which proxys to the backends
listen stats 0.0.0.0:1080
stats refresh 30s
stats uri /stats
stats realm Haproxy Manager
stats auth admin:admin
listen proxy 0.0.0.0:3306
mode tcp # mysql 得使用 tcp 协议
option tcpka # 使用长连接
balance leastconn # 最小连接调度算法
server mysql1 192.168.1.13:3306 check inter 3000 rise 1 maxconn 1000 fall 3
server mysql2 192.168.1.14:3306 check inter 3000 rise 1 maxconn 1000 fall 3
server mysql3 192.168.1.17:3306 check inter 3000 rise 1 maxconn 1000 fall 3
haproxy日志配置(根据需要,此步骤可省略)
[root@hp1 ~]# rpm -qa|grep rsyslog
rsyslog-mmjsonparse-7.4.7-12.el7.x86_64
rsyslog-7.4.7-12.el7.x86_64
[root@hp1 ~]# rpm -ql rsyslog |grep conf$
/etc/rsyslog.conf
[root@hp1 ~]# cp /etc/rsyslog.conf{,.org}
[root@hp1 ~]# vim /etc/rsyslog.conf
$ModLoad imudp ###该行注释去掉
$UDPServerRun 514 ###该行注释去掉
local0.* /var/log/haproxy.log ###文件尾部添加改行
[root@hp1 ~]# cp /etc/sysconfig/rsyslog{,.org}
[root@hp1 ~]# vim /etc/sysconfig/rsyslog
SYSLOGD_OPTIONS="-r -m 0 -c 2" ###修改该行
[root@hp1 ~]# vim /etc/haproxy/haproxy.cfg
log 127.0.0.1 local0 ###添加该行到global段
启动日志服务及haproxy服务
[root@hp1 ~]# systemctl restart rsyslog.service
[root@hp1 ~]# systemctl start haproxy.service
[root@hp1 ~]# netstat -nltp|grep haproxy
tcp 0 0 0.0.0