一、搭建otter系统需要的环境
1.jdk1.6.25以上的版本
2.方便本地调试用的IDE(Eclipse\IntelliJ IDEA)
3.mysql数据库
4.zookeeper
5.node
6.otter.manager
7.maven
二、数据库搭建
在你的mysql数据库新建一个otter的database,然后获取初始化otter的sql:初始化sql
执行这个初始化sql
三、下载otter源码
otter的github地址:https://github.com/alibaba/otter,我们目前选用的是4.2.15tag版本。
源码下载完成后,进入你所保存的路径,执行maven命令 mvn clean install
将otter工程导入到你的IDEA里去
四、部署manager
manager是otter的配置管理系统,部署manager的前提是已经配置好zookeeper,及第二步导入的数据库。
由于manager并非otter的核心模块,所以我们直接部署manager,而不是在IDEA里配置调试
manager有两种打包方式:
一种是直接下载github上的发布版本包https://github.com/alibaba/otter/releases
另一种则是本地使用maven命令自己编译:mvn clean install -Dmaven.test.skip -Denv=release,编译完成后,会在根目录下产生target/manager.deployer-$version.tar.gz
无论哪种方式,产出结果都是一个压缩包,接着,我们对压缩包进行解压
解压完成后,进入"manager.deployer-4.2.15/conf/"目录,找到otter.properties文件,此文件为manager的配置文件,我们需要对此文件进行编辑
主要是对url及端口、mysql、zookeeper的配置进行修改,修改成你搭建时的相应配置。以下为我本人的配置,仅供参考:
otter.domainName = 127.0.0.1
otter.port = 8080
otter.jetty = jetty.xml
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 = 123QWE!@#qwe
otter.communication.manager.port = 1099
otter.communication.pool.size = 10
otter.zookeeper.cluster.default = 127.0.0.1:2181
otter.zookeeper.sessionTimeout = 60000
otter.manager.address = ${otter.domainName}:${otter.communication.manager.port}
otter.manager.productionMode = true
otter.manager.monitor.self.enable = true
otter.manager.monitor.self.interval = 120
otter.manager.monitor.recovery.paused = true
otter.manager.monitor.email.host = smtp.gmail.com
otter.manager.monitor.email.username =
otter.manager.monitor.email.password =
otter.manager.monitor.email.stmp.port = 465
当配置完成后,我们进入"manager.deployer-4.2.15/bin/"目录,执行startup.sh脚本启动manager,执行脚本的命令为sh startup.sh
启动manager后,我们可访问manager.deployer-4.2.15/logs/manager.log来查看是否启动成功,如果出现类似下方的日志,则表示启动成功
2013-08-14 13:19:45.911 [] WARN com.alibaba.otter.manager.deployer.JettyEmbedServer - ##Jetty Embed Server 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的页面,表示manager已启动成功(管理员的初始账号为admin\admin)
五、部署node
1.部署前的准备工作 (配置node,并记录下相应的nid)
首先访问manager页面的机器管理页面,点击添加机器按钮
几点说明:
- 机器名称:可以随意定义,方便自己记忆即可
- 机器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时会使用
2.部署node包
此步骤一般用于运维或实施人员进行部署环境时使用,如果是希望能本地调试的开发人员,可以跳过此步骤直接看第3步,也可以浏览此步骤参考
跟manager包相同,node包也有两种获取方式:
一种是直接下载github上的发布版本包https://github.com/alibaba/otter/releases
另一种则是本地使用maven命令自己编译:mvn clean install -Dmaven.test.skip -Denv=release ,编译完成后,会在根目录下产生target/node.deployer-$version.tar.gz
无论哪种方式,产出结果都是一个压缩包,接着,我们对压缩包进行解压
解压完成后,进入"node.deployer-4.2.15/conf/"目录,找到nid文件,如果没有,则手动创建一个(注意此文件并没有后缀名)。
此文件为node的nid配置文件,我们需要对此文件进行编辑,修改文件内容为步骤1里配置的nid
接着,编辑node.deployer-4.2.15/conf/otter.properties,将配置信息修改为相应的配置。以下为我本地的配置,仅供参考
otter.nodeHome = ${user.dir}/../
otter.htdocs.dir = ${otter.nodeHome}/htdocs
otter.download.dir = ${otter.nodeHome}/download
otter.extend.dir= ${otter.nodeHome}/extend
otter.zookeeper.sessionTimeout = 60000
otter.communication.pool.size = 10
otter.manager.address = 172.16.28.43:1099
最后,我们进入"node.deployer-4.2.15/bin/"目录,执行startup.sh脚本启动manager,执行脚本的命令为sh startup.sh
启动node后,我们可访问node.deployer-4.2.15/logs/node.log来查看是否启动成功,如果出现类似下方的日志,则表示启动成功
2013-08-14 15:42:16.886 [main] INFO com.alibaba.otter.node.deployer.OtterLauncher - INFO ## the otter server is running now ......
如果出现这种日志,则表示ip配置的有错误,需要检查ip
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)
启动成功后,可访问 http://127.0.0.1:8080/node_list.htm,查看对应的节点状态,如果变为了已启动,代表已经正常启动。(ps,如果是未启动,会是一个红色高亮)
3.本地debug node模块
此步骤适合本地有IDEA工具,可以debug的开发人员食用
1.修改配置文件
找到/node.deployer/src/main/resources/otter.properties配置文件,修改ip地址
2.修改nid
找到文件:
/node.common/src/main/java/com/alibaba/otter/node/common/config/impl/ConfigClientServiceImpl.java
/node.etl/src/main/java/com/alibaba/otter/node/etl/OtterController.java
搜索:"throw new ConfigException("nid is not set!");"
如下图所示,替换为System.setProperty("nid", "1"); nid = "1";
3.启动main方法
找到文件/node.deployer/src/main/java/com/alibaba/otter/node/deployer/OtterLauncher.java,以debug模式启动
结束