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/#/