Linux环境下配置RocketMQ

关注我、精彩文章第一时间推送给你!

公众号.jpg

会用docker之后才发现,这玩意真香哈哈

首先linux下yum、docker全部配置国内源,为了拉取快速。

  • 参考这篇文章
    https://www.jianshu.com/p/c717940f9230

拉取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上

  • 直接去https://github.com/apache/rocketmq-externals下载zip压缩包
  • 解压之后进入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

你可能感兴趣的:(Linux环境下配置RocketMQ)