共计 3896 个字符,预计需要花费 10 分钟才能阅读完成。
一.MetaQ 安装部署情况:
地点 |
IP |
Broker ID |
Master/Slave |
Slave ID:Group |
合肥 |
192.168.52.23 |
1 |
Slave |
1:meta-slave-group-hf |
北京 |
192.168.51.33 |
1 |
Master |
/ |
广州 |
192.168.70.157 |
1 |
Slave |
2:meta-slave-group-gz |
二.MetaQ 安装
1. 前提
已有安装了 ZooKeeper 的机器,且三地的 MetaQ 都可以访问到,即三个 IP 都可以 ping 通安装了 ZooKeeper 的机器。ZooKeeper 是用来注册 MetaQ 的 broker、topic、pub、sub 信息,用来做负载均衡的,起到协调作用。
我在上述三地都安装了 ZooKeeper,目前使用的是北京 192.168.51.33:2181 作为 ZooKeeper 服务器。
Zookeeper 使用 Ubuntu 的 deb 包的 dpkg 方式安装。
启动 ZooKeeper:
Service zookeeper start
2. 下载 MetaQserver 1.4.6.2
下载链接:https://meta-queue.googlecode.com/files/metaq-server-1.4.6.2.tar.gz,下载 metaq-server-1.4.6.2.tar.gz 复制到三地的 /usr/lib 目录下。
3. 部署
解压 tar zxvfmetaq-server-1.4.6.2.tar.gz,将解压出来的 taobao/metamorphosis-server-wrapper 文件夹移动到 /usr/lib 下,并重命名为 metaq。
Metaq 的文件结构:
l bin:metaq 的命令文件夹./meteServer.sh 执行 metaq 命令
l conf:metaq 的配置文件夹,async_slave.properties 异步复制配置,server.ini 配置 broker,samsa_master.properties 同步复制配置。
l lib:metaq 依赖的 jar 包
l provided: 开发者自己开发的程序
4. master/slave 集群配置
使用异步复制架构。
修改北京 192.168.51.33 机器的 /usr/lib/metaq/conf/server.ini 文件为:
[system]
;; brokerId mustbe unique, the slave should be the same with master
brokerId=1
;; topicpartitions default set to 1, I changed it to 16, it should not be too large
numPartitions=16
serverPort=8123
dashboardHttpPort=8120
unflushThreshold=0
unflushInterval=10000
maxSegmentSize=1073741824
;default 1048576
maxTransferSize=104857600
deletePolicy=delete,168
deleteWhen=0 0 6,18 * * ?
flushTxLogAtCommit=1
stat=true
putProcessThreadCount=100
;; Update consumers offsets tocurrent max offsets when consumers offsets are out of range of current broker’smessages.
;; It must be false inproduction.But recommend to be true in development or test.
updateConsumerOffsets=true
;; your zookeeperserver
[zookeeper]
zk.zkConnect=192.168.51.33:2181
zk.zkSessionTimeoutMs=30000
zk.zkConnectionTimeoutMs=30000
zk.zkSyncTimeMs=5000
;; Topics section
[topic=test]
[topic=meta-test]
;; add your topicshere before use it
[topic=oct29]
因为使用 master/slave 模式,因此要时刻保持合肥 192.168.52.23 和广州 192.168.70.157 的 server.ini 文件保持和北京 192.168.51.33 相同,即使添加了新的 topic,也要手动向 server.ini 中注册。
修改三地的 conf/async_slave.properties,北京的保持不变,合肥的修改为
#slave编号 , 大于等于 0 表示作为 slave 启动 , 同一个 master 下的 slave 编号应该设不同值.
slaveId=1
#作为 slave 启动时向 master 订阅消息的 group, 如果没配置则默认为meta-slave-group
#不同的 slaveId 请使用不同的group
slaveGroup=meta-slave-group
#slave数据同步的最大延时 , 单位毫秒
slaveMaxDelayInMills=500
#是否自动从 master 同步 server.ini, 1.4.2 新增选项
#第一次仍然需要自己拷贝 server.ini,后续可以通过设置此选项为true 来自动同步
autoSyncMasterConfig=true
广州的 conf/async_slave.properties 修改为:
#slave
编号
,
大于等于
0
表示作为
slave
启动
,
同一个
master
下的
slave
编号应该设不同值
.
slaveId=2
#
作为
slave
启动时向
master
订阅消息的
group,
如果没配置则默认为
meta-slave-group
#
不同的
slaveId
请使用不同的
group
slaveGroup=meta-slave-group-gz
#slave
数据同步的最大延时
,
单位毫秒
slaveMaxDelayInMills=500
#
是否自动从
master
同步
server.ini, 1.4.2
新增选项
#
第一次仍然需要自己拷贝
server.ini
,后续可以通过设置此选项为
true
来自动同步
autoSyncMasterConfig=true
5. 启动 MetaQ 集群
首先启动两个 slave:
合肥和广州将目录切换到 /usr/lib/metaq/bin 下,使用 slave 模式启动 MetaQ:
./metaServer.sh start slave &
北京启动 master:
./metaServer.sh start &
三.问题
1. Topic 的默认分区到底去多少好?即 server.ini 中 numPartitions 的配置,目前为 16,当使用 1024 的时候很多会导致磁盘效率太低,message 发送失败几率升高。
2. 异步复制的 slave 将参与消费者的消费活动,消息消费者可以从 slave 中获取消息并消费,消费者会随机从 master 和 slaves 中挑选一台作为消费 broker。如何指定 consumer 从 slave 中消费 message 而不跑去消费 master 的呢?
3. 可以添加一个 topic 而不重启 MetaQ 吗?
Metamorphosis 的详细介绍:请点这里
Metamorphosis 的下载地址:请点这里
更多 Oracle 相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12
更多 Ubuntu 相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2
更多 Android 相关信息见Android 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=11
更多 Fedora 相关信息见Fedora 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=5
更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13
更多 RedHat 相关信息见RedHat 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=10
更多 SUSE 相关信息见SUSE 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=3
更多 CentOS 相关信息见CentOS 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=14
四.参考
MetaQ HA: https://github.com/killme2008/Metamorphosis/wiki/HA
MetaQ 源码分析:https://github.com/killme2008/Metamorphosis/wiki/%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90
MetaQ Wiki:https://github.com/killme2008/Metamorphosis/wiki
MetaQ 用户指南:http://www.linuxidc.com/Linux/2013-11/92750.htm
分布式发布订阅消息系统 Kafka 架构设计 http://www.linuxidc.com/Linux/2013-11/92751.htm