0%

mycat基本安装及高可用部署

一、安装

1、下载

2、解压

解压安装包,-C指定安装目录

1
tar -zxvf Mycat-server-1.6.7.5-release-20200422133810-linux.tar.gz -C /usr/local

3、前台启动

进入mycat的bin目录下执行启动cd /usr/local/mycat/bin

通过执行./mycat help查看相关命令,其中console为控制台启动,其余命令为后台操作

./mycat console控制台启动后,如图可以看到缺少日志目录而报错

mycat的缺少日志目录

查看mycat目录,确实没有logs层级需要mkdir /usr/local/mycat/logs创建对应的层级目录

4、登录

mycat有两个端口,9066是管理控制台端口、8066是操作端口

1
2
-- 使用8066端口连接mycat
mysql -uroot -pRoot_123 -P 8066

5、环境变量

配置环境变量,可以在任意地方直接使用mycat命令

1
2
3
4
5
6
7
#增加环境变量
vi /etc/profile
export MYCAT_HOME=/usr/local/mycat
export PATH=$PATH:$JAVA_HOME/bin:$MYCAT_HOME/bin

#让添加的配置生效
source /etc/profile

6、配置

6.1、server.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="UTF-8"?>
<!-- - - Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License. - You
may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0
- - Unless required by applicable law or agreed to in writing, software -
distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the
License for the specific language governing permissions and - limitations
under the License. -->
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
<user name="root" defaultAccount="true">
<property name="password">Root_123</property>
<property name="schemas">TESTDB</property>
<property name="defaultSchema">TESTDB</property>
</user>
</mycat:server>

6.2、schema.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!-- name:逻辑库名
checkSQLschema :是否自带库名
sqlMaxLimit:默认数据查询限制,如果SQL语句没带限制,会默认带上,如果带了,则以带的为准
dataNode:真实数据库节点
-->
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
</schema>

<!--
dataNode的name与schema的dataNode对应;
dataHost属性与dataHost标签的name对应
database:真正的库名
-->
<dataNode name="dn1" dataHost="host1" database="mytest" />

<!--
dbDriver="jdbc"修改为native
maxCon:最大连接数
minCon:最小连接数
balance:读库和写库的负载均衡策略(具体策略看下文)
writeType:表示写操作发送到哪台机器
switchType:表示如何进行切换
-->
<dataHost name="host1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<!-- 心跳检测使用的sql语句 -->
<heartbeat>select user()</heartbeat>

<!-- 写库配置 -->
<writeHost host="hostM1" url="192.168.243.131:3306" user="root"
password="Root_123">
<!-- 读库配置,可以与写库在同一个库,可以不同(读写分离) -->
<readHost host="hostS1" url="192.168.243.132:3306" user="root" password="Root_123"></readHost>
</writeHost>
</dataHost>
</mycat:schema>

6.3、负载策略

  • balance=0:不开启读写分离机制,所有读操作都发送到当前可用的writehost上
  • balance=1:全部的readhost和stand by writehost参与select 语句的负载均衡,简单的说,当双主双从模式下,其他的节点都参与select语句的负载均衡
  • balance=2:所有读操作都随机的在writehost,readhost上分发
  • balance=3:所有读请求随机的分发到readhost执行,writehost不负担读压力

修改balance="2"mycat restart重启mycat,测试负载情况

7、后台启动

mycat start

mycat status查看状态


二、mycat的高可用

​ 在之前的操作中,我们已经实现了mysql机器的高可用,可以动态切换master,那么如果mycat崩溃了呢?我们应该如何处理呢?所以此时就需要搭建mycat的高可用集群了。

​ 在mycat的权威指南中,介绍了多种高可用的方案,在这里我们讲解一种使用最多的方案,使用HAProxy+Keepalived配合使用来实现myact的高可用。

​ HAproxy实现了mycat多借点的集群高可用和负载均衡,而HAProxy自身的高可用则可以通过Keepalived来实现。

编号 角色 IP地址 机器名
1 mycat1 192.168.243.131 node01
2 mycat2 192.168.243.132 node02
3 HAProxy(master) 192.168.243.133 node03
4 Keepalived(master) 192.168.243.133 node03
5 HAProxy(backup) 192.168.243.135 node04
6 keepalived(backup) 192.168.243.135 node04

1、安装配置HAProxy

​ 在node-3和node-4安装HAProxy

1.1、准备好HAProxy的安装包

1.2、解压到/usr/local目录

1
tar -zxvf haproxy-1.8.25.tar.gz -C /usr/local

1.3、进入到解压后的目录,查看内核版本,进行编译

1
2
3
cd /usr/local/haproxy-1.8.25/
uname -r
make TARGET=generic

1.4、编译完成之后,开始进行安装

1
make install PREFIX=/usr/local/haproxy

1.5、安装完成之后,创建目录,创建HAProxy配置文件

1
2
3
mkdir -p /usr/data/haproxy
mkdir /usr/local/haproxy/conf
vi /usr/local/haproxy/conf/haproxy.conf

1.6、向配置文件中添加配置信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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
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
mode tcp
balance roundrobin
server mycat_1 192.168.243.131:8066 check inter 10s
server mycat_2 192.168.242.132: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

1.7、启动haproxy服务

1
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.conf

1.8、查看haproxy的进程,如果存在则说明没有问题

1
ps -ef | grep haproxy

1.9、打开浏览器访问,用户名为admin,密码为123123

http://192.168.85.113:7777/admin

1.10、任一连接一台haproxy登录访问

1
2
mysql -uroot -pRoot_123 -h192.168.243.133 -P48066
mysql -uroot -pRoot_123 -h192.168.243.134 -P48066

2、安装配置Keepalived

​ 在node-3和node-4安装Keepalived

2.1、准备好Keepalived安装包

2.2、解压到/usr/local目录

1
tar -zxvf keepalived-1.4.5.tar.gz -C /usr/local

2.3、安装需要依赖的环境组件

1
yum install gcc openssl-devel popt-devel -y

2.4、进入到解压目录,进行编译

1
./configure --prefix=/usr/local/keepalived

2.5、编译完成之后,进行安装

1
make && make install

2.6、将keepalived的服务注册为系统服务

1
2
3
4
5
cp /usr/local/keepalived-1.4.5/keepalived/etc/init.d/keepalived /etc/init.d/
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/keepalived-1.4.5/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

2.7、修改配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
cd etc/keepalived/
vi keepalived.conf

! Configuration File for keepalived

global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
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 {
state MASTER #备机需要修改此配置 backof
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.243.100/24 dev ens33 label ens33:3
}
}

2.8、启动keepalived

1
service keepalived start

2.9、登录验证

1
mysql -uroot -pRoot_123 -h 192.168.243.100 -P 48066

三、mycat监控工具

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

1、安装zookeeper

1
2
3
4
5
6
7
8
1、下载zookeeper安装包3.6.1
2、安装拷贝到/usr/local目录,并解压
3、进入到zookeeper解压后的目录conf,复制配置文件并改名
cp zoo_sample.cfg zoo.cfg
4、进入到zookeeper的bin目录,运行启动命令
./zkServer.sh start
5、执行如下命令,看zookeeper是否正常启动
netstat -nlpt | grep 2181

2、安装mycat-web

1
2
3
4
5
6
7
8
1、下载mycat-web安装包1.0
2、解压安装包到/usr/local目录
3、进入mycat-web的目录运行启动命令
./start.sh &
4、mycat-web的服务端口是8082,查看服务是否启动
netstat -nlpt | grep 8082
5、通过地址访问服务
192.168.85.111:8082/mycat/

3、mycat-web配置

1
2
3
4
1、配置zookeeper
进入到mycat-web的/usr/local/mycat-web/mycat-web/WEB-INF/classes,修改mycat.properties文件,可以修改zookeeper的地址
2、添加mycat实例
在页面的mycat配置--》mycat服务管理中添加mycat实例,需要填写相关的参数