Docker安装RocketMQ
安装步骤
- 在https://hub.docker.com/r/apache/rocketmq上找到需要的RocketMQ版本的镜像。

- 执行命令下载镜像。
shell
docker pull apache/rocketmq- 执行命令,创建一个rocketmq容器并启动。
shell
docker run --name some_rocketmq -d -it -p 9876:9876 -p 10911:10911 -p 10909:10909 -p 10912:10912 -p 8081:8081 apache/rocketmq:tag /bin/bash -c "sh mqnamesrv & sh mqbroker -n 127.0.0.1:9876 & sleep 10;sh mqproxy -n 127.0.0.1:9876"或
shell
docker run --name some_rocketmq -d -it -p 8081:8081 apache/rocketmq:5.1.0 /bin/bash -c "sh mqnamesrv & sh mqbroker -n 127.0.0.1:9876 & sleep 10;sh mqproxy -n 127.0.0.1:9876"- 执行命令进入容器内部。
shell
docket exec -it some_rocketmq /bin/bash- 执行命令启动nameserver服务。
shell
### 首先启动Name Server
$ nohup sh mqnamesrv &
### 验证Name Server 是否启动成功
$ tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...- 执行命令启动broker。broker的服务端口为10911。
shell
$ nohup sh bin/mqbroker -n localhost:9876 -c $ROCKETMQ_HOME/conf/2m-noslave/broker-a.properties --enable-proxy &
### 验证Broker 是否启动成功,例如Broker的IP为:192.168.1.2,且名称为broker-a
$ tail -f ~/logs/rocketmqlogs/broker_default.log
The broker[xxx, 192.169.1.2:10911] boot success...--enable-proxy:表示proxy组件与broker同进程部署。-c:表示broker读取的配置文件。亦可以不配置。
- 如果需要Broker和Proxy分别部署,执行以下命令
shell
### 自定义配置文件
$ nohup sh bin/mqproxy -n 192.168.1.1:9876 -pc /path/to/proxyConfig.json &- 若需要指定配置文件,可以使用
-pc或者--proxyConfigPath进行指定
上面的方法为单节点部署nameserver、broker、proxy,生产可以创建多容器,各个容器单独部署一个组件,各组件的启动命令可以放到创建容器时执行。或是使用dockefile在容器基础上自定义自己的容器。
安装控制台RocketMQ Dashboard
- 执行以下命令拉取镜像
shell
docker pull apacherocketmq/rocketmq-dashboard:1.0.0- 执行以下命令启动容器
shell
docker run -d --name rocketmq-dashboard -e "JAVA_OPTS=-Drocketmq.namesrv.addr=127.0.0.1:9876" -p 8080:8080 -t apacherocketmq/rocketmq-dashboard:1.0.0- 浏览器输入http://ip:8080进入管理控制台。可在控制台维护nameserver地址、topic主题、订阅关系。

RocketMQ容器环境变量
shell
[rocketmq@8f40a73b6cd0 conf]$ export
declare -x HOME="/home/rocketmq"
declare -x HOSTNAME="8f40a73b6cd0"
declare -x LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:"
declare -x OLDPWD="/home/rocketmq/rocketmq-5.1.0"
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
declare -x PWD="/home/rocketmq/rocketmq-5.1.0/conf"
declare -x ROCKETMQ_HOME="/home/rocketmq/rocketmq-5.1.0"
declare -x ROCKETMQ_VERSION="5.1.0"
declare -x SHLVL="1"
declare -x TERM="xterm"RocketMQ容器包含的组件
shell
[rocketmq@8f40a73b6cd0 bin]$ ll
total 148
-rwxr-xr-x 1 rocketmq rocketmq 772 Oct 19 2021 README.md
-rwxr-xr-x 1 rocketmq rocketmq 1654 Jan 10 14:37 cachedog.sh
-rwxr-xr-x 1 rocketmq rocketmq 845 Jan 10 14:37 cleancache.sh
-rwxr-xr-x 1 rocketmq rocketmq 1116 Jan 10 14:37 cleancache.v1.sh
drwxr-xr-x 1 rocketmq rocketmq 4096 Feb 14 14:06 controller
drwxr-xr-x 1 rocketmq rocketmq 4096 Jan 10 14:37 dledger
-rwxr-xr-x 1 rocketmq rocketmq 2523 Jan 10 14:37 export.sh
-rwxr-xr-x 1 rocketmq rocketmq 1474 Feb 14 14:06 mqadmin
-rwxr-xr-x 1 rocketmq rocketmq 1104 Feb 14 14:06 mqadmin.cmd
-rwxr-xr-x 1 rocketmq rocketmq 2276 Feb 14 14:06 mqbroker
-rwxr-xr-x 1 rocketmq rocketmq 1160 Feb 14 14:06 mqbroker.cmd
-rwxr-xr-x 1 rocketmq rocketmq 1373 Oct 19 2021 mqbroker.numanode0
-rwxr-xr-x 1 rocketmq rocketmq 1373 Oct 19 2021 mqbroker.numanode1
-rwxr-xr-x 1 rocketmq rocketmq 1373 Oct 19 2021 mqbroker.numanode2
-rwxr-xr-x 1 rocketmq rocketmq 1373 Oct 19 2021 mqbroker.numanode3
-rwxr-xr-x 1 rocketmq rocketmq 1406 Feb 14 14:06 mqbrokercontainer
-rwxr-xr-x 1 rocketmq rocketmq 1481 Feb 14 14:06 mqcontroller
-rwxr-xr-x 1 rocketmq rocketmq 1177 Feb 14 14:06 mqcontroller.cmd
-rwxr-xr-x 1 rocketmq rocketmq 1472 Feb 14 14:06 mqnamesrv
-rwxr-xr-x 1 rocketmq rocketmq 1165 Feb 14 14:06 mqnamesrv.cmd
-rwxr-xr-x 1 rocketmq rocketmq 1466 Feb 14 14:06 mqproxy
-rwxr-xr-x 1 rocketmq rocketmq 1157 Feb 14 14:06 mqproxy.cmd
-rwxr-xr-x 1 rocketmq rocketmq 3049 Feb 14 14:06 mqshutdown
-rwxr-xr-x 1 rocketmq rocketmq 1596 Feb 14 14:06 mqshutdown.cmd
-rwxr-xr-x 1 rocketmq rocketmq 2222 Jan 10 14:37 os.sh
-rwxr-xr-x 1 rocketmq rocketmq 1148 Oct 19 2021 play.cmd
-rwxr-xr-x 1 rocketmq rocketmq 1008 Jan 10 14:37 play.sh
-rwxr-xr-x 1 rocketmq rocketmq 2235 Feb 14 14:06 runbroker.cmd
-rwxr-xr-x 1 rocketmq rocketmq 5812 Mar 28 06:52 runbroker.sh
-rwxr-xr-x 1 rocketmq rocketmq 1814 Feb 14 14:06 runserver.cmd
-rwxr-xr-x 1 rocketmq rocketmq 5283 Mar 28 06:52 runserver.sh
-rwxr-xr-x 1 rocketmq rocketmq 1156 Jan 10 14:37 setcache.sh
-rwxr-xr-x 1 rocketmq rocketmq 1408 Jan 10 14:37 startfsrv.sh
-rwxr-xr-x 1 rocketmq rocketmq 1543 Jan 10 14:37 tools.cmd
-rwxr-xr-x 1 rocketmq rocketmq 2060 Mar 28 06:53 tools.shRocketMQ配置文件
配置文件目录
shell
[rocketmq@8f40a73b6cd0 conf]$ ll
total 112
drwxr-xr-x 1 rocketmq rocketmq 4096 Oct 19 2021 2m-2s-async
drwxr-xr-x 1 rocketmq rocketmq 4096 Oct 19 2021 2m-2s-sync
drwxr-xr-x 1 rocketmq rocketmq 4096 Jan 10 14:37 2m-noslave
-rw-r--r-- 1 rocketmq rocketmq 949 Mar 21 2022 broker.conf
drwxr-xr-x 1 rocketmq rocketmq 4096 Feb 14 14:06 container
drwxr-xr-x 1 rocketmq rocketmq 4096 Feb 14 14:06 controller
drwxr-xr-x 1 rocketmq rocketmq 4096 Jan 10 14:37 dledger
-rw-r--r-- 1 rocketmq rocketmq 1363 Jan 10 14:37 plain_acl.yml
-rw-r--r-- 1 rocketmq rocketmq 45 Feb 14 14:06 rmq-proxy.json
-rw-r--r-- 1 rocketmq rocketmq 26852 Feb 14 14:06 rmq.broker.logback.xml
-rw-r--r-- 1 rocketmq rocketmq 2875 Feb 14 14:06 rmq.client.logback.xml
-rw-r--r-- 1 rocketmq rocketmq 5009 Feb 14 14:06 rmq.controller.logback.xml
-rw-r--r-- 1 rocketmq rocketmq 5118 Feb 14 14:06 rmq.namesrv.logback.xml
-rw-r--r-- 1 rocketmq rocketmq 18887 Feb 14 14:06 rmq.proxy.logback.xml
-rw-r--r-- 1 rocketmq rocketmq 3791 Feb 14 14:06 rmq.tools.logback.xml
-rw-r--r-- 1 rocketmq rocketmq 834 Jan 10 14:37 tools.ymlbroker配置文件
- 2m-noslave:多节点-单副本-模式
- 2m-2s-async:多节点-多副本-异步复制-模式
- 2m-2s-sync:多节点-多副本-同步复制-模式
配置解析
properties
# broker集群名
brokerClusterName = DefaultCluster
# broker节点名
brokerName = broker-a
# broker节点id,主节点设为0,从节点设为>=1且不重复
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
# broker角色,同时定义复制方式。有ASYNC_MASTER异步主节点、SYNC_MASTER同步主节点,SLAVE从节点
brokerRole = ASYNC_MASTER
# 刷盘机制 ASYNC_FLUSH异步刷盘 SYNC_FLUSH同步刷盘
flushDiskType = ASYNC_FLUSHproxy配置文件
- rmq-proxy.json
配置解析
json
{
"rocketMQClusterName": "DefaultCluster"
}- rocketMQClusterName:在 Cluster模式下,一个 Proxy集群和 Broker集群为一一对应的关系,可以在 Proxy的配置文件
rmq-proxy.json中使用rocketMQClusterName进行配置