快速开始
1.2 准备工作
- ZooKeeper集群
选择安装路径后,安装包解压后的目录结构如下:
编辑conf/master.ini
,根据集群信息变更以下配置项
[master]
hostName=YOUR_SERVER_IP // 替换为当前主机IP
port=8099
webPort=8080
metaDataPath=/stage/meta_data
- 访问授权Token
confModAuthToken=abc // 该token用于页面配置、API调用等
- ZooKeeper集群地址
[zookeeper] // 同一个集群里Master和Broker必须使用同一套zookeeper环境,且配置一致
zkNodeRoot=/tubemq
zkServerAddr=localhost:2181 // 指向zookeeper集群,多个地址逗号分开
- 配置Replication策略
- (可选)生产环境,多master HA级别
HA级别 | Master数量 | 描述 |
---|---|---|
高 | 3 masters | 任何主节点崩溃后,集群元数据仍处于读/写状态,可以接受新的生产者/消费者。 |
中 | 2 masters | 一个主节点崩溃后,集群元数据处于只读状态。对现有的生产者和消费者没有任何影响。 |
低 | 1 master | 主节点崩溃后,对现有的生产者和消费者没有影响。 |
注意:
- 基于Docker容器化的需要,master.ini文件里对[replication]如上3个参数部分都是使用的缺省设置,在实际组网使用时需要以Master节点真实信息配置
- Master所有节点的IP信息要在hosts配置文件里构造IP与hostName映射关系,如类似“192.168.0.1 192-168-0-1”
1.4 配置Broker
编辑conf/broker.ini
,根据集群信息变更以下配置项
- Broker IP和端口
brokerId=0
hostName=YOUR_SERVER_IP // 替换为当前主机IP,broker目前只支持IP
port=8123
webPort=8081
- Master地址
masterAddressList=YOUR_MASTER_IP1:8099,YOUR_MASTER_IP2:8099 //多个master以逗号分隔
- 数据目录
primaryPath=/stage/msg_data
- ZooKeeper集群地址
进入Master节点的 bin
目录下,启动服务:
./tubemq.sh master start
访问Master的管控台 http://YOUR_MASTER_IP:8080
,页面可查则表示master已成功启动:
1.5.1 配置Broker元数据
Broker启动前,首先要在Master上配置Broker元数据,增加Broker相关的管理信息。在Broker List
页面, Add Single Broker
,然后填写相关信息:
- broker IP: broker server ip
- authToken:
conf/master.ini
文件中confModAuthToken
字段配置的 token
然后上线Broker:
1.6 启动Broker
进入broker节点的 目录下,执行以下命令启动Broker服务:
./tubemq.sh broker start
刷新页面可以看到 Broker 已经注册,当 当前运行子状态
为 idle
时, 可以增加topic:
可以通过 web GUI 添加 Topic, 在 Topic列表
页面添加,需要填写相关信息,比如增加demo
topic:
然后选择部署 Topic 的 Broker
此时 Broker的 可发布
和 可订阅
依旧是灰色的
需要在 Broker列表
页面重载Broker 配置
2.2 运行Example
可以通过上面创建的demo
topic来测试集群。
2.2.1 生产消息
将 YOUR_MASTER_IP:port
替换为实际的IP和端口,然后运行producer:
./bin/tubemq-producer-test.sh --master-servers YOUR_MASTER_IP1:port,YOUR_MASTER_IP2:port --topicName demo
如果能观察下如下日志,则表示数据发送成功:
2.2.2 消费消息
将 YOUR_MASTER_IP:port
替换为实际的IP和端口,然后运行Consumer:
如果能观察下如下日志,则表示数据被消费者消费到:
在这里,已经完成了TubeMQ的编译,部署,系统配置,启动,生产和消费。如果需要了解更深入的内容,请查看《TubeMQ HTTP API》里的相关内容,进行相应的配置设置。