下载服务器
从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集群。