动力节点首页 全国咨询热线:400-8080-105

绑定手机号,登录
手机号

验证码

微信登录
手机号登录
手机号

验证码

微信登录与注册
微信扫码登录与注册

扫码关注微信公众号完成登录与注册
手机号登录
首页 > 文章

Mycat集群部署(高可用)

07-20 11:52 1492浏览
举报 T字号
  • 大字
  • 中字
  • 小字

概述

MyCat官方推荐使用HAProxy做MyCat的高可用负载均衡代理。

HAProxy是一款提供高可用性、负载均衡以及基于TCP(第四层)和 HTTP(第七层)应用的代理软件,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。

MyCat服务主机上需要开放检测端口用来检测mycat服务的状态,提供给HAProxy对MyCat的服务状态进行检测判断。

检测mycat服务状态以通过xinetd来实现, 使得HAProxy 可以用httpchk来检测MyCat的存活状态。

xinetd ( extended internet daemon) 是新一代的网络守护进程服务程序,经常用来管理多种轻量级Internet 服务。

xinetd为linux系统的基础服务,提供类似于inetd+tcp_wrapper的功能,但是更加的强大和安全。

xinetd安装步骤

1.安装xinetd:

yum list|grep xinetd 
xinetd.x86_64                               2:2.3.15-14.el7            base
yum install xinetd.x86_64

2.修改配置

检查是否有includedir /etc/xinetd.d,如果没有该配置需要加上:

vi /etc/xinetd.conf 
includedir /etc/xinetd.d //如果没有该配置需要加上

3.检查是否有includedir /etc/xinetd.d,如果没有该配置需要加上检查 /etc/xinetd.d 目录

检查是否有 /etc/xinetd.d 目录,如果没有该目录需要加上:

ls /etc/xinetd.d
mkdir /etc/xinetd.d/ //如果没有该目录需要加上

4.配置存活状态检测

增加MyCat存活状态检测服务配置:

cd /etc/xinetd.d/
vi mycat_status
service mycat_status
{
 flags = REUSE ## 使用该标记的 socket_type 为 stream,需要设置 wait 为 no
 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
# 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

6.添加可执行权限

chmod 777 /usr/local/bin/mycat_status

7.配置启动服务

在 /etc/services中加入mycat_status服务:

vi /etc/services
mycat_status    48700/tcp               # mycat_status

保存后重启:

service xinetd restart
Redirecting to /bin/systemctl restart xinetd.service
/bin/systemctl restart xinetd.service

发现第一个命令不可用,执行按照下面的命令去执行重启。

8.确认启动

验证mycat_status服务是否启动:

netstat -antup|grep 48700 //发现没有
ps aux | grep xinetd
root     26013  0.0  0.0  25044   600 ?        Ss   16:02   0:00 /usr/sbin/xinetd -stayalive -pidfile /var/run/xinetd.pid

9.开放端口

MyCat服务主机的防火墙上打开 48700 端口:

yum install -y iptables-services.x86_64
vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 48700 -j ACCEPT
service iptables restart
Redirecting to /bin/systemctl restart iptables.service
Failed to restart iptables.service: Unit not found.

haproxy 安装步骤

1.安装haproxy

yum list|grep haproxy
haproxy.x86_64                              1.5.18-9.el7               base
yum install -y haproxy.x86_64

设置开机启动:

systemctl enable haproxy.service

2.配置

HAProxy配置比较简单,拥有服务器健康检查功能,当其代理的后端服务器出现故障, HAProxy 会自动将该服务器摘除, 故障恢复后会自动将该服务器加入进来。

vi /etc/haproxy/haproxy.cfg
global ## global 配置中的参数为进程级别的参数,通常与其运行的操作系统有关
    log         127.0.0.1 local2 ## 定义全局的 syslog 服务器,最多可以定义 2 个,local0 是日志设备,对应于/etc/rsyslog.conf 中的配置,默认回收 info 的日志级别
    chroot      /var/lib/haproxy ## 修改 HAProxy 的工作目录至指定的目录并在放弃权限之前执行, chroot() 操作,可以提升 haproxy 的安全级别
    pidfile     /var/run/haproxy.pid ## 进程文件(默认路径 /var/run/haproxy.pid)
    maxconn     4000 ## 设定每个 haproxy 进程所接受的最大并发连接数
    user        haproxy ## 同 uid,但这里使用的为用户名
    group       haproxy ## 同 gid,不过这里为指定的用户组名
    daemon  ## 设置 haproxy 后台守护进程形式运行
    stats socket /var/lib/haproxy/stats 
defaults ## defaults:用于为所有其他配置段提供默认参数,这默认配置参数可由下一个"defaults"所重新设定
    mode                    http ## mode: 所处理的模式 (tcp: 四层 , http: 七层 , health: 状态检查, 只会返回 OK)
    log                     global ## 继承 global 中 log 的定义
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch ## serverId 对应的服务器挂掉后, 强制定向到其他健康的服务器
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s ## 连接超时(默认是毫秒, 单位可以设置 us,ms,s,m,h,d)
    timeout client          1m ## 客户端超时
    timeout server          1m ## 服务器超时
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000
    balance     roundrobin
    server node1 192.168.201.73:8066 check port 48700 inter 2000ms rise 2 fall 3 weight 10
    server node2 192.168.201.74:8066 check port 48700 inter 2000ms rise 2 fall 3 weight 10

设置防火墙

vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 48800 -j ACCEPT
service iptables restart

开启rsyslog的haproxy日志记录功能

默认情况下 haproxy 是没有日志的,如果有需要则配置系统的 syslog, 也就是 linux 系统中的 rsyslog 服务。

yum list|grep rsyslog
rsyslog.x86_64                              8.24.0-34.el7              @anaconda
yum install -y rsyslog.x86_64

修改配置

vi /etc/rsyslog.conf
$ModLoad imudp  ## 是模块名,支持 UDP 协议
$UDPServerRun 514 ##允许 514 端口接收使用 UDP 和 TCP 协议转发过来的日志

增加haproxy日志配置文件

vi /etc/rsyslog.d/haproxy.conf
local0.* /var/log/haproxy.log
&~

如果不加上面的的"&~"配置则除了在/var/log/haproxy.log 中写入日志外,也会写入/var/log/message文件中

重启rsyslog:

systemctl restart rsyslog.service

配置系统内核的 IP 包转发功能

修改配置:

vi /etc/sysctl.conf
net.ipv4.ip_forward = 1

配置生效:

sysctl -p

启动haproxy

systemctl start haproxy.service

动力节点在线课程涵盖零基础入门,高级进阶,在职提升三大主力内容,覆盖Java从入门到就业提升的全体系学习内容。全部Java视频教程免费观看,相关学习资料免费下载!对于火爆技术,每周一定时更新!如果想了解更多相关技术,可以到动力节点在线免费观看Mycat读写分离视频教程学习哦!

0人推荐
共同学习,写下你的评论
0条评论
代码小兵286
程序员代码小兵286

45篇文章贡献179882字

作者相关文章更多>

推荐相关文章更多>

MySQL中SQL优化的几种方法

代码小兵57603-29 17:54

MySQL的索引为什么使用B+Tree

代码小兵69606-07 17:03

DBUtils框架的使用(下)

代码小兵22104-13 18:12

JDBC连接数据库

代码小兵12406-08 17:37

Redis分布式锁的正确实现方式

代码小兵22104-20 20:22

发评论

举报

0/150

取消