目前对于消息队列来说,Kafka,Rabbitmq,Rocketmq等消息队列是我们在日常工作中常用的,这里最近需要使用到Rocketmq,所以我们使用docker来部署一个Rocketmq的实例。本文我们就来演示下如何使用docker快速部署一个Rocketmq实例。
一、安装docker
首先我们准备一台linux服务器,然后安装docker:
yum install -y docker-io
安装完毕之后,我们把docker启动起来:
service docker start
接着我们就可以在服务器上使用docker了。
二、拉取镜像
这里我们部署Rocketmq的时候一般会涉及到两个镜像,分别是Rocketmq的docker镜像和Rocketmq的dashboard可视化web镜像,所以这里我们直接拉取最新版本即可:
#拉取rocketmq的镜像 docker pull rocketmqinc/rocketmq #拉取rocketmq的可视化web镜像 docker pull styletang/rocketmq-console-ng
拉取完成后如下图:
三、创建服务挂载目录
接着我们就要准备创建rocketmq的docker实例了,在rocketmq中,我们知道他会涉及到两个角色,分别是nameserver和broker,因此我们创建两个对应的文件夹作为后续docker实例的挂载目录。
#创建nameserver的挂载目录 mkdir -p /home/pubserver/rocketmq/nameserver/logs mkdir -p /home/pubserver/rocketmq/nameserver/data #创建broker的挂载目录 mkdir -p /home/pubserver/rocketmq/broker1/conf mkdir -p /home/pubserver/rocketmq/broker1/data mkdir -p /home/pubserver/rocketmq/broker1/logs
创建示例如下:
四、创建broker的配置文件
这里我们的broker需要配置文件,因此我们的broker的conf文件夹下创建一个broker.conf文件:
并且把如下的内容复制进去:
# 所属集群名称 brokerClusterName = test1 #broker名称 brokerName = broker1 #设置brokerId brokerId = 0 #表示几点做消息删除动作,默认是凌晨4点 deleteWhen = 04 #在磁盘上保留消息的时长,单位是小时 fileReservedTime = 48 #有三个值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和异步表示Master和Slave之间同步数据的机制; brokerRole = ASYNC_MASTER #刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后才返回成功状态,ASYNC_FLUSH不需要; flushDiskType = ASYNC_FLUSH # 设置broker节点所在服务器的ip地址 brokerIP1 = 10.206.32.13 # 磁盘使用达到95%之后,生产者再写入消息会报错 CODE: 14 DESC: service not available now, maybe disk full diskMaxUsedSpaceRatio=95
五、启动Rocketmq相关的docker实例
接着我们就可以启动Rocketmq相关的实例了,启动命令如下:
#启动nameserver docker run -d --restart=always --name rq_nameserver -p 9876:9876 -v /home/pubserver/rocketmq/nameserver/logs:/root/logs -v /home/pubserver/rocketmq/nameserver/data:/root/store -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq sh mqnamesrv #启动broker docker run -d --restart=always --name rq_broker1 --link rq_nameserver:namesrv -p 10911:10911 -p 10909:10909 -v /home/pubserver/rocketmq/broker1/logs:/root/logs -v /home/pubserver/rocketmq/broker1/data:/root/store -v /home/pubserver/rocketmq/broker1/conf/broker.conf:/opt/rocketmqinc/rocketmq/conf/broker.conf -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq sh mqbroker -c /opt/rocketmqinc/rocketmq/conf/broker.conf #启动可视化web docker run -d --restart=always --name rq_console -e "JAVA_OPTS=-Drocketmq.namesrv.addr=10.206.32.13:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 9877:8080 styletang/rocketmq-console-ng
这里启动完毕之后,我们就可以在docker里面看到对应的3个实例了:
备注:
1、这里记得把对应的ip修改为自己服务器的ip
六、查看Rocket的dashboard
最后我们登录这个dashboard的9877端口,查看下对应的web界面。
http://${ip}:9877/#/
这里我们可以查看运维信息,集群信息,主题信息,消费者信息,生产者信息,消息等
以上就是使用docker快速启动一个Rocketmq实例的案例。
还没有评论,来说两句吧...