译意: 水獭,数据搬运工

语言: 纯java开发

定位: 基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库. 一个分布式数据库同步系统

otter的环境需要:mysql,jdk,zookeeper,node,aria2,manager

otter安装需要三台机器,我实现的是两台机器之间的Mysql数据库同步,即双写同步,zookeeper集群。

在master机器上安装manager,在slave1和slave2上面安装node


1 、在slave1和slave2上安装JDK并配置JDK的环境变量

本文使用的jdk:jdk-7u79-linux-x64.tar.gz

直接解压,配置环境变量就OK了。


2、在slave1和slave2上安装mysql

# yum install -y mysql-server mysql mysql-devel

# service mysqld start         //启动mysql服务

# mysqladmin -u root password 'root'  // 给root账号设置密码为 root

安装完后,修改mysql的配置文件:
# vim /etc/my.cnf
在[mysqld]下面添加:
log-bin=mysql-bin
binlog-format=ROW       #修改成ROW
server-id = 1     #两个机房的serverid设置为不一样的值

然后重启数据库,分别在slave1和slave2库上创建otter的数据库账号和密码,例如canal/canal

CREATE USER canal IDENTIFIED BY 'canal'; 
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
FLUSH PRIVILEGES;
 
show grants for 'canal';   #查看权限


3、安装zookeeper

zookeeper可以只单机安装,也可以以集群形式安装,安装完成后启动。本文是安装的集群,三台机器。

本文使用的是:zookeeper-3.4.6.tar.gz

解压,进入conf下面进行配置

# cp zoo_sample.cfg zoo.cfg

# vim zoo.cfg 

dataDir=/root/cloud/zookeeper-3.4.6/data          #进行修改

添加下面的内容:

server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

在zookeeper-3.4.6 下面创建data,然后进入data

# vim myid

里面添加1。

scp -rq zookeeper-3.4.6 slave1:/root/cloud/

把slave1里面的myid里面的内容改为2

scp -rq zookeeper-3.4.6 slave2:/root/cloud/

把slave2里面的myid里面的内容改为3

都修改完后,启动zookeeper

进入zookeeper-3.4.6/bin下面执行

 ./zkServer.sh start      启动

 ./zkServer.sh status     查看状态


4、安装manager,在master机器上面安装

manager依赖于mysql进行配置信息的存储,所以需要预先安装mysql

# yum install -y mysql-server mysql mysql-devel

# service mysqld start         //启动mysql服务

# mysqladmin -u root password 'root'  // 给root账号设置密码为 root

初始化otter manager系统表:
下载:

# wget https://raw.github.com/alibaba/otter/master/manager/deployer/src/main/resources/sql/otter-manager-schema.sql

载入sql:
# mysql -uroot -proot

mysql> source /root/cloud/otter-manager-schema.sql

# mkdir manager
# tar -zxvf manager.deployer-4.2.13.tar.gz -C manager

配置修改

进入conf下面修改

# vim otter.properties

otter.domainName = 192.168.10.1          修改为manager的ip,用户web访问

## otter manager database config           manager上面的mysql信息
otter.database.driver.class.name = com.mysql.jdbc.Driver
otter.database.driver.url = jdbc:mysql://127.0.0.1:3306/otter
otter.database.driver.username = root
otter.database.driver.password = root

## default zookeeper address       选择一个就近的zookeeper集群地址
otter.zookeeper.cluster.default = 192.168.10.1:2181

准备启动
# bin/startup.sh

查看日志
vim logs/manager.log

2016-12-08 15:28:14.844 [] INFO  com.alibaba.otter.manager.deployer.OtterManagerLauncher - ## start the manager server.
2016-12-08 15:28:37.179 [] INFO  com.alibaba.otter.manager.deployer.JettyEmbedServer - ##Jetty Embed Server is startup!
2016-12-08 15:28:37.179 [] INFO  com.alibaba.otter.manager.deployer.OtterManagerLauncher - ## the manager server is running now ......

出现类似日志,代表启动成功

验证
访问: http://192.168.10.1:8080/,出现otter的页面,即代表启动成功


初始密码为:admin/admin,即可完成登录。目前:匿名用户只有只读查看的权限,登录为管理员才可以有操作权限

manager安装完成。


5、安装node

node会受到otter manager进行管理,需要在manager页面为node定义配置信息,并生成一个唯一id。

a. 首先访问manager页面的机器管理,添加zookeeper管理,点击添加


b. 访问manager页面的机器管理,点击node管理,点击添加


几点说明:
      机器名称:可以随意定义,方便自己记忆即可
      机器ip:对应node节点将要部署的机器ip,如果有多ip时,可选择其中一个ip进行暴露. (此ip是整个集群通讯的入口,实际情况千万别使用127.0.0.1,否则多个机器的node节点会无法识别)
      机器端口:对应node节点将要部署时启动的数据通讯端口,建议值:2088
      下载端口:对应node节点将要部署时启动的数据下载端口,建议值:9090
      外部ip :对应node节点将要部署的机器ip,存在的一个外部ip,允许通讯的时候走公网处理。
      zookeeper集群:为提升通讯效率,不同机房的机器可选择就近的zookeeper集群.
node这种设计,是为解决单机部署多实例而设计的,允许单机多node指定不同的端口


机器添加完成后,跳转到机器列表页面,获取对应的机器序号nid


通过上面的操作,获取到了node节点对应的唯一标示,称之为node id,简称:nid. 记录该nid,后续启动nid时会使用

安装aria2

node 需要aria2支持,在slave1和slave2机器上分别安装了一套。

本文用到的是:aria2-1.17.1.tar.gz,node.deployer-4.2.13.tar.gz

# tar -zxvf aria2-1.17.1.tar.gz

进入目录: cd aria2-1.17.1
编译:  
./configure

出现如下错误:

configure: error: in `/root/cloud/aria2-1.17.1':
configure: error: no acceptable C compiler found in $PATH

# yum -y install gcc

然后./configure,现在就成功通过了。

# make   报错的话,再重新执行一次/configure这个就好了。
# make install

安装node

# mkdir node

# tar -zxvf node.deployer-4.2.13.tar.gz -C node

配置修改
nid配置 (将上面获取到的序号,保存到conf目录下的nid文件,比如我添加的机器对应序号为1)

# echo 1 > conf/nid

otter.properties配置修改

## otter arbitrate & node connect manager config
otter.manager.address = 192.168.10.1:1099       修改为manager服务地址

准备启动
# sh startup.sh

查看日志

# more logs/node/node.log

2016-12-08 15:59:31.666 [main] INFO  com.alibaba.otter.node.deployer.OtterLauncher - INFO ## the otter server is running now ......

看到如上日志,代表node启动完成.

验证
访问: http://192.168.10.1:8080,查看对应的节点状态,如果变为了已启动,代表已经正常启动。(ps,如果是未启动,会是一个红色高亮)

slave2机器上也安装上面的部署安装aria2和node


表示node安装成功。


到此otter安装成功。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐