文章目录
- RocketMQ 安装
- 下载
- 安装
- 上传服务器
- 配置环境变量
- 修改 runserver.sh
- 修改 runbroker.sh
- 修改 broker.conf
- 启动
- 安装 RocketMQ 控制台
- 安装
- Linux 防火墙命令
- Docker 安装 RocketMQ
- 拉取镜像
- 启动 NameServer 服务
- 启动 Broker 服务
- 启动控制台
RocketMQ 官网: http://rocketmq.apache.org/
RocketMQ 文档:https://rocketmq.apache.org/docs/4.x/
RocketMQ GitHub:https://github.com/apache/rocketmq
RocketMQ 安装
下载
-
打开下载地址:https://rocketmq.apache.org/zh/download,选择 4.9.2 版本的 Binary 下载,点击【download.zip】。
-
等待下载完成。
安装
以安装Linux服务器为例
上传服务器
-
创建目录【/root/RocketMQ】用于存放 MQ 文件:
mkdir /root/RocketMQ
-
将下载的文件上传到服务器中:
-
安装 unzip 命令用于解压压缩包:
yum -y install unzip
-
解压压缩包 rocketmq-all-4.9.2-bin-release.zip:
unzip rocketmq-all-4.9.2-bin-release.zip
- Benchmark:包含一些性能测试的脚本;
- Bin:可执行文件目录;
- Conf:配置文件目录;
- Lib:第三方依赖;
- LICENSE:授权信息;
- NOTICE:版本公告。
配置环境变量
-
打开配置文件
vim /etc/profile
-
添加环境变量
export NAMESRV_ADDR=公网IP:9876
-
刷新配置文件
source /etc/profile
修改 runserver.sh
-
切换到【/root/RocketMQ/rocketmq-4.9.2/bin】目录下:
cd /root/RocketMQ/rocketmq-4.9.2/bin
-
编辑文件【runserver.sh】:
vim runserver.sh
-
修改运行时占用内存大小,由于 Java 环境为 jdk8,所以修改关于 Java9 之前的版本的配置:
修改后:
修改 runbroker.sh
-
编辑【runbroker.sh】:
vim runbroker.sh
-
修改配置:
修改后:
修改 broker.conf
-
切换【/root/RocketMQ/rocketmq-4.9.2/conf】目录:
cd /root/RocketMQ/rocketmq-4.9.2/conf
-
编辑【broker.conf】:
vim broker.conf
-
添加配置文件
namesrvAddr = localhost:9876 autoCreateTopicEnable = true brokerIP1 = 192.168.10.4
- namesrvAddr:nameServer 地址,当 nameServer 和 broker 在一个服务器时可以写 localhost。
- autoCreateTopicEnable:自动创建 Topic。
- brokerIP1:公网 ip 地址。
启动
-
创建目录【/root/RocketMQ/rocketmq-4.9.2/logs】用于存放日志:
mkdir /root/RocketMQ/rocketmq-4.9.2/logs
-
切换到【/root/RocketMQ/rocketmq-4.9.2】目录,启动 nameSrv:
nohup sh bin/mqnamesrv > ./logs/namesrv.log &
-
启动 broker,
-c
指定配置文件:nohup sh bin/mqbroker -c conf/broker.conf > ./logs/broker.log &
-
查看 Java 程序进程:
jps -l
-
关闭进程:
kill [pid]
安装 RocketMQ 控制台
安装
-
点击进入下载地址:https://rocketmq.apache.org/zh/download,右侧点击【RocketMQ Dashboard】,点击【download.zip】进行下载。
-
等待下载完成
-
解压并切换到根目录,打开cmd,使用maven命令进行打包
mvn clean package -Dmaven.test.skip=true
-
在target 目录下会生成我们需要的jar包
-
上传服务器
-
命令运行
rocketmq-dashboard-1.0.0.jar
包:nohup java -jar rocketmq-dashboard-1.0.0.jar --server.port=8081 rocketmq.config.namesrvAddr=127.0.0.1:9876 > rocketmq-4.9.2/logs/dashboard.log &
-
浏览器访问:http://192.168.10.4:8081:
-
若访问不了,可以查看防火墙是否开启,【9876、10100-11000】端口是否未开放。
Linux 防火墙命令
-
查看防火墙状态:
systemctl status firewalld
-
关闭防火墙:
systemctl stop firewalld
-
开启防火墙:
systemctl start firewalld
-
开放指定端口:
firewall-cmd --zone=public --add-port=8081/tcp --permanent
-
重启防火墙:
firewall-cmd --reload
Docker 安装 RocketMQ
拉取镜像
-
拉取 RocketMQ 镜像:
docker pull rocketmqinc/rocketmq docker pull styletang/rocketmq-console-ng
-
查看镜像:
docker images
启动 NameServer 服务
-
创建 NameServer 数据存储路径:
mkdir -p /home/rocketmq/data/namesrv/logs /home/rocketmq/data/namesrv/store
-
启动 NameServer 容器:
docker run -d --restart=always --name rmqnamesrv -p 9876:9876 -v /home/rocketmq/data/namesrv/logs:/root/logs -v /home/rocketmq/data/namesrv/store:/root/store -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq sh mqnamesrv
参数 描述 -d 以守护进程的方式启动 –restart=always docker 重启时候容器自动重启 –name rmqnamesrv 容器名字设置为 rmqnamesrv -p 9876:9876 容器内的端口9876挂载到宿主机9876端口上 -v /home/rocketmq/data/namesrv/logs:/root/logs 日志目录挂载 -v /home/rocketmq/data/namesrv/store:/root/store 数据目录挂载 -e “MAX_POSSIBLE_HEAP=100000000” 设置容器的最大堆内存为100000000 rocketmqinc/rocketmq 使用的镜像名称 sh mqnamesrv 启动namesrv服务 -
查看当前运行容器:
docker ps
启动 Broker 服务
-
创建 Broker 数据存储路径:
mkdir -p /home/rocketmq/data/broker/logs /home/rocketmq/data/broker/store
-
创建 conf 配置文件目录:
mkdir /home/rocketmq/conf
-
在配置文件目录下创建 broker.conf 配置文件:
vim /home/rocketmq/conf/broker.conf
添加以下内容:
# 所属集群名称,如果节点较多可以配置多个 brokerClusterName = DefaultCluster #broker名称,master和slave使用相同的名称,表明他们的主从关系 brokerName = broker-a #0表示Master,大于0表示不同的slave brokerId = 0 #表示几点做消息删除动作,默认是凌晨4点 deleteWhen = 04 #在磁盘上保留消息的时长,单位是小时 fileReservedTime = 48 #有三个值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和异步表示Master和Slave之间同步数据的机制; brokerRole = ASYNC_MASTER #刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后才返回成功状态,ASYNC_FLUSH不需要; flushDiskType = ASYNC_FLUSH # 设置broker节点所在服务器的ip地址 brokerIP1 = 43.143.180.242 #服务器公网ip #是否允许自动创建topic autoCreateTopicEnable=true
-
启动容器:
docker run -d --restart=always --name rmqbroker --link rmqnamesrv:namesrv -p 10911:10911 -p 10909:10909 -v /home/rocketmq/data/broker/logs:/root/logs -v /home/rocketmq/data/broker/store:/root/store -v /home/rocketmq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf --privileged=true -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf
参数 描述 -d 以守护进程的方式启动 –restart=always docker 重启时候容器自动重启 –name rmqbroker 容器的名字设置为 rmqbroker –link rmqnamesrv:namesrv 需要和名为 rmqnamesrv 的容器进行连接,别名为 namesrv -p 10911:10911 把容器的10911端口挂载到宿主机10911端口 -p 10909:10909 把容器的10909端口挂载到宿主机10909端口 -v /home/rocketmq/data/broker/logs:/root/logs 日志目录挂载 -v /home/rocketmq/data/broker/store:/root/store 数据目录挂载 -v /home/rocketmq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf 配置文件挂载 –privileged=true 开启特权 -e “NAMESRV_ADDR=namesrv:9876” 指定 nameserver 的地址,这里直接使用容器名(别名)代替容器 ip -e “MAX_POSSIBLE_HEAP=200000000” 指定 broker 服务的最大堆内存 rocketmqinc/rocketmq 使用的镜像名称 sh mqbroker -c /opt/docker/rocketmq/broker.conf 指定配置文件启动broker节点
启动控制台
-
启动控制台容器:
docker run -d --name rmqadmin -e "JAVA_OPTS=-Drocketmq.namesrv.addr=公网:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false -Duser.timezone='Asia/Shanghai'" -v /etc/localtime:/etc/localtime -p 9999:8080 styletang/rocketmq-console-ng
-
查看镜像:
-
浏览器访问:http://公网ip:9999/
-
Docker 安装 RocketMQ 完成。若不能正常访问,请放行服务器端口。