otter学习(二)—— 快速搭建一个能够本地调试的otter系统

一、搭建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模式启动

             

 

结束

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值