一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第2天,点击查看活动详情
1. 安装 JDK
JDK 1.8下载可到官网下载,需要注册,也可以点击下面的附件下载。
JDK 安装,参考:wangxiaoming.blog.csdn.net/article/det…
也可以参考:www.cnblogs.com/wenbinshen/…
验证是否安装成功
$ java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode
安装 RocketMQ
咱们将 RocketMQ 安装到 Linux 系统 /opt目录下
下载
RocketMQ 下载地址:github.com/apache/rock…
cd /opt
wget https://github.com/apache/rocketmq/archive/rocketmq-all-4.6.0.zip
github 下载速度一般会很慢,可以通过国内镜像下载:
wget https://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.6.0/rocketmq-all-4.6.0-bin-release.zip
解压
unzip rocketmq-all-4.6.0-bin-release.zip
解压目录说明:
rocketmq-all-4.6.0-bin-release
├── benchmark #性能测试脚本
├── bin #命令行工具
├── conf #配置文件目录
├── lib #依赖的第三方类库
├── LICENSE
├── NOTICE
└── README.md
rocket 环境变量设置
设置ROKCKET_HOME环境变量:
查看安装目录
$ pwd
/opt/rocketmq-all-4.6.0-bin-release
创建一个软连接,方便后续升级
sudo ln -s /opt/rocketmq-all-4.6.0-bin-release rocketmq
修改 /etc/profile
export ROCKETMQ_HOME=/opt/rocketmq
使得环境变量生效
source /etc/profile
验证环境变量生效
$ echo $ROCKETMQ_HOME
/opt/rocketmq
启动 NameServer
NameServer 通过 bin 目录下 mqnamesrv 脚本启动,其内部 bin 目录下的一个脚本 runserver.sh 启动后会占用 4G 内存。
修改runserver.sh 脚本,内存占用4G太大,修改。
JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
修改下
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn500m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
启动 nameServer.sh
$ nohup sh bin/mqnamesrv &
看下是否启动成功: 验证方式1:
$ jps -l
3961157 sun.tools.jps.Jps
3953057 org.apache.rocketmq.namesrv.NamesrvStartup #NameServer进程
验证方式2:NameServer默认监听9876端口,
$ lsof -iTCP -nP | grep 9876
java 3953057 tianshouzhi.robin 65u IPv6 134849198 0t0 TCP *:9876 (LISTEN)
设置NAMESRV_ADDR环境变量,修改etc/profile,添加以下内容
export NAMESRV_ADDR=localhost:9876
执行source /etc/profile使得其生效
启动 Broker
${ROCKETMQ_HOME}/conf目录下,提供了我们讲解到的RocketMQ四种部署模式的demo配置文件,如下所示:
conf
├── 2m-2s-async //多Master 多 Slave 模式,异步复制
│ ├── broker-a.properties
│ ├── broker-a-s.properties
│ ├── broker-b.properties
│ └── broker-b-s.properties
├── 2m-2s-sync //多 Master 多 Slave 模式,同步复制
│ ├── broker-a.properties
│ ├── broker-a-s.properties
│ ├── broker-b.properties
│ └── broker-b-s.properties
├── 2m-noslave //多Master模式
│ ├── broker-a.properties
│ ├── broker-b.properties
│ └── broker-trace.properties
└── broker.conf //单Master模式
单 master 启动
单 master 模式可以使用 conf 目录下 broker.conf 配置
#集群名称
brokerClusterName=single-master
#broker分组名称
brokerName=broker-a
#nameserver地址
namesrvAddr=127.0.0.1:9876
#brokerId,因为是master节点,所以这里设置为0
brokerId=0
#监听地址,如果是本地启动那么添加此行
brokerIP1=127.0.0.1
#监听端口
listenPort=10911
#rocketmq定时清除
deleteWhen=04
#文件保留时间,默认48小时
fileReservedTime=48
#broker角色,异步复制
brokerRole=ASYNC_MASTER
#异步刷盘
flushDiskType=ASYNC_FLUSH
#存储目录
storePathRootDir=/data/rocketmq/single-master/broker-a/store
storePathCommitLog=/data/rocketmq/single-master/broker-a/store/commitlog
启动通过bin目录下的mqbroker脚本。由于默认的配置,启动后会立即占用8G内存,如果机器内存不够,可以修改bin/runbroker.sh,找到以下这一行:
JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
修改为
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn500m"
启动 broker
$ nohup sh bin/mqbroker -c conf/broker.conf &
验证是否启动成功
jps -l
3961157 sun.tools.jps.Jps
3960977 org.apache.rocketmq.broker.BrokerStartup
3953057 org.apache.rocketmq.namesrv.NamesrvStartup
brokerServer 默认监听端口 10911,可以通过一下方式验证。
$ lsof -iTCP -nP | grep 10911
java 37686 tianshouzhi.robin 107u IPv6 137040246 0t0 TCP *:10911 (LISTEN)
如果启动失败,查看
~/logs/rocketmqlogs/broker.log
测试发送消息
$ sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
SendResult [sendStatus=SEND_OK, msgId=FDBDDC0300FF00010001022700120225003C3D4EAC696720298203E7, offsetMsgId=AC11000100002A9F0000000000037567, messageQueue=MessageQueue [topic=TopicTest, brokerName=broker-a, queueId=3], queueOffset=249]
测试消费消息
$ sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
ConsumeMessageThread_%d Receive New Messages: [MessageExt…
查询集群信息
$ sh bin/mqadmin clusterList -n localhost:9876
#Cluster Name #Broker Name #BID #Addr #Version #...(略)
single-master broker-a 0 192.168.1.3:10911 V4_6_0 ...
关闭 broker 集群
bin目录安装包下有一个mqshutdown脚本,可以关闭 Broker
关闭脚本
$ sh bin/mqshutdown broker
总结
介绍了 rocketMQ 集群的部署方式,主要是启动 NameServer 和 单 master broker 集群