RocketMQ(一):环境搭建

RocketMQ 是一款分布式、队列模型的消息中间件,具有以下特点:
能够保证严格的消息顺序,提供丰富的消息拉取模式,高效的订阅者水平扩展能力,实时的消息订阅机制,亿级消息堆积能力,

前置知识


ssh工具

连接linux工具SecureCRT


Linux相关知识

centos7 防火墙firewalld的基本使用,参考
  • 启动: systemctl start firewalld
  • 查看状态: systemctl status firewalld
  • 停止: systemctl disable firewalld
  • 禁用: systemctl stop firewalld

配置firewalld-cmd
  • 查看版本: firewall-cmd --version
  • 查看帮助: firewall-cmd --help
  • 显示状态: firewall-cmd --state
  • 查看所有打开的端口firewall-cmd --zone=public --list-ports
  • 更新防火墙规则: firewall-cmd --reload
  • 查看区域信息: firewall-cmd --get-active-zones
  • 查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
  • 拒绝所有包:firewall-cmd --panic-on
  • 取消拒绝状态: firewall-cmd --panic-off
  • 查看是否拒绝: firewall-cmd --query-panic

开启一个对外端口步骤
  • 先查看是否开启,查看所有打开的端口: firewall-cmd --zone=public --list-ports
  • 添加:
    firewall-cmd --zone=public --add-port=80/tcp --permanent(–permanent永久生效,没有此参数重启后失效)
1
2
3
4
//命令含义:
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
  • 重新载入: firewall-cmd --reload
  • 查看是否开启: firewall-cmd --zone=public --query-port=80/tcp
  • 删除: firewall-cmd --zone= public --remove-port=80/tcp --permanent
服务器环境(针对2m-noslave)

序号 | IP | 用户名 | 密码 | 角色 | 模式
—|—|—|—|—|—|—|—
1 | 192.168.100.24| root| | nameServer1,brokerServer1|Master1
2 | 192.168.100.25| root| | nameServer2,brokerServer2|Master2


Hosts添加信息

修改host,做集群的通讯(两台机器都修改)

1
2
vim /etc/hosts

host.png


IPNAME
192.168.100.24rocketmq-nameserver1
192.168.100.24rocketmq-master1
192.168.100.25rocketmq-nameserver2
192.168.100.25rocketmq-master2

RocketMQ最简单部署 – 单namesrvbroker

  • 1.jdk安装

rocketmq安装


上传解压

上传

使用 rz sz插件,进行上传下载

1
2
yum install -y lrzsz

上传命令为rz,下载命令为sz

解压安装
1
2
3
4
5
6
tar -zxvf alibaba-rocketmq-3.2.6.tar.gz -C /usr/local   //解压到指定目录下

mv alibaba-rocketmq alibaba-rocketmq-3.2.6 //重命名,带版本号

ln -s alibaba-rocketmq-3.2.6 rocketmq //创建软链接、如果不加 -s 就是创建硬链接

创建存储路径

1
2
3
4
5
6
7
8
mkdir /usr/local/rocketmq/store

mkdir /usr/local/rocketmq/store/commitlog

mkdir /usr/local/rocketmq/store/consumequeue

mkdir /usr/local/rocketmq/store/index

修改RocketMQ配置文件

1
2
3
4
vim /usr/local/rocketmq/conf/2m-noslave/broker-a.properties

vim /usr/local/rocketmq/conf/2m-noslave/broker-b.properties

作为broker启动时的参数配置文件

参考配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#所属集群名字
brokerClusterName=rocketmq-cluster

#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a|broker-b

#0 表示 Master,>0 表示 Slave
brokerId=0

#nameServer地址,分号分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876

#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4

#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true

#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true

#Broker 对外服务的监听端口
listenPort=10911

#删除文件时间点,默认凌晨 4点
deleteWhen=04

#文件保留时间,默认 48 小时
fileReservedTime=120

#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824

#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000

#destroyMapedFileIntervalForcibly=120000

#redeleteHangedFileInterval=120000

#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88

#存储路径
storePathRootDir=/usr/local/rocketmq/store

#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq/store/commitlog

#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue

#消息索引存储路径
storePathIndex=/usr/local/rocketmq/store/index

#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq/store/checkpoint

#abort 文件存储路径
abortFile=/usr/local/rocketmq/store/abort

#限制的消息大小
maxMessageSize=65536

#flushCommitLogLeastPages=4

flushConsumeQueueLeastPages=2

#flushCommitLogThoroughInterval=10000

#flushConsumeQueueThoroughInterval=60000

#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master

#- SLAVE
brokerRole=ASYNC_MASTER

#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘

flushDiskType=ASYNC_FLUSH

#checkTransactionMessageEnable=false

#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128


修改日志配置文件

1
2


修改启动脚本参数

1
2
3



上面两步省略,直接上传到linux解压等即可

启动服务namesrv


1.到bin目录下

加入执行权限 chmod +x *

2.修改启动的堆内存初始大小
1
`vim runserver.sh` //更改内存设置
3.启动
1
./mqnamesrv
4.后台运行进程:
1
2
nohup ./mqnamesrv &

5.jps查看进程

查看是否成功: tail -f nohup.out


启动服务broker(master)

1.修改启动的堆内存初始大小
1
2
3

vim runbroker.sh //更改内存设置

2. 启动
1
2
nohup sh mqbroker -n "192.168.1.107:9876"  &

3.指定配置文件的方式启动
1
2
3
4
5
6
nohup sh mqbroker -n "192.168.1.107:9876" -c ../conf/2m-noslave/broker-a.properties > broker.out & 

nohup sh mqbroker -n "127.0.0.1:9876" -c ../conf/2m-noslave/broker-a.properties > broker.out &

nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 &

4.使用./mqadmin来观察namesrv和broker的情况
1
./mqadmin clusterList -n 192.168.1.107:9876 //ip为namesrv地址

查看是否成功启动

1
2
3
4
5
netstat -ntlp
# jps
# tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log
# tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log

停止Rocketmq

1
2
3
4
5
6
cd /usr/local/rocketmq/bin

sh mqshutdown broker
sh mqshutdown namesrv


数据清理(停止后进行数据清理)

1
2
3
4
5
6
7
8
9
10
--等待停止

# rm -rf /usr/local/rocketmq/store
# mkdir /usr/local/rocketmq/store
# mkdir /usr/local/rocketmq/store/commitlog
# mkdir /usr/local/rocketmq/store/consumequeue
# mkdir /usr/local/rocketmq/store/index

--按照上面步骤重启NameServer与BrokerServer

5.RocketMQ需要打开的防火请端口号 9876,10911,10912