使用Mycat集群部署及Haproxy负载均衡

目的

外界将读写请求发给Haproxy,Haproxy将请求分发给mycat可用节点,mycat服务器再根据读或写向mysql服务器进行数据操作。

前提

在之前mycat代理mysql读写分离的基础上进行配置

haproxy 119.23.237.241 

mycat_01 118.25.178.145

mycat_02 106.12.203.18 

步骤

  • 每个mycat节点配置xinetd
  • 安装haproxy
  • 配置rsyslog
  • 测试连接

操作

配置xinetd

安装

yum install xinetd

检查/etc/xinetd.conf的末尾是否有 includedir /etc/xinetd.d ,没有就加上

检查 /etc/xinetd.d 目录是否存在,不存在则创建

添加服务:检测mycat服务器状态

vim /etc/xinetd.d/mycat_status


service mycat_status
{
        flags = REUSE
        socket_type = stream
        port = 48700
        wait = no
        user = root
        server = /usr/local/bin/mycat_status
        log_on_failure += USERID
        disable = no
}

添加服务脚本

vim /usr/local/bin/mycat_status

#!/bin/bash
#/usr/local/bin/mycat_status.sh
# This script checks if a Mycat server is healthy running on localhost.
# It will return:
# "HTTP/1.x 200 OK\r" (if Mycat is running smoothly)
# "HTTP/1.x 503 Internal Server Error\r" (else)
mycat=`/usr/local/mycat/bin/mycat status | 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

给服务和脚本添加权限

chmod 755 /etc/xinetd.d/mycat_status
chmod 755 /usr/local/bin/mycat_status

service添加监听端口

vim /etc/service

mycat_status    48700/tcp    #mycat_status

启动xinetd

service xinetd restart

查看是否配置成功

netstat -antup|grep 48700

开启服务器48700端口

测试脚本

/usr/local/bin/mycat_status

 mycat服务未开启

开启mycat服务后

xinetd mycat检测服务脚本配置成功

安装haproxy

解压压缩包至/usr/local

添加依赖

yum install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

编译

make TARGET=linux2628 ARCH=x86_64 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 PREFIX=/usr/local/haproxy

## TARGET是指定内核版本,高于2.6.28的建议设置为linux2628,Linux操作系统内核版本查看命令# uname -r, 
ARCH指定系统架构,openssl pcre zlib 这三个包需要安装不然不支持

创建目录

/usr/local/haproxy

执行安装

cd /usr/local/haproxy-1.6.14

make install PREFIX=/usr/local/haproxy

创建配置文件目录

mkdir -p /usr/local/haproxy/conf
mkdir -p /etc/haproxy/

创建配置文件haproxy.cfg

global
        log 127.0.0.1 local0 info ##记日志的功能
        maxconn 4096
        chroot /usr/share/haproxy
	group haproxy
	user haproxy
	nbproc 1
        daemon
 
defaults
        log global
	mode http
        option httplog
        retries 3
        option redispatch
        maxconn 2000
        timeout connect 5000
        timeout client 50000
        timeout server 50000
 
listen admin_status
        bind :48800
        stats uri /admin-status ##统计页面
        stats auth admin:admin
        mode http
        option httplog
 
listen allmycat_service
        bind :3307
        mode tcp
        option tcplog
        option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www
        balance roundrobin
        server mycat_01 118.25.178.145:8066 check port 48700 inter 2s rise 2 fall 3 weight 10
        server mycat_02 106.12.203.18:8066 check port 48700 inter 2s rise 2 fall 3 weight 10
        timeout server 20000
 

添加配置文件软连接

ln -s /usr/local/haproxy/conf/haproxy.cfg /etc/haproxy/haproxy.cfg

复制开机启动文件,赋予权限

cp /usr/local/haproxy-1.6.14/examples/haproxy.init /etc/rc.d/init.d/haproxy

chmod +x /etc/rc.d/init.d/haproxy

为haproxy脚本建立软连接

ln -s /usr/local/haproxy/sbin/haproxy /usr/sbin

设置haproxy开机启动

chkconfig --add haproxy
chkconfig haproxy on

根据haproxy.cfg需要做以下操作:

添加用户和用户组

groupadd haproxy
useradd -g haproxy haproxy

创建haproxy运行路径

mkdir /usr/share/haproxy

开启3307(连接haproxy)和48800(监控)端口

配置rsyslog 的haproxy日志

查看是否已经安装rsyslog

yum list installed|grep rsyslog

否则

yum install rsyslog

修改rsyslog.conf,把这俩前的#号去掉

vim /etc/rsyslog.conf

配置中若没有$IncludeConfig /etc/rsyslog.d/*.conf,需要加上,否则不能加载haproxy.conf的配置

创建haproxy.conf让rsyslog.conf来加载此配置

vim /etc/rsyslog.d/haproxy.conf

local0.* /var/log/haproxy.log

&~

配置保存后,启动rsyslog服务

service rsyslog restart

配置系统ip包转发

vim /etc/sysctl.conf

#添加
net.ipv4.ip_forward = 1

使配置生效

sysctl -p

启动Haproxy服务

service haproxy start

 测试连接

用navicat连接haproxy,用户信息为mycat配置的可访问用户信息

可用看到逻辑库基本信息

访问登录48800端口可以查看

成功配置。

猜你喜欢

转载自blog.csdn.net/qq_33683097/article/details/84988350
今日推荐