Otter-安装配置

前言

工作原理
Otter-安装配置-(1)zookeeper安装

原理描述:

  1. 基于Canal开源产品,获取数据库增量日志数据。 什么是Canal, Canal是拉去源库binlog日志的,跟从库功能类似。

  2. 典型管理系统架构,manager(web管理)+node(工作节点)

    a. manager运行时推送同步配置到node节点

    b. node节点将同步状态反馈到manager上

  3. 基于zookeeper,解决分布式状态调度的,允许多node节点之间协同工作.

部署描述

服务器1 安装包
172.18.165.118 manager.deployer-4.2.17.tar.gz,node.deployer-4.2.17.tar.gz,apache-zookeeper-3.5.5-bin.tar.gz,Jdk-1.8
172.18.165.119 node.deployer-4.2.17.tar.gz,apache-zookeeper-3.5.5-bin.tar.gz,Jdk-1.8
172.18.165.120 node.deployer-4.2.17.tar.gz,apache-zookeeper-3.5.5-bin.tar.gz,Jdk-1.8

本实验,3个节点,其中一个节点同时安装manager和node,各节点安装信息如上,配置都是4核8G的服务器

一、安装包与服务器

下载manager,node工具
https://github.com/alibaba/otter/releases

下载zookeeper
http://apache.fayea.com/zookeeper/stable/

二、JDK安装

#yum install -y java-1.8.0-openjdk-devel.x86_64
#vim /etc/profile
export JAVA_HOME=jre-1.8.0-openjdk-1.8.0.171-7.b10.el7.x86_64
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
#source /etc/profile
# java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-b04)
OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)

上面每台服务器都要安装

(1)zookeeper安装

三、安装zookeeper

1. 安装

#mkdir -p /data/services/
#mkdir -p /data/serviceLogs/
#mkdir -p /data/servicesLogs/zookeeper/
#mkdir -p /data/services/zookeeper-data/
#tar xf apache-zookeeper-3.5.5-bin.tar.gz
# mv apache-zookeeper-3.5.5-bin /data/services/

下载的二进制包,直接安装即可,这里每台服务器都要执行

2.配置
环境变量配置,每台服务器上执行;

#echo 'export PATH=$PATH:/data/services/apache-zookeeper-3.5.5-bin/bin' >> /etc/profile && source /etc/profile

配置文件重命名,每台服务器上执行

#cd /data/services/apache-zookeeper-3.5.5-bin/conf
#mv zoo_sample.cfg zoo.cfg

编辑配置文件内容,每台服务器一样即可

#vim zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/services/zookeeper-data/
dataLogDir=/data/servicesLogs/zookeeper/
clientPort=2181

server.1= 172.18.165.118:2888:3888
server.2= 172.18.165.119:2888:3888
server.3= 172.18.165.120:2888:3888

配置解释:

tickTime:这个时间是作为zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是说每个tickTime时间就会发送一个心跳。
initLimit:这个配置项是用来配置zookeeper接受客户端(这里所说的客户端不是用户连接zookeeper服务器的客户端,而是zookeeper服务器集群中连接到leader的follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。
当已经超过10个心跳的时间(也就是tickTime)长度后 zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20秒。
syncLimit:这个配置项标识leader与follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是5*2000=10秒。
dataDir:顾名思义就是zookeeper保存数据的目录,默认情况下zookeeper将写数据的日志文件也保存在这个目录里;
clientPort:这个端口就是客户端连接Zookeeper服务器的端口,Zookeeper会监听这个端口接受客户端的访问请求;
server.A=B:C:D:中的A是一个数字,表示这个是第几号服务器,B是这个服务器的IP地址,C第一个端口用来集群成员的信息交换,表示这个服务器与集群中的leader服务器交换信息的端口,D是在leader挂掉时专门用来进行选举leader所用的端口。

3.创建ServerID标识
除了修改zoo.cfg配置文件外,zookeeper集群模式下还要配置一个myid文件,这个文件需要放在dataDir目录下

服务器 执行命令
172.18.165.118 #echo '1' >> /data/services/zookeeper-data/myid
172.18.165.119 #echo '2' >> /data/services/zookeeper-data/myid
172.18.165.120 #echo '3' >> /data/services/zookeeper-data/myid

这个文件里面有一个数据就是A的值(该A就是zoo.cfg文件中server.A=B:C:D中的A),在zoo.cfg文件中配置的dataDir路径中创建myid文件。

4.启动zookeeper

#/data/services/apache-zookeeper-3.5.5-bin/bin/zkServer.sh start

(2)manager安装

1.安装

#mkdir otter-manager
#tar xf manager.deployer-4.2.17.tar.gz -C otter-manager
#mv otter-manager /data/services/

上一篇文章给出了下载地址,二进制解压即可。

2.配置

#vim /data/services/otter-manager/conf/otter.properties
otter.domainName = 172.18.165.118
otter.port = 8088
otter.jetty = jetty.xml
otter.database.driver.class.name = com.mysql.jdbc.Driver
otter.database.driver.url = jdbc:mysql://xxxxxx.aliyuncs.com:3306/otter_tools
otter.database.driver.username = online_otter
otter.database.driver.password = online_xxxxxx
otter.communication.manager.port = 1099
otter.communication.payload = 8388608
otter.communication.pool.size = 10
otter.zookeeper.cluster.default = 172.18.165.118:2181,172.18.165.119:2181,172.18.165.120:2181
otter.zookeeper.sessionTimeout = 60000
otter.manager.address = ${otter.domainName}:${otter.communication.manager.port}
otter.manager.productionMode = true
otter.manager.monitor.self.enable = true
otter.manager.monitor.self.interval = 120
otter.manager.monitor.recovery.paused = true
otter.manager.monitor.email.host = smtp.yeah.net
otter.manager.monitor.email.username = [email protected]
otter.manager.monitor.email.password = xxxxxxx
otter.manager.monitor.email.stmp.port = 465

上面监听地址,连接数据库地址和SMTP地址,账号密码修改成自己的,还有zookeeper集群地址

zookeeper最近的版本中有个内嵌的管理控制台是通过jetty启动,也会占用8080 端口。

因为manage和zookeeper同一台机子,所以我讲manager的端口改成了8088端口。

4.导入otter元数据


#下载地址:github, 路径:manager/deployer/src/main/resources/sql/otter-manager-schema.sql
mysql> source otter-manager-schema.sql

由于5.7版本不兼容,在session级别修改sql_mode,mysql5.7执行前运行: SET sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
点击我github_otter_manage_sql地址

5.启动

#sh /data/services/otter-manager/bin/startup.sh

6.验证
Otter-安装配置-(2)manager安装
账号密码都是: admin

(3)otter-node安装

1.安装前准备

安装前,我们需要在manager管理控制台配置node信息,否则ndoe节点无法加入manage
步骤1 :点击机器管理,zookeeper管理
Otter-安装配置-(3)otter-node安装

步骤2 :配置zookeeper地址,输入内容
172.18.165.118:2181,172.18.165.119:2181,172.18.165.120:2181

步骤3 :新增node
Otter-安装配置-(3)otter-node安装

成功添加后如下
Otter-安装配置-(3)otter-node安装

我们可以看到节点序号是1,状态是未启动。到这里,准备工作结束

2.安装node

#mkdir otter-node
#tar xf node.deployer-4.2.17.tar.gz -C otter-node
# mv otter-node /data/services/

安装文件下载连接在第一个文档,二进制解压即可。

2.配置1之node

#vim /data/services/otter-node/conf/otter.properties
otter.nodeHome = ${user.dir}/../
otter.htdocs.dir = ${otter.nodeHome}/htdocs
otter.download.dir = ${otter.nodeHome}/download
otter.extend.dir= ${otter.nodeHome}/extend
otter.zookeeper.sessionTimeout = 60000
otter.communication.payload = 8388608
otter.communication.pool.size = 10
otter.manager.address = 172.18.165.118:1099

只需要修改manager地址即可

6.配置2之 nid

#echo 1 > /data/services/otter-node/conf/nid

nid配置是准备前的配置序号ID对应,这步一定要配置正确,否则异常。

7.启动

#sh /data/services/otter-node/bin/startup.sh

8.验证

#taif -f /data/services/otter-node/logs/node/cat node.log 
OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
2019-06-27 20:21:02.701 [main] INFO  com.alibaba.otter.node.deployer.OtterLauncher - INFO ## the otter server is running now ......

Otter-安装配置-(3)otter-node安装

这个时候,我们可以看到,node01已经状态变成启动

9.重复以上操作,配置node02,node03

我们需要将3个node节点状态配置成功,记住node和node3不同之处配置如下

节点2:
#echo 2 > /data/services/otter-node/conf/nid
节点3:
#echo 3 > /data/services/otter-node/conf/nid

manger界面启动前:
Otter-安装配置-(3)otter-node安装

manger界面启动后:
Otter-安装配置-(3)otter-node安装

到这里,我们成功安装整个otter,如果你会配置,已经可以正常使用了。

(4)同步任务配置案例

准备前--otter配置流程

otter配置比较繁琐,并不会特别复杂,我这里先大概说下流程和几个关键名词解释
**otter名词解释:**
数据源:读取的源实例信息,和写入的目标实例信息
数据表:配置映射用的,用于配置,源实例,什么库,什么表,同步到目标什么库,什么表
canal:otter是做增量同步的,增量同步基于mysql的binlog日志,并且是row格式。这里需要配置你读取binlog的信息,和数据源里面的源实例信息可以说是同一个。
通道配置: otter采用一个实例一个通道方式。一个实例可以多个配置多个库
pipeline:主要核心功能如下
(1)选择你的canal配置,读取哪个实例的binlog。
(2)选择整个同步是在哪个节点上进行,例如我们部署了三个node节点,可以由node1进行读取的操作,可以由node2进行目标实例写入操作。也可以同时放到一个节点上。
(3)binlog位置,默认不写就读最新位置的。
(4)高级配置里面有是否跳过DDL,传输模式,负载均衡算法等,一般保持默认即可。
**流程:**
(1)新增数据源,一般最少配置2个,一个读取的源库,一个目标
(2)数据表,配置映射关系,从哪里同步到哪里。
(3)Canal,配置读取binlog的信息
上面步骤创建好后,我们就可以正式开始配置通道了
(4)创建通道
(5)创建pipeline
(6)创建表映射关系
(7)启动通道

1. 同步实例配置

Otter-安装配置-(4)同步任务配置案例
我这里新增了两个数据源,一个叫read(读取源)实例,一个叫write(写入的目标)实例.

(1)详细编辑配置如下
Otter-安装配置-(4)同步任务配置案例
Otter-安装配置-(4)同步任务配置案例
(2)配置成功后的列表
Otter-安装配置-(4)同步任务配置案例
source_read_testing_01: 要读取数据的实例
target_write_testing_01: 要写入数据的实例

2. 同步表配置

Otter-安装配置-(4)同步任务配置案例
(1)读库表配置-详细信息编辑
Otter-安装配置-(4)同步任务配置案例
这里主要是配置你要读取的数据库名,表名。
schema name: 配置库名称
Table name:因为我们是同步库下面的所有表,所以就填写了一个正则表达式;
数据源:选择源库(上面的步骤实例配置已配置,选择即可)
(2)写库表配置-详细信息编辑
Otter-安装配置-(4)同步任务配置案例
这里主要是配置你要写入的数据库名,表名。
Schema name: 配置库名称
Table name:因为我们是同步库下面的所有表,所以就填写了一个正则表达式;
数据源:选择目标库(上面的步骤实例配置已配置,选择即可)

3.Canal配置

Otter-安装配置-(4)同步任务配置案例

Canal配置,主要是读取的源实例的binlog日志用的
Otter-安装配置-(4)同步任务配置案例
Canal名称: 自定义
Zookeeper:默认会自动选择,前面已配置过了
数据库类型:Mysql
数据库地址:就是你要获取数据库binlog的地址【和源库实例一样】
账号密码:需要有获取binlog权限的账号噢。
其他内容可不填写

4.Channel通道配置

Otter-安装配置-(4)同步任务配置案例

创建Canal
Otter-安装配置-(4)同步任务配置案例
选择基于当前日志变更,选择行记录;名称可自定义;

5.Pipeline配置

Otter-安装配置-(4)同步任务配置案例
步骤1 : 点击Channel通道名称,进入下一步

步骤2 : 新增Pipleline,点击添加
Otter-安装配置-(4)同步任务配置案例
选择select 和load 的节点。一个是读,一个是写。选择同一个节点,减少网络之间的传输。
Canal名称: 选择刚才canal配置添加的,其他保持不变

6.映射关系配置

意思就是,你要在这条通道上,什么样的规则进行同步,就是表与表之间的配置
Otter-安装配置-(4)同步任务配置案例
步骤1: 点击Pipeline进入映射关系配置

步骤2:添加映射关系

步骤3:查找数据表
Otter-安装配置-(4)同步任务配置案例
源数据表: 选择只读源库表
Otter-安装配置-(4)同步任务配置案例
目标数据表: 选择目标库表
Otter-安装配置-(4)同步任务配置案例
保存后,内容如下,返回通道首页
Otter-安装配置-(4)同步任务配置案例

7.启动通道

Otter-安装配置-(4)同步任务配置案例

Otter-安装配置-(4)同步任务配置案例

8.测试验收

在源库新增数据,验证目标库表是否正常

(5)报警配置

1.报警配置
步骤1 :在系统管理中,找到系统参数。

Otter-安装配置-(5)报警配置
编辑默认报警联系人 key = otterteam values=邮箱地址

步骤2 :在Pipeline下面找到监控,编辑内容如下,key直接写上面设置的otterteam
Otter-安装配置-(5)报警配置

步骤3 :启动报警
Otter-安装配置-(5)报警配置

2.测试报警

步骤1 :插入测试表

SQL> CREATE TABLE  t_alert_01 (id INT,alert_name VARCHAR(20)) ;

准备测试表,该表是一张没有主键的表,插入数据,otter肯定会报错,因为otter不支持没有主键的表同步。

步骤2 :插入数据

SQL> INSERT INTO t_alert_01 VALUES (1,"abc");

Otter-安装配置-(5)报警配置

3.注意点

otter报警无法发送邮件,或者收到邮件报警,参考如下
>确保otter.manager配置文件正确

#cat /data/services/otter-manager/conf/otter.properties
# manager email user config
otter.manager.monitor.email.host = smtp.yeah.net
otter.manager.monitor.email.username = [email protected]
otter.manager.monitor.email.password = xxxxxx
otter.manager.monitor.email.stmp.port = 465

>确保SMTP服务设置正确

163的 yeah邮箱服务器,需要单独设置SMTP客户端密码,并且开启SMTP客户端服务。否则无法收到邮件

(6)批量导入映射关系

1.新增源实例数据源

Otter-安装配置-(6)批量导入映射关系

2.新增目标实例库数据源

Otter-安装配置-(6)批量导入映射关系

3.新增Canal配置

Otter-安装配置-(6)批量导入映射关系

4.新增通道

Otter-安装配置-(6)批量导入映射关系

5.新增Pipeline

Otter-安装配置-(6)批量导入映射关系

6.新增映射

Otter-安装配置-(6)批量导入映射关系
选择批量新增

7.编辑新增批量

Otter-安装配置-(6)批量导入映射关系

city_order_refund_service,(.*).(.*),15,city_order_refund_service,(.*).(.*),5
city_order_service,(.*).(.*),15,city_order_service,(.*).(.*),5
city_bid_service,(.*).(.*),15,city_bid_service,(.*).(.*),5
city_bill_service,(.*).(.*),15,city_bill_service,(.*).(.*),5
rocketmq_service,(.*).(.*),15,rocketmq_service,(.*).(.*),5
city_cts_service,(.*).(.*),15,city_cts_service,(.*).(.*),5
city_crs_service,(.*).(.*),15,city_crs_service,(.*).(.*),5
city_cms_service,(.*).(.*),15,city_cms_service,(.*).(.*),5
city_cas_service,(.*).(.*),15,city_cas_service,(.*).(.*),5
city_service,(.*).(.*),15,city_service,(.*).(.*),5

解释:
格式:stringS,stringS,stringS,stringT,stringT,stringT
从左往右
第一个stringS:源库名称,例子:city_order_refund_service
第二个stringS:源表名,例子:(.).(.)正则匹配
第三个stringS:源库ID,例子:如下图,序号ID值

Otter-安装配置-(6)批量导入映射关系

第一个stringT:目标库名称,例子:city_order_refund_service
第二个stringT:目标表名,例子:(.).(.)正则匹配
第三个stringT:目标库ID,例子:如上图,找到目标库对应的ID即可

8.成功添加后的数据

Otter-安装配置-(6)批量导入映射关系

点击任意一列的查看按钮,如下

9.成功添加后的数据详情

Otter-安装配置-(6)批量导入映射关系

10.查看数据表配置

Otter-安装配置-(6)批量导入映射关系

Otter-安装配置-(6)批量导入映射关系

已自动添加

(7)otter性能测试

1.案例配置说明

共计配置12条通道。共计70+个库,1000张表。

Otter-安装配置-(7)otter性能测试

2.同步服务器监控

描述: 共计配置12条通道。共计70+个库,1000张表。 QPS在1000/s左右的写入操作。

CPU
Otter-安装配置-(7)otter性能测试

IOWAIT
Otter-安装配置-(7)otter性能测试

Momery
Otter-安装配置-(7)otter性能测试

3.与其他同步工具对比

目前我们还采用了DTLE同步工具,同步案例一样,同步的数据量也一样,下图是DTLE的日常服务器消耗监控图

CPU
Otter-安装配置-(7)otter性能测试

IOWAIT
Otter-安装配置-(7)otter性能测试

Momery
Otter-安装配置-(7)otter性能测试

```Otter秒杀Dtle

5.批量更新,查看性能监控

案例: 在其中一条通道,执行50万条update语句,观察服务器情况。

Otter监控QPS
Otter-安装配置-(7)otter性能测试

Otter监控延迟
Otter-安装配置-(7)otter性能测试

服务器监控
Otter-安装配置-(7)otter性能测试

发布了216 篇原创文章 · 获赞 89 · 访问量 45万+

猜你喜欢

转载自blog.csdn.net/eagle89/article/details/104768338