轉自:http://wbj0110.iteye.com/blog/1956635
下載服務器
從Google Code或者我的個人主頁選擇最新版本的服務器(目前是1.4.6.1)並下載到本地,假設下載後的文件在folder目錄,執行下列命令解壓縮文件:
cd folder
tar zxvf metaq-server-1.4.6.2.tar.gz
解壓縮文件,解壓後目錄結構大概爲:
taobao
metamorphosis-server-wrapper
bin
env.bat
env.sh
log4j.properties
metaServer.bat
metaServer.sh
tools_log4j.properties
logs
conf
server.ini
......
lib
......
provided
......
啓動腳本放在bin目錄,主要的腳本是metaServer.sh
,日誌在logs目錄,而配置文件主要是conf目錄下server.ini,lib存放所有的依賴jar包,1.4.6新增加的provided
目錄用於存放服務端的消息過濾器實現打包後的jar包以及用到的第三方依賴。
配置Broker
默認server.ini提供了一個topic——test
用於測試,你可以添加自己定義的topic:
[topic=mytopic]
;是否啓用統計
stat=true
;這個topic指定分區數目,如果沒有設置,則使用系統設置
numPartitions=10
;刪除策略的執行時間,cron表達式
deleteWhen=0 0 6,18 * * ?
大多數system參數都可以topic參數所覆蓋。
啓動和關閉服務器
確保你的機器上安裝了JDK並正確設置JAVA_HOME和PATH變量,啓動服務器:
bin/metaServer.sh start local
關閉服務器:
bin/metaServer.sh stop
在windows上,雙擊執行"bin/metaServer.bat"即可(windows不支持local模式啓動,需配置zookeeper,見下文的zookeeper配置一節)。
修改JAVA_HOME,JMX等變量,請修改bin/env.sh
(for linux)或者bin/env.bat
(for
windows)。
更多metaServer.sh支持命令請使用help
:
bin/metaServer.sh help
=>
Usage: metaServer.sh {start|status|stop|restart|reload|stats|open-partitions|close-partitions|move-partitions|delete-partitions|query}
......
驗證服務器正常運行
除了通過觀察日誌logs/metaServer.log外,你還可以通過stats命令來觀察服務器運行狀況。
bin/metaServer.sh stats
=>
STATS
pid 7244
broker_id 0
port 8123
uptime 2057
version 1.4.2
curr_connections 1
threads 35
cmd_put 0
cmd_get 0
cmd_offset 0
tx_begin 0
tx_xa_begin 0
tx_commit 0
tx_rollback 0
get_miss 0
put_failed 0
total_messages 0
topics 2
config_checksum 718659887
END
你也可以telnet到默認的8123端口執行stats
命令查看。
Web管理平臺
1.4.5新增Web管理平臺,通過瀏覽器訪問你服務器運行的8120端口(默認),例如本機運行就是http://localhost:8120
集羣模式配置
Local模式
上文提到的啓動方式是以本地模式也就是單機模式啓動,它將啓動一個內置的zookeeper,並將broker註冊到該zookeeper。這對於單機應用或者測試開發是最便捷方式的。
但是MetaQ是作爲分佈式軟件設計的,更通常作爲一個集羣提供服務。MetaQ的集羣管理是利用zookeeper實現的,因此首先需要配置zookeeper。 一個MetaQ集羣必須使用同一個zookeeper集羣。
配置zookeeper
Metamorphosis使用zookeeper發佈和訂閱服務,並默認使用zookeeper存儲消費者offset,因此,你需要首先安裝一個zookeeper到某臺機器上,或者使用某個現有的zk集羣,安裝zookeeper請參考zookeeper文檔。
假設你在本機安裝並啓動了一個zookeeper,端口在默認的2181,請修改conf/server.ini文件,保證zookeeper地址正確:
;zk的服務器列表
zk.zkConnect=localhost:2181
;zk心跳超時,單位毫秒,默認30秒
zk.zkSessionTimeoutMs=30000
;zk連接超時時間,單位毫秒,默認30秒
zk.zkConnectionTimeoutMs=30000
;zk數據同步時間,單位毫秒,默認5秒
zk.zkSyncTimeMs=5000
其他zk參數請酌情設置。其他重要參數還包括dataPath和numPartitions,分別用於指定默認的數據存儲路徑,以及默認topic的分區數目。具體參數信息請看conf/server_sample.ini
示範文件。
當使用內置的zookeeper時,zookeeper數據是存放在/temp目錄下。可以通過zk.server.snapDirectory和zk.server.logDirectory參數來設置。另外還可以通過zk.server.max.connections來設置最大連接數,默認是4096。
啓動服務器
假設你準備建立一個兩臺broker組成的MetaQ集羣提供消息服務,那麼通常你需要兩臺機器來運行MetaQ。但是這裏爲了簡單測試,以單機運行集羣模式爲例子。
首先,按照上文的提示,正常啓用Local模式後,假設爲broker1,請拷貝一份MetaQ到不同目錄,假設爲broker2:
server.ini
需要修改三個參數:serverPort
,dataPath
和dashboardHttpPort
,分別對應服務器端口,數據存儲路徑和Web管理平臺HTTP端口號,將broker2的這兩個參數修改爲不同值,其他設置保持不變。bin/env.sh
需要修改export JMX_PORT=9123
,改爲不同的端口,這是JMX端口。
然後,停止local模式啓動的broker1, 並重新以集羣模式啓動:
metaServer.sh stop
metaServer.sh start
進入broker2的bin目錄,啓動broker2:
metaServer.sh start
這樣即組成兩個broker的MetaQ集羣。