译意: 水獭,数据搬运工
语言: 纯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安装成功。