配置Mycat高可用学习文档

一.基于HA机制的Mycat高可用

  • 上述的主从复制,读写分离,分库,分表都是保证了mysql的高可用性,但是Mycat的高可用并没有保证.
  • 在实际项目中,Mycat 服务也需要考虑高可用性,如果 Mycat 所在服务器出现宕机,或 Mycat 服务故障,需要有备机提供服务,需要考虑 Mycat 集群。

1.HAProxy+Keepalived+两台Mycat

我们可以使用 HAProxy + Keepalived 配合两台 Mycat 搭起 Mycat 集群,实现高可用性。HAProxy 实现了 MyCat 多节点的集群高可用和负载均衡,而 HAProxy 自身的高可用则可以通过 Keepalived 来 实现。

在这里插入图片描述

编号角色IP地址机器名
1Mycat1192.168.XXX.XX1host01
2Mycat2192.168.XXX.XX2host02
3HAProxy(master)192.168.XXX.XX3host03
4Keepalived(master)192.168.XXX.XX3host03
5HAProxy(backup)192.168.XXX.XX4host04
6Keepalive(backup)192.168.XXX.XX4host04

2.安装HAProxy

1.安装

#1准备好HAProxy安装包,传到/opt目录下

#2解压到/usr/local/src
tar -zxvf haproxy-1.5.18.tar.gz -C /usr/local/src

#3进入解压后的目录,查看内核版本,进行编译
cd /usr/local/src/haproxy-1.5.18
uname -r
make TARGET=linux310 PREFIX=/usr/local/haproxy ARCH=x86_64  #查看自己版本

# ARGET=linux310,内核版本,使用uname -r查看内核,如:3.10.0-514.el7,此时该参数就为linux310; #ARCH=x86_64,系统位数;
#PREFIX=/usr/local/haprpxy #/usr/local/haprpxy,为haprpxy安装路径。

#4编译完成后,进行安装
make install PREFIX=/usr/local/haproxy

#5安装完成后,创建目录、创建HAProxy配置文件
mkdir -p /usr/data/haproxy/
vim /usr/local/haproxy/haproxy.conf

#6向配置文件中插入以下配置信息,并保存
global  #全局配置
     log 127.0.0.1 local0
     #log 127.0.0.1 local1 notice
     #log loghost local0 info
     maxconn 4096
     chroot /usr/local/haproxy		#指定高可用性目录地址
     pidfile /usr/data/haproxy/haproxy.pid		#存储进程ID的文件
     uid 99
     gid 99
     daemon
     #debug
     #quiet
     
defaults
     log global
     mode tcp
     option abortonclose
     option redispatch
     retries 3
     maxconn 2000
     timeout connect 5000
     timeout client 50000
     timeout server 50000
     
listen proxy_status 	
    bind :48066		#开启服务绑定的端口为48066
         mode tcp
         balance roundrobin
         server mycat_1 192.168.XXX.XX1:8066 check inter 10s	#指定Mycat机器
         server mycat_2 192.168.XXX.XX2:8066 check inter 10s
     
frontend admin_stats 
    bind :7777		#指定控制台的端口号
         mode http
         stats enable
         option httplog
         maxconn 10
         stats refresh 30s
         stats uri /admin
         stats auth admin:123123	#指定用户名和密码
         stats hide-version
         stats admin if TRUE

2.启动

#1启动HAProxy
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.conf

#2查看HAProxy进程
ps -ef|grep haproxy

#3打开浏览器访问
http://192.168.XXX.XX4:7777/admin

#在弹出框输入用户名:admin密码:123123
#如果Mycat主备机均已启动,则可以看到如下图

在这里插入图片描述

#4验证负载均衡,通过HAProxy访问Mycat
mysql -umycat -p123456 -h 192.168.XXX.XX3 -P 48066

3.配置Keepalived

保证HAProxy的高可用性,检测服务器的状态

1.安装keepalived

#1准备好Keepalived安装包,传到/opt目录下

#2解压到/usr/local/src
tar -zxvf keepalived-1.4.2.tar.gz -C /usr/local/src

#3安装依赖插件
yum install -y gcc openssl-devel popt-devel

#3进入解压后的目录,进行配置,进行编译
cd /usr/local/src/keepalived-1.4.2
./configure --prefix=/usr/local/keepalived

#4进行编译,完成后进行安装
make && make install

#5运行前配置
cp /usr/local/src/keepalived-1.4.2/keepalived/etc/init.d/keepalived	 /etc/init.d/
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/src/keepalived-1.4.2/keepalived/etc/sysconfig/keepalived 	/etc/sysconfig/
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

#6修改配置文件
vim /etc/keepalived/keepalived.conf

#修改内容如下
! Configuration File for keepalived

global_defs {
     notification_email {
     	xlcocoon@foxmail.com	#keepalived做了切换后发送的邮箱
     }
     notification_email_from keepalived@showjoy.com
     smtp_server 127.0.0.1
     smtp_connect_timeout 30
     router_id LVS_DEVEL
     vrrp_skip_check_adv_addr
     vrrp_garp_interval 0
     vrrp_gna_interval 0
}
vrrp_instance VI_1 {
     #主机配MASTER,备机配BACKUP
    state MASTER
    #所在机器网卡
     interface ens33
    virtual_router_id 51
    #数值越大优先级越高
     priority 100
     advert_int 1
     authentication {
     auth_type PASS
     auth_pass 1111
     }
    virtual_ipaddress {
    	#虚拟IP
     	192.168.140.200
 	} 
}
virtual_server 192.168.140.200 48066 {
     delay_loop 6
     lb_algo rr
     lb_kind NAT
     persistence_timeout 50
     protocol TCP
     real_server 192.168.140.125 48066 {
         weight 1
         TCP_CHECK {
             connect_timeout 3
             retry 3
             delay_before_retry 3
 		}
	}
    real_server 192.168.140.126 48600 {
         weight 1
         TCP_CHECK {
             connect_timeout 3
             nb_get_retry 3
             delay_before_retry 3
     	}
	}
}

2.启动验证

#1启动Keepalived
service keepalived start

#2登录验证
mysql -umycat -p123456 -h 192.168.140.200 -P 48066
  • 相当于keepalived保证了HAProxy的安全提供虚拟IP,同时监控HA的状态.
  • HA保证了mycat的高可用集群

二.Mycat的安全设置

1.权限配置

1.user标签权限控制

目前 Mycat 对于中间件的连接控制并没有做太复杂的控制,目前只做了中间件逻辑库级别的读 写权限控制。是通过 server.xml 的 user 标签进行配置。

#server.xml配置文件user部分
<user name="mycat">
     <property name="password">123456</property>
     <property name="schemas">TESTDB</property>
</user>
<user name="user">
     <property name="password">user</property>
     <property name="schemas">TESTDB</property>
     <property name="readOnly">true</property>
</user>

配置说明

标签属性说明
name应用连接中间逻辑库的用户名
password该用户对应的密码
TESTDB应用当前连接的逻辑库中对应的逻辑表.schemas中可以配置一个或多个
readOnly应用连接中间件逻辑库所具有的权限.true为只读,false为读写都有,默认为false

测试

#测试案例一
# 使用user用户,权限为只读(readOnly:true)
# 验证是否可以查询出数据,验证是否可以写入数据

#1、用user用户登录,运行命令如下:
mysql -uuser -puser -h 192.168.140.128 -P8066
#2、切换到TESTDB数据库,查询orders表数据,如下:
use TESTDB
select * from orders;
#3、可以查询到数据

#4、执行插入数据sql,如下:
insert into orders(id,order_type,customer_id,amount) values(7,101,101,10000);
#5、可看到运行结果,插入失败,只有只读权限

2.privileges标签的权限控制

对于表的操作设置权限

在 user 标签下的 privileges 标签可以对逻辑库(schema)、表(table)进行精细化的 DML 权限控制.privileges 标签下的 check 属性,如为 true 开启权限检查,为 false 不开启,默认为 false. 由于 Mycat 一个用户的schemas 属性可配置多个逻辑库(schema),所以 privileges 的下级 节点 schema 节点同样可配置多个,对多库多表进行细粒度的 DML 权限控制。

#server.xml配置文件privileges部分
#配置orders表没有增删改查权限
	<user name="mycat">
     	<property name="password">123456</property>
         <property name="schemas">TESTDB</property>
         <!-- 表级 DML 权限设置 -->
        <privileges check="true">
            <schema name="TESTDB" dml="1111" >
                <table name="orders" dml="0000"></table>
                <!--<table name="tb02" dml="1111"></table>-->
            </schema>
    	</privileges>
	</user>

配置说明

DML权限增加更新查询删除
0000禁止禁止禁止禁止
0010禁止禁止可以禁止
1110可以禁止禁止禁止
1111可以可以可以可以

测试案例

#测试案例一
# 使用mycat用户,privileges配置orders表权限为禁止增删改查(dml="0000"
# 验证是否可以查询出数据,验证是否可以写入数据

#1、重启mycat,用mycat用户登录,运行命令如下:
mysql -umycat -p123456 -h 192.168.140.128 -P8066

#2、切换到TESTDB数据库,查询orders表数据,如下:
use TESTDB
select * from orders;
#3、禁止该用户查询数据

在这里插入图片描述

#4、执行插入数据sql,如下:
insert into orders(id,order_type,customer_id,amount) values(8,101,101,10000);
#5、可看到运行结果,禁止该用户插入数据

2.SQL拦截

firewall 标签用来定义防火墙;firewall 下 whitehost 标签用来定义 IP 白名单 ,blacklist 用来定义SQL黑名单。

1.白名单

可以通过设置白名单,实现某主机某用户可以访问 Mycat,而其他主机用户禁止访问。

#设置白名单
#server.xml配置文件firewall标签
#配置只有192.168.140.128主机可以通过mycat用户访问
<firewall>
     <whitehost>
     	<host host="192.168.140.128" user="mycat"/>
     </whitehost>
</firewall>

#重启Mycat后,192.168.140.128主机使用mycat用户访问
mysql -umycat -p123456 -h 192.168.140.128 -P 8066
#可以正常访问

#在此主机换user用户访问,禁止访问

#在192.168.140.127主机用mycat用户访问,禁止访问

2.黑名单

可以通过设置黑名单,实现 Mycat 对具体 SQL 操作的拦截,如增删改查等操作的拦截。

#设置黑名单
#server.xml配置文件firewall标签
#配置禁止mycat用户进行删除操作
<firewall>
     <whitehost>
     	<host host="192.168.140.128" user="mycat"/>
     </whitehost>
     <blacklist check="true"> #true开启黑名单
     	<property name="deleteAllow">false</property>
    </blacklist>
</firewall>
#重启Mycat后,192.168.140.128主机使用mycat用户访问
mysql -umycat -p123456 -h 192.168.140.128 -P 8066
#可以正常访问

#切换TESTDB数据库后,执行删除数据语句
delete from orders where id=7;
#运行后发现已禁止删除数据

设置的黑名单SQL拦截功能表

配置项缺省值描述
selelctAllowtrue/false是否允许执行 SELECT 语句
deleteAllowtrue/false是否允许执行 DELETE 语句
updateAllowtrue/false是否允许执行 UPDATE 语句
insertAllowtrue/false是否允许执行 INSERT 语句
createTableAllowtrue/false是否允许创建表
setAllowtrue/false是否允许使用 SET 语法
alterTableAllowtrue/false是否允许执行 Alter Table 语句
dropTableAllowtrue/false是否允许修改表
commitAllowtrue/false是否允许执行 commit 操作
rollbackAllowtrue/false是否允许执行 roll back 操作

三.Mycat监控工具

1.Mycat-web简介

Mycat-web 是 Mycat 可视化运维的管理和监控平台,弥补了 Mycat 在监控上的空白。帮 Mycat 分担统计任务和配置管理任务。Mycat-web 引入了 ZooKeeper 作为配置中心,可以管理多个节点。Mycat-web 主要管理和监控 Mycat 的流量、连接、活动线程和内存等,具备 IP 白名单、邮件告警等模 块,还可以统计 SQL 并分析慢 SQL 和高频 SQL 等。为优化 SQL 提供依据。

在这里插入图片描述

2.Mycat-web配置使用

1.安装ZooKeeper

#1下载安装包http://zookeeper.apache.org/
#2 安装包拷贝到Linux系统/opt目录下,并解压
tar -zxvf zookeeper-3.4.11.tar.gz

#root下创建myzookeeper目录
cp -r zookeeper-XXXX /myzookeeper/

#3 进入解压后的配置目录(conf),复制配置文件并改名
cp zoo_sample.cfg zoo.cfg

#4 进入ZooKeeper的命令目录(bin),运行启动命令
./zkServer.sh start

#5 ZooKeeper服务端口为2181,查看服务已经启动
netstat -ant | grep 218

2.Mycat-web安装

#1下载安装包http://www.mycat.io/
#2 安装包拷贝到Linux系统/opt目录下,并解压
tar -zxvf Mycat-web-1.0-SNAPSHOT-20170102153329-linux.tar.gz

#3 拷贝mycat-web文件夹到/usr/local目录下
cp -r mycat-web /usr/local

#4 进入mycat-web的目录下运行启动命令
cd /usr/local/mycat-web/
./start.sh &	#后台启动

#5 Mycat-web服务端口为8082,查看服务已经启动
netstat -ant | grep 8082

#6 通过地址访问服务
http://192.168.XXX.XXX:8082/mycat/

3.Mycat性能监控指标

http://192.168.XXX.XXX:8082/mycat/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值