前言

目的

模拟在服务器上运行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

8. 手动部署Jar 包


# linux 部署打包好的jar包
nohup java -jar learn-rocketmq-0.0.1-SNAPSHOT.jar >spring-boot.out &

# 杀掉java进程
netstat  -nlp|grep 9090
kill 进程id

后记

总体就是按部就班的复制、改命令行。对比rocketmq namesrv + broker 的安装运行,支持 docker 镜像运行还是很方便的。现在官方都默认读者有环境变量了,借VMware建立快照的能力,把环境保留下来,以后就不用那么麻烦了。

脚本总览

# Linux centos7 环境
# jdk 安装
# 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

# 看下网络设置
vim /etc/sysconfig/network-scripts/ifcfg-ens33

# 启动 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 

cd /usr/rocketmq-5.0.0/distribution/target/rocketmq-5.0.0/rocketmq-5.0.0/

# 确保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
systemctl start docker
systemctl enable docker

# docker 拉取rocketmq-dashboard镜像
docker pull apacherocketmq/rocketmq-dashboard:latest

# 启动镜像
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

# 其他调试用的docker命令
docker ps
docker kill 容器id
docker ps -a
docker rm 容器id

# 关闭虚拟机防火墙
systemctl status firewalld.service
systemctl stop firewalld.service
systemctl status firewalld.service
systemctl disable firewalld.service

# 关闭主机的内网防火墙 --window

# window 访问 192.168.62.3:8080 成功进入控制台

# 关闭rockemq和rocketmq-dashboard
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 ps -a
docker kill 容器id
docker rm 容器id

# window 看端口占用
netstat -ano |findstr "8081"

# linux 部署打包好的jar包
nohup java -jar learn-rocketmq-0.0.1-SNAPSHOT.jar >spring-boot.out &

# 杀掉java进程
netstat  -nlp|grep 9090
kill 进程id

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐