vlambda博客
学习文章列表

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

添加以下内容:

Haproxy+mycat+mysql集群搭建和高可用

#!/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

在最后添加

Haproxy+mycat+mysql集群搭建和高可用

mycat_status48700/tcp # mycat_status

8.保存后,重启xinetd服务

Systemctlrestart xinetd.service

9.查看服务从是否成功

Haproxy+mycat+mysql集群搭建和高可用

检测到端口 说明配置成功。

 

同样的在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表示关闭状态。