关注我、精彩文章第一时间推送给你!
公众号.jpg
会用docker之后才发现,这玩意真香哈哈
首先linux下yum、docker全部配置国内源,为了拉取快速。
拉取rocketmq镜像
你可以通过docker search rocketmq查询一下可拉取的镜像
image.png
额,有点多,反正选stars最多的准没错,我们拉取第一个的最新版latest版
docker pull rocketmqinc/rocketmq:latest
安装namesrv
执行下面一条长指令启动容器,注意,长指令不要用我的,修改成你自己的,详解长指令看下面
docker run -d -p 9876:9876 -v /usr/local/docker/rocketmq/data/namesrv/logs:/root/logs -v /usr/local/docker/rocketmq/data/namesrv/store:/root/store --name rmqnamesrv -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq:latest sh mqnamesrv
详解
-d # 后台运行
-p #设置默认端口,这里rocketmq默认9876端口
-v #设置映射本地目录到容器内的目录,这个注意我都是把本地的/usr/local/docker/rocketmq/**映射到容器内的对应目录的,这个可以改成你本地的linux目录,当然也可以和我一样。我理解的就是MQ的数据和日志什么的不能放在容器中啊,因为容器毕竟占用的空间有限,就映射一下放在本地目录中。
安装 broker
安装完namesrv就是安装broker了。
首先需要创建broker.conf配置文件,我的路径是/usr/local/docker/rocketmq/conf/broker.conf
/usr/local/docker/rocketmq/conf/broker.conf
其中填入如下内容,注意最后一项ip改成你的linux的ip
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1 = 192.168.8.128
用broker.conf配置启动容器
docker run -d -p 10911:10911 -p 10909:10909 -v /usr/local/docker/rocketmq/data/broker/logs:/root/logs -v /usr/local/docker/rocketmq/data/broker/store:/root/store -v /usr/local/docker/rocketmq/conf/broker.conf:/opt/rocketmq-latest/conf/broker.conf --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq:latest sh mqbroker -c /opt/rocketmq-latest/conf/broker.conf
注意的地方还是上面需要映射的目录,还有就是linux要开启相应的防火墙端口
安装 rocketmq 控制台
拉取rocketmq控制台的镜像
docker pull pangliang/rocketmq-console-ng
后台启动rocketmq的控制台镜像,映射到18080端口
docker run -d -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.8.128:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 18080:8080 -t pangliang/rocketmq-console-ng
全部启动这3个容器后可通过下面命令查看容器运行状态
docker ps -a
image.png
注意注意:一定要开启防火墙的相应端口
通过看上面的配置需要开启9876、10911、10909、18080四个端口号
firewall-cmd --zone=public --add-port=9876/tcp --permanent #开启9876端口
#10911
#10909
#18080
重新载入防火墙配置
firewall-cmd --reload
检验成果的时候到了
打开浏览器访问192.168.8.128:18080 注意访问你linux的ip和上面rocketmq控制台映射的18080端口
image.png
image.png
到这里突然想只把rocketmq部署在linux上,而控制台跑在本地windows上
解压之后进入rocketmq-externals-master\rocketmq-console 在此目录地址栏cmd执行maven打包命令
mvn clean package -Dmaven.test.skip=true
还是在此目录新建win批处理文件start.bat 内容如下,执行target目录下mvn生成的jar包,在8080端口调用192.168.8.128:9876的rocketmq服务
@echo off
java -jar target/rocketmq-console-ng-1.0.1.jar --server.port=8080 --rocketmq.config.namesrvAddr=192.168.8.128:9876
@pause
双击运行start.bat批处理文件即可。
遇到一个问题记录一下,连接不成功
在linux端发现docker启动容器的时候报了一个警告 WARNING: IPv4 forwarding is disabled. Networking will not work
修改配置文件:
vim /usr/lib/sysctl.d/00-system.conf
追加
net.ipv4.ip_forward=1
接着重启网络
systemctl restart network
将之前的docker容器停掉,删除,重新运行命令启动即可,注意我下面命令针对所有docker容器
docker stop $(docker ps -a -q) #停止所有docker容器
docker rm $(docker ps -a -q) #删除所有
image.png
本地localhost:8080
image.png