Haproxy+mycat+mysql集群搭建和高可用
Haproxy+mycat+mysql集群搭建介绍
Mycat集群的存在可防止mycat集群中出现单点故障,但是无法实现自动故障转移,一个节点挂掉,无法能够自动切换到存活的节点中去。Haproxy的引入,利用心跳机制,可以检测mycat的存活状态,有直观的web检测界面。同时能够实现mycat节点故障自动转移,实现高可用性。
部署环境介绍及其软件版本
服务器节点:192.168.71.3 mysql节点1 (win10)
192.168.71.128 mysql节点2 (centos7虚拟机)
192.168.71.129 mycat节点1 (centos7 虚拟机)
192.168.71.130 mycat 节点2 (centos7虚拟机)
192.168.71.131 haproxy节点 (centos7虚拟机)
检查Mycat状态服务配置
在192.168.71.129mycat节点1配置。
Mycat节点需要增加mycat状态检查服务脚本,并开放相应的检测端口,可以使用网络守护进程xinetd来实现。
1.通过yum安装xinetd
Yum -y installxinetd
2.检查etc/xinetd.conf配置文件末尾是否有includedir /etc/xinetd.d ,没有就加上;
3.检查/etc/xinetd.d 目录是否存在,不存在则创建;
Mkdir /etc/xinetd.d
4.增加 MyCat存活状态检测服务配置
Vim /etc/xinetd.d/mycat.status
添加以下内容:
servicemycat_status
{
flags =REUSE
socket_type= stream ## 封包处理方式,Stream 为 TCP 数据包
port =48700 ## 服务监听端口
wait = no ## 表示不需等待,即服务将以多线程的方式运行
user =root ## 执行此服务进程的用户
server=/usr/local/bin/mycat_status ## 需要启动的服务脚本
log_on_failure+= USERID ## 登录失败记录的内容
disable =no ## 要启动服务,将此参数设置为 no
}
5.添加/usr/local/bin/mycat_status 服务脚本
vi/usr/local/bin/mycat_status
添加以下内容:
#!/bin/bash
#/usr/local/bin/mycat_status.sh
# Thisscript checks if a mycat server is healthy running on localhost.
# It willreturn:
#"HTTP/1.x 200 OK\r" (if mycat is running smoothly)
#"HTTP/1.x 503 Internal Server Error\r" (else)
mycat=`/mount/usr/local/mycat/bin/mycatstatus | grep 'not running' | wc -l`
if ["$mycat" = "0" ]; then
/bin/echo-e "HTTP/1.1 200 OK\r\n"
else
/bin/echo-e "HTTP/1.1 503 Service Unavailable\r\n"
Fi
6.给添加的脚本增加可执行权限
Chmod u+x/usr/local/bin/mycat_status
7.在/etc/services添加mycat_status服务端口
Vim /etc/services
在最后添加
mycat_status48700/tcp # mycat_status
8.保存后,重启xinetd服务
Systemctlrestart xinetd.service
9.查看服务从是否成功
检测到端口 说明配置成功。
同样的在192.168.71.130 mycat 节点2 (centos7 虚拟机)配置mycat状态检测脚本。
Haproxy配置说明
1.开启 rsyslog 的 haproxy 日志记录功能
默认情况下 haproxy 是不记录日志的,如果需要记录日志,还需要配置系统的 syslog,在 linux系统中是rsyslog 服务。syslog 服务器可以用作一个网络中的日志监控中心。
vi /etc/rsyslog.conf
把 $ModLoad imudp 和 $UDPServerRun 514 前面的 # 去掉 。
$ModLoad imudp ## 是模块名,支持 UDP 协议
$UDPServerRun 514 ##允许 514 端口接收使用 UDP 和TCP 协议转发过来的日志,
##而 rsyslog 在默认情况下,正是在 514 端口监听 UDP
修改haproxy的配置文件
Frontend mycat:定义关联的前端;
Backend mycat_server;定义后端服务器连接,以及后端服务器健康检测;
Listen stats:定义一个haproxy的信息检测页面。
Mycat的状态栏是up表示开启状态。Down表示关闭状态。