一.MetaQ安装部署情况:

地点

IP

Broker ID

Master/Slave

Slave ID:Group

合肥

192.168.52.23

Slave

1:meta-slave-group-hf

北京

192.168.51.33

Master

/

广州

192.168.70.157

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编号,大于等于表示作为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编号,大于等于表示作为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吗?

四.参考

l  MetaQ HA: https://github.com/killme2008/Metamorphosis/wiki/HA

l  MetaQ源码分析:https://github.com/killme2008/Metamorphosis/wiki/%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90

l  MetaQ Wiki:https://github.com/killme2008/Metamorphosis/wiki

l  MetaQ用户指南:http://taobao.github.io/metaq/document/userguide/userguide.htm

l  分布式消息中间件MetaQ 作者庄晓丹专访:http://blog.csdn.net/blogdevteam/article/details/8449916

l  分布式发布订阅消息系统Kafka 架构设计:http://www.oschina.net/translate/kafka-design

MetaQ安装部署文档的更多相关文章

  1. keepalived双机热备,安装部署文档

    keepalived双击热备,安装部署文档: 下载目录:/apps/keepalived-1.2.7.tar.gz 1:---> yum install -y make wget 2:---&g ...

  2. LVS+Heartbeat安装部署文档

    LVS+Heartbeat安装部署文档 发表回复 所需软件: ipvsadm-1.24-10.x86_64.rpmheartbeat-2.1.3-3.el5.centos.x86_64.rpmhear ...

  3. Sqlserver2008安装部署文档

    Sqlserver2008部署文档 注意事项: 如果你要安装的是64位的服务器,并且是新机器.那么请注意,你需要首先需要给64系统安装一个.net framework,如果已经安装此功能,请略过这一步 ...

  4. supervisor安装部署文档和管理实例

    Supervisord是用Python实现的一款非常实用的进程管理工具,类似于monit(关于monit见我的博客:用monit监控系统关键进程),monit和supervisord的一个比较大的差异 ...

  5. zabbix3.0安装部署文档

    zabbix v3.0安装部署 摘要: 本文的安装过程摘自http://www.ttlsa.com/以及http://b.lifec-inc.com ,和站长凉白开的<ZABBIX从入门到精通v ...

  6. OpenPAI大规模人工智能平台安装部署文档

    环境要求: 如果需要图形界面,需要在Ubuntu系统安装,否则centos系统安装时是没有问题的(web端和命令行进行任务提交) 安装过程需要有另外一台控制端机器(注意:区别于集群所在的任何一台服务器 ...

  7. Oracle Grid Infrastructure安装部署文档

    1. 部署环境步骤 1.1 软件环境 操作系统: CentOS release 6.5 oracle安装包: linux.x64_11gR2_grid.zip linux.x64_11gR2_data ...

  8. Oracle RAC安装部署文档

    1.    部署环境步骤 1.1 软件环境 操作系统:CentOS release 6.5(推荐使用5.*的系统)192.168.1.151    racnode1 192.168.1.152    ...

  9. 1. Oracle安装部署文档

    一. 部署环境步骤 1.1 软件环境 操作系统:CentOS release 6.5oracle安装包:linux.x64_11gR2_database_1of1.zip:linux.x64_11gR ...

随机推荐

  1. (转)iOS动画Core Animation

    文章转载:http://blog.sina.com.cn/s/blog_7b9d64af0101b8nh.html 在iOS中动画实现技术主要是:Core Animation. Core Animat ...

  2. js的for in具有不适应性(转)

    js中for in 可以遍历对象或数组的显性属性,也就是说我们自己定义的属性是可以遍历的,那些原型上默认已有的属性,例如:Object.prototype.toString.Object.protot ...

  3. VBScript - CUD registry key and value

    http://msdn.microsoft.com/en-us/library/aa384906(v=vs.85).aspx HKEY_LOCAL_MACHINE = &H80000002 s ...

  4. wx处理鼠标事件

    #include "MainFrame.h" BEGIN_EVENT_TABLE(MyFrame,wxFrame) EVT_LEFT_DOWN(MyFrame::OnMouseLe ...

  5. 不要随随便便的distinct和order by

    相关查询非常慢,通过程序拿到了相关sqlexplainexplain SELECT DISTINCT(o.orders_id), o.oa_order_id, customers_email_addr ...

  6. JVM——类的加载过程

    附一张图方便理解,一个类的执行过程 类的加载过程,简明的来说 类装饰器就是寻找类的字节码文件并构造出类在JVM内部表示的对象组件.在Java中,类装载器把一个类装入JVM中,要经过以下步骤: 装载:查 ...

  7. MySQL与Oracle 差异比较之六触发器

    触发器 编号 类别 ORACLE MYSQL 注释 1 创建触发器语句不同 create or replace trigger TG_ES_FAC_UNIT  before insert or upd ...

  8. @错误抑制运算符和or die()

    1.错误抑制运算符可在任何表达式前使用,PHP支持一个错误抑制运算符@.当将其放置在一个PHP表达式之前,则该表达式可能产生的任何错误信息都被忽略掉.@运算符只对表达式有效. 2.or die() 当 ...

  9. iostat的深入理解

    问题背景 iostat -xdm 1 通常用来查看机器磁盘IO的性能. 我们一般会有个经验值,比如,ioutil要小于80%, svctm要小于2ms. 前几天碰到一个奇怪的现象:有一台SSD机器,磁 ...

  10. 在Eclipse中用TODO标签管理任务

    在Eclipse中用TODO标签管理任务 Elipse为Java项目的时候,有一个很人性化的“任务管理”功能,利用这个功能可以方便地将项目中一些需要处理的任务记录下来.先来看看“任务管理”是怎么使用的 ...