一、搭建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模式啓動
結束