otter安装配置和注意事项

@author isai 2017/6/13 11:27:10

一、环境

官网:https://github.com/alibaba/otter/wiki

相关网站:
http://lblog.lol/2016/07/30/otter%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/
http://blog.sina.com.cn/s/blog_6f6bc30e0101pclp.html
http://blog.csdn.net/xuejingfu1/article/details/52275750

1.服务器环境

两台阿里云服务器,都位于华东1,配置建议:4核4G内存5M宽带

2.数据库环境

两台数据库服务器
是否需要开外网:如果A服务器位于内网,A不用开外网端口,如果A不是内网,需要开外网
数据库条件:如果是自己安装的虚拟机或实体机,需要修改修改mysql配置文件:

vi /etc/my.cnf    
log-bin=mysql-bin
binlog_format=ROW #只支持ROW  
server-id = 1 #两个数据库的serverid设置为不一样的值  
source /etc/my.cnf

如果是阿里云的数据库,默认配置如上,不用去修改

二、需要用到的软件

aria2 : aria2-1.17.1
cmake : cmake-2.8.11.2
JDK : jdk-7u79-linux-i586
manage.deployer : manager.deployer-4.2.13
node.deployer : node.deployer-4.2.13
zookeeper : zookeeper-3.4.6

三、cmake安装jdk

四、zookeeper安装

1.下载和解压

cd /www/soft
tar -zxvf /www/soft/zookeeper-3.3.6.tar.gz /www/server/

2.配置

(1)编辑配置文件

cd /www/server/zookeeper-3.3.6/conf
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg

单机配置

编辑zoo.cfg的datadir为:
dataDir=/tmp/zookeeper

集群配置

ookeeper集群配置必须为2n+1 台集群,否则没有意义

编辑zoo.cfg文件为:
dataDir=/tmp/zookeeper
在文件末尾加上下面三句:
server.1=192.168.10.187:2888:3888  
server.2=192.168.10.188:2888:3888  
server.3=192.168.10.189:2888:3888

分别在上面三台中执行:

echo "1" > /tmp/zookeeper/myid #187机器,路径为dataDir下
echo "2" > /tmp/zookeeper/myid #188机器
echo "3" > /tmp/zookeeper/myid #189机器

(2)配置环境变量

export ZOOKEEPER_INSTALL=/www/soft/zookeeper-3.3.6
export PATH=$PATH:$ZOOKEEPER_INSTALL/bin
source /etc/profile

(3)建立软连接

ln -s /www/soft/zookeeper-3.3.6/bin/zkServer.sh /usr/local/bin/zk-server
ln -s /www/soft/zookeeper-3.3.6/bin/zkCli.sh /usr/local/bin/zk-cli

(4)启动

zk-server start
zk-server status

集群启动后,发现三台机器的status中,一个leader,两个follwer为正常

(5)排错

如果出现拒绝连接,请检查如下:
A.防火墙是否关闭  systemctl stop firewalld
B.需要将真实ip 映射到本地 /etc/hosts文件中,否则无法连接

五、manager安装

建议:manager 安装在内网的机器上,这样主服可以不用开外网端口,otter配置数据库也放在内网上
官网详细步骤:https://github.com/alibaba/otter/wiki/Manager_Quickstart

1.安装manager的数据库

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

创建otter数据库后,将脚本导进去

2.解压

mkdir /www/server/manager
cd /www/server/manager
tar zxvf /www/soft/manager.deployer-4.2.14.tar.gz

3.修改manager配置文件

vi /www/server/manager/conf/otter.properties
otter.domainName =192.168.10.104 ##修改为本机的ip
otter.port = 8080 ##对外访问的端口号
otter.database.driver.url = jdbc:mysql://192.168.2.104:3306/otter ##otter数据的配置
otter.database.driver.username = root ##otter数据的账号
otter.database.driver.password = 123456 ##otter数据的密码
otter.communication.manager.port = 1099 ##对应Node中的配置
otter.zookeeper.cluster.default = 192.168.2.104:2181 ##对应集群的地址,这里我是准备以这台机器为建立集群

4.修改本机hosts设置

 vi /etc/hosts
添加 192.168.2.104 localhost localhost.localdomain localhost4 localhost4.localdomain4

5、启动manager

/www/server/manager/bin/startup.sh
http://127.0.0.1:8080/login.htm,初始密码为:admin/admin,即可完成登录,ip修改为本机ip

六、node安装

1.安装aria2

node节点进行跨机房传输时,会使用到HTTP多线程传输技术,目前主要依赖了aria2c做为其下载客户端,所以我们现在需要安装aria2

解压缩 aria2
./configure
make
make install

将ariar2c加入path中:

vi /root/.bash_profile
在PATH的末尾加上:/usr/local/bin 分号的作用是与之前的隔开。
source /root/.bash_profile

2.安装node

官网地址:https://github.com/alibaba/otter/wiki/Node_Quickstart

(1)配置manager的nid

otter node会受otter manager进行管理,所以需要预先安装otter manager
完成manager安装后,需要在manager页面为node定义配置信息,并生一个唯一id.

(2)安装

解压node
vi conf/otter.properties
otter.manager.address = 192.168.2.104:1099 ##对应manager中otter.properties的配置otter.communication.manager.port,也就是集群的ip

echo 1 > conf/nid 这个1也是对应的myid
启动node sh startup.sh

查看日志 vi logs/node/node.log

Exception in thread “main” java.lang.IllegalArgumentException: node[1] ip[127.0.0.1] port[2088] , but your host ip[10.12.48.215] is not matched!
at com.alibaba.otter.node.etl.OtterController.checkNidVaild(OtterController.java:245)
at com.alibaba.otter.node.etl.OtterController.initNid(OtterController.java:230)
at com.alibaba.otter.node.etl.OtterController.start(OtterController.java:73)
at com.alibaba.otter.node.deployer.OtterLauncher.main(OtterLauncher.java:25)

出现以上错误为ip配置错误

2013-08-14 15:42:16.886 [main] INFO com.alibaba.otter.node.deployer.OtterLauncher - INFO ## the otter server is running now ……

出现以上内容时为启动成功

(4)验证

安装完成并且启动后,登陆manager,会发现 该 nid对应的 node 状态为启动

七、同步配置

1.单向同步

没什么好注意的,按照官网来即可

2.双向同步

(1)数据库

双向同步需要在需要同步的两个数据库中新建retl数据库

1. 创建database retl
*/
CREATE DATABASE retl;
/* 2. 用户授权 给同步用户授权 */
CREATE USER retl@'%' IDENTIFIED BY 'retl';
GRANT USAGE ON *.* TO `retl`@'%';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO `retl`@'%';
GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON `retl`.* TO `retl`@'%';
/* 业务表授权,这里可以限定只授权同步业务的表 */
GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO `retl`@'%';
/* 3. 创建系统表 */
USE retl;
DROP TABLE IF EXISTS retl.retl_buffer;
DROP TABLE IF EXISTS retl.retl_mark;
DROP TABLE IF EXISTS retl.xdual;
CREATE TABLE retl_buffer
(    
    ID BIGINT(20) AUTO_INCREMENT,
    TABLE_ID INT(11) NOT NULL,
    FULL_NAME varchar(512),
    TYPE CHAR(1) NOT NULL,
    PK_DATA VARCHAR(256) NOT NULL,
    GMT_CREATE TIMESTAMP NOT NULL,
    GMT_MODIFIED TIMESTAMP NOT NULL,
    CONSTRAINT RETL_BUFFER_ID PRIMARY KEY (ID) 
)  ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE retl_mark
(    
    ID BIGINT AUTO_INCREMENT,
    CHANNEL_ID INT(11),
    CHANNEL_INFO varchar(128),
    CONSTRAINT RETL_MARK_ID PRIMARY KEY (ID) 
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
CREATE TABLE xdual (
ID BIGINT(20) NOT NULL AUTO_INCREMENT,
X timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (ID)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
/* 4. 插入初始化数据 */
INSERT INTO retl.xdual(id, x) VALUES (1,now()) ON DUPLICATE KEY UPDATE x = now();

(2)注意事项

最好在单向同步没问题了再进行双向的同步
从A到B的单向为主站点,B到A的设置为非主站点
数据库一致性选择单向回环补救
从A到B 配置ddl同步,从B到A时: 关闭“支持ddl同步”并且开启“跳过ddl异常”

八、限制性条件

1、数据库禁止使用枚举类型
2、保证外网宽带的带宽,可以用 iotop来检测带宽
3、数据库的表必须要有主键

    原文作者:isai_myisai
    原文地址: https://www.jianshu.com/p/095656d95ed0
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞