Docker容器

docker 上部署RocketMQ

本文主要是介绍docker 上部署RocketMQ,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

docker 上部署RocketMQ

RocketMQ 是一个队列模型的消息中间件,具有高性能、高可靠、高实时、分布式特点

MQ好处: 1.应用解耦 2.流量削锋: 请求流量瞬间猛增,可能会把系统压垮。MQ可以将请求缓存起来,分散到很长一段时间去处理。提高系统的稳定性。 3.数据分发

缺点: 1.MQ宕机了,对业务造成影响 2.消息重复消费问题,消息丢失问题,消息的顺序性问题 3.数据一致性问题

具体的描述可参考官网文档:https://rocketmq.apache.org/docs/motivation/

RocketMQ 安装

1、docker 搜索RocketMQ 镜像

docker search rocketmq

 2、拉取rocketmq 镜像,可以根据自己的需要选择不同的镜像包

docker pull rocketmqinc/rocketmq:4.4.0

 

3、创建rocketmq数据存储目录

mkdir -p /docker_data/rocketmq/data/namesrv/logs /docker_data/rocketmq/data/namesrv/store

4、运行RocketMQ

docker run -d -p 9876:9876 --name rmqnamesrv --restart=always -v /docker_data/rocketmq/data/namesrv/logs:/root/logs -v /docker_data/rocketmq/data/namesrv/store:/root/store -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq:4.4.0 sh mqnamesrv

 

Broker 安装

1、创建 broker.conf 配置文件 mkdir -p  /docker_data/rocketmq/conf vi  /docker_data/rocketmq/conf/broker.conf  添加以下配置信息
# 所属集群名称,如果节点较多可以配置多个
brokerClusterName = DefaultCluster 
#broker名称,master和slave使用相同的名称,表明他们的主从关系 
brokerName = broker-a 
#0表示Master,大于0表示不同的
slave 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 
 namesrvAddr = 172.0.0.1:9876
# 设置broker节点所在服务器的ip地址 
brokerIP1 = 192.168.11.129 
#剩余磁盘比例 
diskMaxUsedSpaceRatio=99

2、运行broker

docker run -d -p 10911:10911 -p 10909:10909 --name rmqbroker --restart=always -v /docker_data/rocketmq/data/namesrv/logs:/root/logs -v /docker_data/rocketmq/data/namesrv/store:/root/store -v /docker_data/rocketmq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq:4.4.0 sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf

 

rocketmq-console-ng 安装

1、拉取rocketmq-console-ng 镜像

docker pull styletang/rocketmq-console-n

2、运行rocketmq-console-ng

docker run -d --restart=always --name rmqadmin -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.11.129:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8080:8080 -t styletang/rocketmq-console-ng

 

3、开放防火墙端口

firewall-cmd --permanent --zone=public --add-port=9876/tcp

firewall-cmd --permanent --zone=public --add-port=10911/tcp

4、重载防火墙配置文件

firewall-cmd --reload

在浏览器中访问:http://192.168.11.129:8080/#/

 

 

 

这篇关于docker 上部署RocketMQ的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!