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、数据库的表必须要有主键

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,515评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,600评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,587评论 18 399
  • 我想为你写情书 一字一字 一句一句 写满星辰 ...
    夏楚晨阅读 274评论 6 3
  • 刚刚看到简书,就注册了。这里作为第一篇文章,一个记号而已。
    7d39fa42caf0阅读 224评论 0 1