可以使用Docker Dockerfile快速创建rocketmq镜像,以下方法是针对不熟悉docker使用者
环境:
宿主机:centos7 docker内置系统:cenos7 jdk8 docker4.3
第一步:安装docker
1.centos7安装docker
2.docker安装启动centos7镜像文件
第二步:进入容器安装jdk8
#new-centos为centos7的docker官方镜像
1.启动容器$docker run -itd --name rocketMQ-001 new-centos,然后进入容器:$docker exec -it rocketMQ-001 bash
2.查看可安装jdk版本:$yum -y list java*
3安装jdk$yum -y install java-1.8.0-openjdk*.
4.查看安装是否成功java -version
5.容器的内置centos7不能使用vi命令编辑文件,安装vi命令$yum -y install vim*
第三步:提交自定义rocketmq镜像,以后搭建rocketmq可以重复使用这个镜像
1.先启动容器:$docker run -itd --name rocketMQ-001 -p 6001:10911 new-centos
2.在运行的容器内使用 apt-get update 命令进行更新
3.在完成操作之后,输入 exit 命令来退出这个容
4.此时 ID 为 e218edb10161 的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit 来提交容器副本
3.提交容器:$docker commit e218edb10161 new-centos:rocketMQ
第四步:以之前提交的新镜像new-centos:rocketMQ开始搭建rocketmq容器
#-v /usr/local/software/rocketMQ5/:/usr/local/software/表示将容器内部文件夹/usr/local/software/挂载在宿主机目录/usr/local/software/rocketMQ5/
#-p 19876:9876 -p 10911:10911 -p 10909:10909表示映射宿主机9876、10911、10909这三个端口到宿主机19876、10911、10909
1.创建启动容器:$docker run -itd --name rocketMQ-005 -v /usr/local/software/rocketMQ5/:/usr/local/software/ -p 19876:9876 -p 10911:10911 -p 10909:10909 new-centos:rocketMQ
2.进入容器$docker exec -it rocketMQ-005 bash
3.在压缩包目录下解压压缩包到指定目录下,目录需要提前创建好$tar -zxvf apache-rocketmq.tar.gz -C /usr/local/software/apche-rocketmq
4.建立软连接$ln -s apche-rocketmq rocketmq
5.修改配置文件:$vi /usr/local/software/rocketmq/conf/2m-2s-async/broker-a.properties
6.创建日记保存文件夹:$mkdir -p /usr/local/software/rocketmq/logs
7.$cd /usr/local/software/rocketmq/conf
8.设置日志保存文件路径(日记保存在usr/local/software/rocketmq)$sed -i 's#${user.home}#/usr/local/software/rocketmq#g' *.xml
9.$cd /usr/local/software/rocketmq/bin
10.vi runbroker.sh修改JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn1g" 最大内存为1g
11.vi runserver.sh 修改JAVA_OPT="${JAVA_OPT}使用内存也为1个g
12.在/usr/local/software/rocketmq/bin目录下执行$nohup sh mqnamesrv &
13.回车
14.执行$jps 看到看到刷新显示NamesrvStartup说明启动成功
15.以指定文件启动broker 执行$ nohup sh mqbroker -c /usr/local/software/rocketmq/conf/2m-2s-async/broker-a.properties >/dev/null 2>&1 &
16.$jps 发现有BrokerStartup,说明broker执行成功
17.去查看日记看容器是否正常启动
18.容器内关闭rockermq服务:$sh mqshutdown broker
19.容器内启动rockermq服务 :$sh mqshutdown namesrv
#将broker-a.properties内容修改为
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker 名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#需要部署rocketmq-console项目的机器能够ping通到你部署broker的机器ip
#比方说brokerIP1=106.13.88.XXX是我阿里云的外网ip,如果是内网虚拟机,那直接使用内网虚拟机ip
brokerIP1=106.13.88.XXX
#nameServer 地址,分号分割
namesrvAddr=127.0.0.1:9876
#在发送消息时,自动创建服务器不存在的 topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建 Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 4 点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog 每个文件的大小默认 1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue 每个文件默认存 30W 条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketmq/store
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制 Master
#- SYNC_MASTER 同步双写 Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
第五步:启动rocketmq控制台
1.下载源码包:https://github.com/apache/rocketmq-externals/tree/master/
2.idea导入rocketmq-console工程
3.修改application.properties文件配置
4.启动工程,浏览器访问:localhost:8080
5.看浏览器页面和后台有没有报错