《阿里otter系统部署手册》由会员分享,可在线阅读,更多相关《阿里otter系统部署手册(20页珍藏版)》请在金锄头文库上搜索。
1、阿里otter应用 系统部署手册版本号日期作者备注0.12016-4-29fashchina初始一、 产品说明 名称:otter t(r)译意: 水獭,数据搬运工语言: 纯java开发定位: 基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库. 一个分布式数据库同步系统。二、 工作原理一、原理描述:1. 基于Canal开源产品,获取数据库增量日志数据。 什么是Canal, 请点击2. 典型管理系统架构,manager(web管理)+node(工作节点) a. manager运行时推送同步配置到node节点 b. node节点将同步状态反馈到manager上3.
2、 基于zookeeper,解决分布式状态调度的,允许多node节点之间协同工作. 二、什么是canal?otter之前开源的一个子项目,开源链接地址:http:/ otter能解决什么?1. 异构库同步 a. mysql - mysql/oracle. (目前开源版本只支持mysql增量,目标库可以是mysql或者oracle,取决于canal的功能)2. 单机房同步 (数据库之间RTT 200ms,亮点) a. 机房容灾4. 双向同步 a. 避免回环算法 (通用的解决方案,支持大部分关系型数据库) b. 数据一致性算法 (保证双A机房模式下,数据保证最终一致性,亮点)5. 文件同步 a. 站
3、点镜像 (进行数据复制的同时,复制关联的图片,比如复制产品数据,同时复制产品图片).四、 初步性能指标1. 单机房同步 a. 100tps , 延迟100ms b. 5000tps, 延迟1s2. 中美异地机房同步 a. 100tps , 延迟2s b. 5000tps ,延迟10sps. 性能指标取决于目标数据库性能,数据大小等多个因素,单机房100b大小,极限tps可以1w+五、 名词解释Pipeline:从源端到目标端的整个过程描述,主要由一些同步映射过程组成。Channel:同步通道,单向同步中一个Pipeline组成,在双向同步中有两个Pipeline组成。DataMediaPair
4、:根据业务表定义映射关系,比如源表和目标表,字段映射,字段组等。DataMedia : 抽象的数据介质概念,可以理解为数据表/mq队列定义。DataMediaSource : 抽象的数据介质源信息,补充描述DateMedia。ColumnPair : 定义字段映射关系。ColumnGroup : 定义字段映射组。Node : 处理同步过程的工作节点,对应一个jvm。六、 otter的S/E/T/L stage阶段模型说明:为了更好的支持系统的扩展性和灵活性,将整个同步流程抽象为Select/Extract/Transform/Load,这么4个阶段.Select阶段: 为解决数据来源的差异性,
5、比如接入canal获取增量数据,也可以接入其他系统获取其他数据等。Extract/Transform/Load 阶段:类似于数据仓库的ETL模型,具体可为数据join,数据转化,数据Load的七、 环境准备1. 操作系统 a. otter为纯java编写,windows/linux均可支持 b. jdk建议使用1.6.25以上的版本,稳定可靠,目前阿里巴巴使用基本为此版本2. 整个otter同步由manager、node部分组成,需要预先进行安装, 3. otter node依赖于zookeeper进行分布式调度,需要安装一个zookeeper节点或者集群.在manager启动完成后,需要首先
6、定义不同机房的zookeeper机器集群。(一) 网络要求千兆网络八、 环境安装(一) MANAGER的安装a) 环境准备1. otter manager依赖于mysql进行配置信息的存储,所以需要预先安装mysql,并初始化otter manager的系统表结构 a. 安装mysql,这里略过。 b. 初始化otter manager系统表找到安装脚本otter-manager-schema.sql,然后登入MYSQL后执行下面语句:source otter-manager-schema.sql2. 整个otter架构依赖了zookeeper进行多节点调度,所以需要预先安装zookeeper
7、,不需要初始化节点,otter程序启动后会自检.a. manager需要在otter.properties中指定一个就近的zookeeper集群机器b) 环境安装网上下载或者自己下源码打包都可以,如果是网上下载,直接从官网下载,如果自己编译,通过GIT进行checkout,具体命令如下:git clone :alibaba/otter.gitcd otter; mvn clean install -Dmaven.test.skip -Denv=release执行上面命令后会生成软件包名字为manager.deployer-x.y.z.tar.gz,进行解压mkdir /usr/local/ma
8、nagertar zxvf manager.deployer-$version.tar.gz -C /usr/local/manager进行/usr/local/manager/conf目录,对otter.properties文件进行修改# otter manager domain name #修改为正确访问ip,生成URL使用otter.domainName = 127.0.0.1 # otter manager http portotter.port = 8080# jetty web config xmlotter.jetty = jetty.xml# otter manager dat
9、abase config ,修改为正确数据库信息otter.database.driver.class.name = com.mysql.jdbc.Driverotter.database.driver.url = jdbc:mysql:/127.0.01:3306/ottermanagerotter.database.driver.username = roototter.database.driver.password = hello# otter communication munication.manager.port = 1099# otter communication pool
10、munication.pool.size = 10# default zookeeper address,修改为正确的地址,手动选择一个地域就近的zookeeper集群列表otter.zookeeper.cluster.default = 127.0.0.1:2181# default zookeeper sesstion timeout = 90sotter.zookeeper.sessionTimeout = 90000# otter arbitrate connect manager configotter.manager.address = $otter.domainName:$mun
11、ication.manager.port PS:注意上面标红的地方,这些地方都是需要调整的。启动和关闭/usr/local/manager/bin/startup.sh启动/usr/local/manager/bin/stop.sh关闭通过看日志信息获得是否正常cd /usr/local/managertail f logs/manager.log如果启动日志中包含下面语句则说明manager配置成功。2013-08-14 13:19:45.911 WARN com.alibaba.otter.manager.deployer.JettyEmbedServer - #Jetty Embed S
12、erver is startup!2013-08-14 13:19:45.911 WARN com.alibaba.otter.manager.deployer.OtterManagerLauncher - # the manager server is running now .验证访问: http:/127.0.0.1:8080/,出现otter的页面,即代表启动成功访问:http:/127.0.0.1:8080/login.htm,初始密码为:admin/admin,即可完成登录. 目前:匿名用户只有只读查看的权限,登录为管理员才可以有操作权限PS:上述127.0.0.1和8080是在o
13、tter.properties中配置。(二) NODE节点安装a) 环境准备1. otter node会受otter manager进行管理,所以需要预先安装otter manager。2. 完成manager安装后,需要在manager页面为node定义配置信息,并生一个唯一id.a. 首先访问manager页面(通过admin/admin登录)的机器管理页面,点击添加机器按钮上面配置说明如下:机器名称:可以随意定义,方便自己记忆即可机器ip:对应node节点将要部署的机器ip,如果有多ip时,可选择其中一个ip进行暴露. (此ip是整个集群通讯的入口,实际情况千万别使用127.0.0.1,
14、否则多个机器的node节点会无法识别)机器端口:对应node节点将要部署时启动的数据通讯端口,建议值:2088下载端口:对应node节点将要部署时启动的数据下载端口,建议值:9090外部ip :对应node节点将要部署的机器ip,存在的一个外部ip,允许通讯的时候走公网处理。zookeeper集群:为提升通讯效率,不同机房的机器可选择就近的zookeeper集群.node这种设计,是为解决单机部署多实例而设计的,允许单机多node指定不同的端口。b. 机器添加完成后,跳转到机器列表页面,获取对应的机器序号nid通过这两部操作,获取到了node节点对应的唯一标示,称之为node id,简称:nid. 记录该nid,后续启动nid时会使用3. node节点进行跨机房传输时,会使用到HTTP多线程传输技术,目前主要依赖了aria2c做为其下载客户端。b)