Linux/docker安装部署RocketMQ

非容器方式安装

安装RocketMQ

首先安装JDK:

点击进行下载:Java Downloads | Oracle

# 1.进入/data/app目录下解压缩文件到当前目录
tar -zxvf jdk-8u333-linux-x64.tar.gz
 
# 2.编辑文件
vim /etc/profile
 
# 3.文件末尾处添加环境变量
#Java Env
export JAVA_HOME=/data/app/jdk
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
 
# 4.使环境变量生效
source /ect/profile
 
# 5. 查看java版本
java -version

下载RocketMQ

RocketMQ官网:https://rocketmq.apache.org/

shell>wget https://archive.apache.org/dist/rocketmq/4.9.3/rocketmq-all-4.9.3-bin-release.zip
shell>unzip rocketmq-all-4.9.3-bin-release.zip
##然后通过mv 移动目录并改名

配置环境变量

我们需要将刚刚解压的 rocketmq 路径配置到环境变量中

//编辑profile文件
# vim /etc/profile
//将以下代码配置进去,我这里路径是/data/app/rocketmq
//你们只需根据自己实际路径进行替换即可
#RocketMQ
export ROCKETMQ_HOME=/data/app/rocketmq
export PATH=$PATH:$ROCKETMQ_HOME/bin:$PATH
//使刚修改的配置文件生效
# source /etc/profile
//验证刚刚的路径配置是否生效
# echo $ROCKETMQ_HOME
//显示出路径地址代表配置没有问题
/data/rocketmq

运行RocketMQ

修改RocketMQ配置文件

1、RocketMQ Broker 默认配置的 jvm 虚拟机内存大小可能比较大,如果不修改会导致启动不起来,这里我们根据自己的实际需要进行修改。

shell>cd /data/app/rocketmq/bin
shell>vim runserver.sh
修改:
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
添加(如果是多个JAVA环境,可以这样定义使用的JDK):
JAVA_HOME=/data/app/jdk
shell>vim runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
添加(如果是多个JAVA环境,可以这样定义使用的JDK):
JAVA_HOME=/data/app/jdk
linux、基础技术、技术与框架Linux/docker安装部署RocketMQ插图
runserver.sh
linux、基础技术、技术与框架Linux/docker安装部署RocketMQ插图1

根据官网的提示,运行需要开启 Name Server 和 Broker

启动 Name Server

###启动Name Server
[root@rancher bin]# sh mqshutdown namesrv
###后台启动Name Server 
[root@rancher bin]# nohup sh mqnamesrv &
[1] 13004

###删除Name Server进程
[root@rancher bin]# sh mqshutdown namesrv
The mqnamesrv(13022) is running...
Send shutdown request to mqnamesrv(13022) OK
###查看日志
[root@rancher bin]# tail -f ~/logs/rocketmqlogs/namesrv.log

启动 Broker

###启动Broker
[root@rancher bin]# sh mqbroker
###后台启动Broker
[root@rancher bin]# nohup ./mqbroker -n localhost:9876 &
[1] 13303
###删除Broker进程
[root@rancher bin]# sh mqshutdown broke
Useage: mqshutdown broker | namesrv
[1]+  Exit 255                nohup ./mqbroker -n localhost:9876
####查看日志
[root@rancher bin]# tail -f ~/logs/rocketmqlogs/broker.log

Docker安装(服务器内存至少需要2G)

https://www.jianshu.com/p/706588323276

https://juejin.cn/post/7045944869642043422

1. 镜像制作前准备

1.1 clone rocketmq-docker项目的代码

#官方的docker地址
git clone https://github.com/apache/rocketmq-docker.git

2. 构建镜像

这里需要构建的镜像有两个

  • rocketmq-dashboard镜像(web控制台)
  • rocketmq镜像(NameSrv和Broker)

2.1 rocketmq镜像构建

具体版本可以通过下面链接查看

https://archive.apache.org/dist/rocketmq/

cd image-build
#sh build-image.sh RMQ-VERSION BASE-IMAGE
sh build-image.sh 4.9.3 centos

原理:通过版本和BASE-IMAGE(支持centos, alpine)来判断是使用 Dockerfile-centos文件还是Dockerfile-alpine文件来构建镜像。

2.2 rocketmq-dashboard镜像构建

和构建rocketmq镜像一样,我们依葫芦画瓢构建rocketmq-dashboard镜像

题外:在构建rocketmq-dashboard的时候可以修改Dockerfile-centos-dashboard文件的最后一条命令如:ENTRYPOINT [“java”,”${JAVA_OPTS}”, “-jar”, “bin/rocketmq-dashboard.jar”]; 这样构建的镜像可以调节JVM的内存大小.好处

shell>vim Dockerfile-centos-dashboard
linux、基础技术、技术与框架Linux/docker安装部署RocketMQ插图2

本教程并不修改此处!!!!

cd image-build
#sh build-image-dashboard.sh dashboard-VERSION BASE-IMAGE
sh build-image-dashboard.sh 1.0.0 centos

等待镜像构建完成,然后通过docker命令查看,docker images

linux、基础技术、技术与框架Linux/docker安装部署RocketMQ插图3

3. Docker-compose 安装

这里为什么用Docker-compose 安装呢?因为RocketMQ的安装的东西有三个部分:namesrv、broker、rocketmq-dashboard ,用Docker-compose安装起来比较方便。

3.1 环境准备

本地已经有了rocketmq-dashboard镜像和rocketmq镜像

3.2 RockerMQ 单机部署

3.2.1 NameSrv的Docker宿主机环境

主要配置的是日志路径以及存储路径。(挂载路径)

mkdir -p /data/app/rocketmq/namesrv/data/logs
mkdir -p /data/app/rocketmq/namesrv/data/store
3.2.2 Broker的Docker宿主机环境

主要创建日志、数据存储、以及配置存放的挂载路径(注意如果需要挂在logs和store需要先创建好目录)

mkdir -p /data/app/rocketmq/broker/data/logs
mkdir -p /data/app/rocketmq/broker/data/store
mkdir -p /data/app/rocketmq/broker
3.2.3 Broker配置文件创建
vim /data/app/rocketmq/broker/broker.conf

文件内容如下:

brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
 
 
# 主机IP
brokerIP1 = 192.168.8.21

例如:在Docker宿主机通过命令查询到的IP地址为 192.168.8.21 那么这个地方就设置为 192.168.8.21

3.2.4 编写Docker-compose文件

这里编写Docker-compose文件版本使用的3,有的人docker可能版本没这么高

shell> vim docker-compose.yml
version: '3'
services:
  namesrv:
    image: apacherocketmq/rocketmq:4.9.3
    container_name: rocketmq-namesrv
    ports:
      - 9876:9876
    environment:
      - JAVA_OPT_EXT=-server -Xms256m -Xmx256m -Xmn256m
    volumes:
      - /data/app/rocketmq/namesrv/data/logs:/home/rocketmq/logs
    command: sh mqnamesrv
  broker:
    image: apacherocketmq/rocketmq:4.9.3
    container_name: rocketmq-broker
    links:
      - namesrv
    depends_on:
      - namesrv
    ports:
      - 10909:10909
      - 10911:10911
      - 10912:10912
    environment:
      - NAMESRV_ADDR=namesrv:9876
      - JAVA_OPT_EXT=-server -Xms256m -Xmx256m -Xmn128m
    volumes:
     # 先不要考虑这个logs和store挂载,会报错
     # - /data/app/rocketmq/broker/data/logs:/home/rocketmq/logs
     # - /data/app/rocketmq/broker/data/store:/home/rocketmq/store
      - /data/app/rocketmq/broker/broker.conf:/home/rocketmq/conf/broker.conf
    command: ["sh","mqbroker","-c","/home/rocketmq/conf/broker.conf","-n","namesrv:9876","autoCreateTopicEnable=true"]
  dashboard:
    image: apache/rocketmq-dashboard:1.0.0-centos
    container_name: rocketmq-dashboard
    ports:
      - 8080:8080
    links:
      - namesrv
    depends_on:
      - namesrv
    environment:
      - NAMESRV_ADDR=namesrv:9876

运行命令:

docker-compose -f ./docker-compose.yml up

然后查看运行的情况。

linux、基础技术、技术与框架Linux/docker安装部署RocketMQ插图4

然后在本地登录web控制台进行验证

docker集群部署RocketMQ

https://zhuanlan.zhihu.com/p/166204662

https://blog.csdn.net/liuchang19950703/article/details/112446920