文章目录
- 前言
- 目的
- 注意点
- 官网
- 虚拟机
- 1. 环境变量
- 2. 安装并启动rocketmq
- 3. 安装docker
- 4. docker拉取并运行rocketmq-dashboard
- 5. 关闭防火墙
- 6. 宿主机查看控制台
- 7. 关闭虚拟机的进程
- 后记
前言
目的
模拟在服务器上运行RocketMQ,并且有控制台的能力。以后本地window可以边开发边连接虚拟机调试。记录下搭建过程方便以后重建。
- 控制台启动效果
注意点
注意的地方后文都会有对应的脚本
官网
- rocketmq官网
- 官网提供了源码下载地址,需要通过maven编译打包运行项目
- 官网的运行DEMO,需要启动两个 rocketmq 相关的进程 (mqnamesrv、mqbroker)
- 官网介绍rocketmq控制台(rocketmq-dashboard),是基于docker启动的
- 官网的教程是默认读者 Java / maven / docker 环境已经安装好了
虚拟机
- 确保网络环境,建议写死虚拟机的ip地址
- 宿主机关机前,记得把虚拟机的进程停止掉
- VMware 有时候有bug,先挂起再继续运行可能可以解决
- 虚拟机和宿主机的防火墙要么配置好,要么索性都关掉
1. 环境变量
《Linux命令行与shell脚本编程大全》 提出:
- 环境变量不要直接写入
/etc/profile
- 很多发行版的Linux 都内置了
/etc/profile
脚本,我们可以把自己的变量脚本放在/etc/profile.d/xxx.sh
(xxx自己命名)
看了下内置的
/etc/profile
脚本,其实就是遍历几个目录,这个脚本起了个路由的作用,profile.d下的所有脚本都会被加载
这里放一下我的环境变量
MAVEN_HOME=/usr/maven-3.8.7
export PATH=${MAVEN_HOME}/bin:$PATH
export JAVA_HOME=/usr/lib/jvm/java
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar
export PATH=$PATH:$JAVA_HOME/bin
2. 安装并启动rocketmq
官网给的是源码,那就需要解压出来,用maven命令跑起来。
# 官方下载源码文件,解压到指定目录
unzip rocketmq-all-5.0.0-bin-release.zip -d /usr/
# 修改下解压后的文件名
cd /usr/
mv rocketmq-all-5.0.0-bin-release rocketmq-5.0.0
#rocketmq 源码使用maven编译打包成可以执行文件
cd distribution/target/rocketmq-5.0.0/rocketmq-5.0.0
mvn -Prelease-all -DskipTests clean install -U
# 启动 mqnamesrv (rockrtmq的架构组成)
nohup sh /usr/rocketmq-5.0.0/distribution/target/rocketmq-5.0.0/rocketmq-5.0.0/bin/mqnamesrv &
# 看日志确认启动成功
tail -f ~/logs/rocketmqlogs/namesrv.log
# 启动 mqbroker (rockrtmq的架构组成)
nohup sh /usr/rocketmq-5.0.0/distribution/target/rocketmq-5.0.0/rocketmq-5.0.0/bin/mqbroker -n localhost:9876 --enable-proxy &
# 看日志确认启动成功
tail -f ~/logs/rocketmqlogs/broker_default.log
3. 安装docker
# 确保unix 内核版本 > 3.10
uname -r
# docker 的卸载和安装
yum remove docker docker-common docker-selinux docker-engine
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r
# 启动docker
systemctl start docker
systemctl enable docker
- docker 的其他指令
# 其他调试用的docker命令
docker ps
docker kill 容器id
docker ps -a
docker rm 容器id
4. docker拉取并运行rocketmq-dashboard
# 关注ipv4地址,ens33不一定是一样的,指ifconfig 或者ip addr 能看到的对外端口
cat /etc/sysconfig/network-scripts/ifcfg-ens33
# 没有写死的ipv4地址,那就动态看
ifconfig -a
# docker 拉取rocketmq-dashboard镜像
docker pull apacherocketmq/rocketmq-dashboard:lates
# 启动镜像,注意启动参数绑定的host:port 是 mqbroker 上面注册的
docker run -d --name rocketmq-dashboard -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.62.3:9876" -p 8080:8080 -t apacherocketmq/rocketmq-dashboard:latest
5. 关闭防火墙
# 关闭虚拟机防火墙
systemctl status firewalld.service
systemctl stop firewalld.service
systemctl status firewalld.service
systemctl disable firewalld.service
# 同时关闭主机的内网防火墙 --window
6. 宿主机查看控制台
http://192.168.62.3:8080/#/
7. 关闭虚拟机的进程
sh /usr/rocketmq-5.0.0/distribution/target/rocketmq-5.0.0/rocketmq-5.0.0/bin/mqshutdown broker
sh /usr/rocketmq-5.0.0/distribution/target/rocketmq-5.0.0/rocketmq-5.0.0/bin/mqshutdown namesrv
docker kill 容器id
docker rm 容器id
后记
总体就是按部就班的复制、改命令行。对比rocketmq namesrv + broker 的安装运行,支持 docker 镜像运行还是很方便的。现在官方都默认读者有环境变量了,借VMware建立快照的能力,把环境保留下来,以后就不用那么麻烦了。