Rocketmq 安装部署

这篇具有很好参考价值的文章主要介绍了Rocketmq 安装部署。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、用途

        测试、预发环境有且只有一个rocketmq,用做业务消息队列,正式环境与阿里云的rocketmq互补,用做非特殊业务统一使用的消息队列

二、Dockerfile

        为解决低版本的漏洞问题,通过dockerhub找到了github上的dockerfile源码,自己制作了一个高版本4.9.4版本的镜像(写此文时官方的4.9.4版本镜像也出来了)

rocketmq-docker/Dockerfile-centos at master · apache/rocketmq-docker · GitHub

FROM centos:7
RUN yum install -y java-1.8.0-openjdk-devel.x86_64 unzip gettext nmap-ncat openssl, which gnupg, telnet \
 && yum clean all -y

ARG user=rocketmq
ARG group=rocketmq
ARG uid=3000
ARG gid=3000

RUN groupadd -g ${gid} ${group} \
    && useradd -u ${uid} -g ${gid} -m -s /bin/bash ${user}

ARG version
ENV ROCKETMQ_VERSION 4.9.4
ENV ROCKETMQ_HOME  /home/rocketmq/rocketmq-${ROCKETMQ_VERSION}
WORKDIR  ${ROCKETMQ_HOME}
RUN set -eux; \
    curl -L http://mirrors.ustc.edu.cn/apache/rocketmq/${ROCKETMQ_VERSION}/rocketmq-all-${ROCKETMQ_VERSION}-bin-release.zip -o rocketmq.zip; \
    unzip rocketmq.zip ; \
    mv rocketmq*/* . ; \
    rmdir rocketmq-*  ; \
    rm rocketmq.zip 

COPY scripts/ ${ROCKETMQ_HOME}/bin/
RUN chown -R ${uid}:${gid} ${ROCKETMQ_HOME}
# expose namesrv port
EXPOSE 9876

RUN mv ${ROCKETMQ_HOME}/bin/runserver-customize.sh ${ROCKETMQ_HOME}/bin/runserver.sh \
 && chmod a+x ${ROCKETMQ_HOME}/bin/runserver.sh \
 && chmod a+x ${ROCKETMQ_HOME}/bin/mqnamesrv

# expose broker ports
EXPOSE 10909 10911 10912

# add customized scripts for broker
RUN mv ${ROCKETMQ_HOME}/bin/runbroker-customize.sh ${ROCKETMQ_HOME}/bin/runbroker.sh \
 && chmod a+x ${ROCKETMQ_HOME}/bin/runbroker.sh \
 && chmod a+x ${ROCKETMQ_HOME}/bin/mqbroker

# export Java options
RUN export JAVA_OPT=" -Duser.home=/opt"

# Add ${JAVA_HOME}/lib/ext as java.ext.dirs
RUN sed -i 's/${JAVA_HOME}\/jre\/lib\/ext/${JAVA_HOME}\/jre\/lib\/ext:${JAVA_HOME}\/lib\/ext/' ${ROCKETMQ_HOME}/bin/tools.sh

USER ${user}

WORKDIR ${ROCKETMQ_HOME}/bin

三、运行方式

        rocketmq因为官方制作镜像考虑的安全性较高,运行时需要创建指定uid的用户,参照以下方式创建并运行,有namesrv、broker、dashboard三个组件

#rocketmq安装
rocketmq_install(){
    #定义rocketmq数据目录
    rocketmq_dir=/alidata/app/rocketmq
    #创建用户,与定制容器中uid、gid保持一致
    groupadd -g 3000 rocketmq
    useradd -u 3000 -g rocketmq -M -s /sbin/nologin rocketmq
    #创建目录
    mkdir -p $rocketmq_dir/{broker/logs,broker/store,config,namesrv/store,namesrv/logs,dashboard}    
    #授权
    chown -R rocketmq:rocketmq $rocketmq_dir
    cat > $rocketmq_dir/config/broker.conf  << EOF
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1 = $IP
listenPort=10911
brokerId=0
autoCreateTopicEnable=true
mapedFileSizeConsumeQueue=300000
diskMaxUsedSpaceRatio=90

EOF

    mkdir -p $scripts_dir/rockmq
    cd $scripts_dir/rockmq
    cat > rmqbroker.sh  << EOF
docker rm -f rmqbroker
docker run -d -p 10911:10911 -p 10909:10909  \\
--restart always \\
-v $rocketmq_dir/broker/logs:/home/rocketmq/logs \\
-v $rocketmq_dir/config/broker.conf:/home/rocketmq/conf/broker.conf \\
-v $rocketmq_dir/broker/store:/home/rocketmq/store \\
--name rmqbroker  \\
-e "NAMESRV_ADDR=$IP:9876" \\
-e "JAVA_OPT_EXT=-Xmx2048m -Xms2048m -Xmn1024m" \\
-e "MAX_POSSIBLE_HEAP=200000000" \\
swr.cn-east-3.myhuaweicloud.com/syh/rocketmq:4.9.4 \\
sh mqbroker -c /home/rocketmq/conf/broker.conf

EOF
    
    cat > rmqnamesrv.sh  << EOF
docker rm -f rmqnamesrv
docker run -d -p 9876:9876  \\
--restart always   \\
-v $rocketmq_dir/namesrv/logs:/home/rocketmq/logs \\
--name rmqnamesrv  \\
-e "JAVA_OPT_EXT=-Xms512M -Xmx512M -Xmn128m" \\
-e "MAX_POSSIBLE_HEAP=100000000" \\
swr.cn-east-3.myhuaweicloud.com/syh/rocketmq:4.9.4 \\
sh mqnamesrv

EOF

    cat > $rocketmq_dir/dashboard/users.properties << EOF
admin=$rockermq_password,1

EOF

    cat > rocketmq-ng.sh << EOF
docker rm -f rocketmq-dashboard
docker run -d  --name=rocketmq-dashboard  \\
--restart always   \\
-v $rocketmq_dir/dashboard/users.properties:/tmp/rocketmq-console/data/users.properties \\
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=$IP:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false -Drocketmq.config.loginRequired=true" \\
-p 8080:8080 -t \\
swr.cn-east-3.myhuaweicloud.com/syh/rocketmq-dashboard:4.9.4

EOF

    #执行脚本
    sh rmqbroker.sh
    sh rmqnamesrv.sh
    sh rocketmq-ng.sh
    }

四、控制台访问

        dashboard的镜像也是直接拉取的官方镜像,自行改造打了一个tag,同时加上了一个账号密码逻辑,规避控制台无密码漏洞。

        以访问预发环境rocketmq控制台为例,需要在浏览器中输入:http://10.100.10.204:8080/rocketmq安装部署,rocketmq,分布式,html,docker,云计算文章来源地址https://www.toymoban.com/news/detail-544645.html

到了这里,关于Rocketmq 安装部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringCloudAlibaba集成RocketMQ实现分布式事务事例(一)

    业务需求 用户请求订单微服务 order-service 接口删除订单(退货),删除订单时需要调用 account-service的方法给账户增加余额,一个典型的分布式事务问题。 代码实现 事务消息有三种状态: TransactionStatus.CommitTransaction:提交事务消息,消费者可以消费此消息 TransactionStatus.Roll

    2024年02月13日
    浏览(107)
  • 【分布式技术专题】RocketMQ延迟消息实现原理和源码分析

    痛点背景 业务场景 假设有这么一个需求,用户下单后如果30分钟未支付,则该订单需要被关闭。你会怎么做? 之前方案 最简单的做法,可以服务端启动个定时器,隔个几秒扫描数据库中待支付的订单,如果(当前时间-订单创建时间)30分钟,则关闭订单。 方案评估 优点:是实

    2024年02月13日
    浏览(53)
  • 解析RocketMQ:高性能分布式消息队列的原理与应用

    什么是消息队列 消息队列是一种消息传递机制,用于在应用程序和系统之间传递消息,实现解耦和异步通信。它通过将消息发送到一个中间代理(消息队列),然后由消费者从该队列中获取消息并处理。 RocketMQ简介 RocketMQ是阿里巴巴开源的一款高性能分布式消息队列系统。它

    2024年02月14日
    浏览(52)
  • 【送书福利-第七期】《分布式中间件核心原理与RocketMQ最佳实践》

    大家好,我是洲洲,欢迎关注,一个爱听周杰伦的程序员。关注公众号【程序员洲洲】即可获得10G学习资料、面试笔记、大厂独家学习体系路线等…还可以加入技术交流群欢迎大家在CSDN后台私信我! 分布式中间件核心原理与RocketMQ实战技术一本通:实战案例+操作步骤+执行效

    2024年02月08日
    浏览(98)
  • Hadoop分布式安装部署

    VMware Workstation Pro17 CentOS7 Hadoop-3.3.6 jdk1.8.0_391 事先需要在本地电脑安装VMware,再创建虚拟机,并且克隆该虚拟机,使用多台机器配合完成完全的分布式文件系统。本文使用三台虚拟机搭建Hadoop。 Hadoop在安装部署之前,需要对虚拟机进行网络配置,将虚拟机的网络状态由动态修

    2024年01月23日
    浏览(56)
  • 4、Zookeeper分布式安装部署

    1、分布式安装部署 1)集群规划 在hadoop102、hadoop103和hadoop104三个节点上部署Zookeeper。 服务器hadoop102 服务器hadoop103 服务器hadoop104 Zookeeper Zookeeper Zookeeper Zookeeper 2)解压安装 (1)解压Zookeeper安装包到/opt/module/目录下  (2)修改/opt/module/apache-zookeeper-3.5.7-bin名称为zookeeper 3)配

    2024年02月12日
    浏览(51)
  • hadoop伪分布式安装部署

    首先jdk安装完毕 jdk安装文档参考: Linux 环境下安装JDK1.8并配置环境变量_linux安装jdk1.8并配置环境变量_Xi-Yuan的博客-CSDN博客 准备好hadoop的安装包 我的下载地址如下: We Transfer Gratuit. Envoi sécurisé de gros fichiers. 将hadoop包上传到随便一个目录,但是解压缩到/opt/ 目录下 tar -zvxf

    2024年02月08日
    浏览(46)
  • 【Hadoop】安装部署-完全分布式搭建

    Hadoop是一个适合大数据的分布式存储和计算平台。狭义上说Hadoop就是一个框架平台,广义上讲Hadoop代表大数据的一个技术生态圈,包括很多软件框架。而我们的完全分布式,指的是在真实环境下,使⽤多台机器,共同配合,来构建⼀个完整的分布式文件系统。在真实环境中,

    2024年02月07日
    浏览(51)
  • Hadoop3.3伪分布式安装部署

    目录 引言 实验目的及准备 实验步骤 引言 Hadoop生态的搭建有本地模式、伪分布模式、集群模式(3台机器)三种安装模式,本篇文章将详细介绍Hadoop3.3的伪分布安装模式。 实验目的及准备 一、完成Hadoop3.3伪分布安装 二、在Linux中配置jdk1.8环境变量 三、配置主机的免密钥登录

    2024年02月21日
    浏览(47)
  • minio分布式集群安装部署实战详细手册

    Minio是GlusterFS创始人之一Anand Babu Periasamy发布新的开源项目。基于Apache License v2.0开源协议的对象存储项目,采用Golang实现,客户端支Java,Python,Javacript, Golang语言。 其设计的主要目标是作为私有云对象存储的标准方案。主要用于存储海量的图片,视频,文档等。非常适合于存储

    2024年02月12日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包