docker环境下搭建rocketmq集群
rocketmq是一个分布式消息中间件,分布式的意思就是多台机器可以通过网络连接协同工作,因此rocketmq可以运行在多台机器上,以达到超越单机的服务能力。rocketmq的架构图如下所示
我们首先搭建一个最小的rocketmq集群,需要启动一个nameserver和一个broker。
这里我们选择在linux下使用docker来搭建集群,我们需要启动三个容器
首先需要拉取三个镜像
docker pull foxiswho/rocketmq:server-4.5.1
docker pull foxiswho/rocketmq:broker-4.5.1
docker pull apacherocketmq/rocketmq-dashboard
上面两个分别对应nameserver结点和broker结点,这里简单介绍一下,nameserver结点有点像服务注册和发现中心,broker结点就是实际干活的结点,dashboard是一个可视化的监控页面,可以让我们非常方便地监控rocketmq的工作情况。
(31条消息) 使用docker安装RocketMQ_docker rocketmq_皓亮君的博客-CSDN博客
你也可以像上面这篇文章一样拉取一个镜像启动server和broker,但是我没有成功,然后按照下面这篇文章的思路成功了
(31条消息) docker安装启动rocketMQ遇到的坑 broker内网_rmqbroker_陈晓东1024的博客-CSDN博客文章说拉取的镜像是foxiswho/rocketmq,其实不是的,拉取的就是我上面写的两个不同tag的镜像。
接着就是创建并启动三个容器。
首先是server结点
docker run -d -p 9876:9876 --name rmqserver foxiswho/rocketmq:server-4.5.1
如果你没有下载相应镜像的话会自动下载。
然后是broker结点
docker run -d -p 10911:10911 -p 10909:10909\\--name rmqbroker --link rmqserver:namesrv\\-e "NAMESRV_ADDR=namesrv:9876" -e "JAVA_OPTS=-Duser.home=/opt"\\-e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m"\\foxiswho/rocketmq:broker-4.5.1
这里面 -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m" 是设置jvm的参数,根据你的机器性能来决定,具体的参数设置可以参考下面的文章
(31条消息) java虚拟机(JVM)内存设置_java运行内存设置_阿里官方架构师的博客-CSDN博客
最后就是启动可视化程序
docker run -d \\
--restart=always \\
--name rmqadmin \\
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=【替换成你的server结点的ip地址】:9876 \\
-Dcom.rocketmq.sendMessageWithVIPChannel=false" \\
-p 9999:8080 \\
apacherocketmq/rocketmq-dashboard
可以使用 docker ps 看一下容器的运行情况
都启动后可以使用浏览器进入可视化页面查看rocketmq的运行情况。
集群页面有数据就代表容器成功运行啦,大功告成。
最后可以将容器的开启与结束命令都写到一个脚本文件里,这样运行一个脚本就可以启停容器了。