首页 > 其他分享 >RocketMQ服务端部署

RocketMQ服务端部署

时间:2024-01-17 16:23:30浏览次数:24  
标签:bin 部署 Broker rocketmq 服务端 RocketMQ Proxy

系统环境

Java:openjdk version "1.8.0_392"
操作系统: 腾讯云 Ubuntu 20.04镜像
RocketMQ:rocketmq-5.1.4

下载RocketMQ

官网下载入口,见“下载安装”部分
GitHub仓库下载
Ubuntu镜像下载:

# Download release from the Apache mirror
$ wget https://dist.apache.org/repos/dist/release/rocketmq/5.1.4/rocketmq-all-5.1.4-bin-release.zip

部署

安装

将下载好的rocketmq存放到指定的工作目录,本文工作目录为/opt,执行命令如下:

mv rocketmq-all-5.1.4-bin-release.zip /opt

进入工作目录,并解压安装rocketmq,命令如下:

#进入安装目录
cd /opt
#解压安装包
unzip rocketmq-all-5.1.4-bin-release.zip

组件说明

rocketmq-5.x版本包含NameServer、Broker、Proxy三个组件

  • NameServer:注册中心,负责维护Broker的注册信息,并提供Broker查找服务。Producer和Consumer在发送和接收消息之前,都需要先向NameServer获取Broker的地址信息。
  • Broker:RocketMQ的消息服务器,负责消息的存储、接收和发送。
  • Proxy: 代理组件,可以为RocketMQ集群提供负载均衡、流量控制、限流等功能。5.x之前的版本不提供,非必须部署。

部署方式

rocketmq-5.x新增了Proxy组件,根据Proxy组件的方式可以分为Local模式部署和Cluster模式部署。
Local模式部署:本地部署,Broker 和 Proxy 是同进程部署,只是在原有 Broker 的配置基础上新增 Proxy 的简易配置就可以运行。
Cluster模式部署:独立部署,Broker 和 Proxy 分别部署,即在原有的集群基础上,额外再部署 Proxy 即可。

Local模式部署

Proxy本身无状态,因此主要的集群配置仍然以 Broker 为基础进行即可。

启动NameServer

进入bin目录,并执行启动命令

#进入目录
cd /opt/rocketmq-all-5.1.4-bin-release/bin
#执行启动命令
nohup sh mqnamesrv &

注意:NameServer启动脚本中分配的jvm运行内存为4G,测试环境可根据实际需求做更改,笔者更改效果如下:
runserver.sh

启动Broker+Proxy

配置调整
笔者使用的是云服务器,存在对内和对公两个ip地址,需要在配置中指定Broker注册时使用ip为对公ip;不存在该问题时可忽略这一步。

vim /opt/rocketmq-all-5.1.4-bin-release/conf/broker.conf
#修改brokerIP1属性为对公ip

broker的默认占用内存为8G,可按照实际需求调整,笔者调整如下:
runbroker.sh

执行启动命令
进入bin目录,并执行启动命令

#进入目录
cd /opt/rocketmq-all-5.1.4-bin-release/bin
#执行启动命令,localhost:9876修改为NameServer的注册地址与端口
nohup sh bin/mqbroker -n localhost:9876 --enable-proxy &

Cluster模式部署

  • NameServer: 部署步骤与local模式一致
  • Broker: 除了启动命令,其它部署步骤与local模式中的Broker+proxy一致,命令如下:
### 在机器A,启动第一个Master,例如NameServer的IP为:192.168.1.1
nohup sh bin/mqbroker -n 192.168.1.1:9876 &
  • proxy: 在独立的服务器中下载安装rocketmq-all-5.1.4-bin-release,之后执行如下操作:
#进入工作目录
cd /opt/rocketmq-all-5.1.4-bin-release/bin
###启动Proxy,例如NameServer的IP为:192.168.1.1
$ nohup sh bin/mqproxy -n 192.168.1.1:9876 &

进阶部署方式

由于笔者部署RocketMQ目的是用于熟悉RocketMQ的相关功能,所以本文只描述的单节点部署的方式;除此外还有如下部署方式:

  • 多节点单副本:同时部署多个Master节点,不部署Slave;可以提高可用性,单宕机时当台机器上未消费的消息不可恢复
  • 多节点多副本-异步复制:同时部署多个Master节点,每个Master分别部署一个Slave,主节点的消息采用异步方式批量同步到副本节点;提高了可靠性和吞吐量,但是副本节点消息存在短暂的延时,机器宕机时存在少了消息丢失。
  • 多节点多副本-同步复制:同时部署多个Master节点,每个Master分别部署一个Slave,主节点的消息采用同步方式实时同步到副本节点;提高了可靠性和吞吐量,机器宕机不会存在消息丢失,相较于异步同步性能有损耗。
  • 主备自动切换:在同时部署主备的前提下,当主机宕机时,备机自动切换为主机,增加了可靠性。

具体部署过程参考: 官方部署方式说明

可视化客户端工具使用

RocketMQ Dashboard
官方提供的RocketMQ可视化管理工具
源码下载地址:https://github.com/apache/rocketmq-dashboard
修改appliction.yml配置中的rocketmq.config.namesrvAddrs为nameServer服务地址,可本地项目启动,也可以打包成Jar在服务器部署,系统效果如图:

参考文献

RocketMQ官方说明文档

标签:bin,部署,Broker,rocketmq,服务端,RocketMQ,Proxy
From: https://www.cnblogs.com/zly1015/p/17970188

相关文章

  • hadoop完全分布式安装部署
    简介Hadoop的完全分布式模式是在多台机器上运行Hadoop集群,实现更高的性能和可伸缩性。以下是Hadoop完全分布式模式的简要安装部署。环境准备确保你的环境满足以下要求:•操作系统:CentOS•Java:安装Java8或更高版本•SSH:确保所有节点之间可以通过SSH互相通信安装部署JDK......
  • C# websocket服务端实现
    1、创建一个winform项目2、创建websocket服务端类WebSocket_Service.cs1usingSystem;2usingSystem.Collections.Generic;3usingSystem.ComponentModel;4usingSystem.Linq;5usingSystem.Net;6usingSystem.Net.Sockets;7usingSystem.Security......
  • ceph分布式存储部署(ceph-deploy)
    ceph分布式存储部署(ceph-deploy)ceph学习ceph简介和特性ceph时一个多版本存储系统,它把每一个待管理的数据量切分为一到多个固定带下的对象数据,并以其为原子单元完成数据存取。对象数据的地处存储服务是由多个主机组成的存储集群,该集群也被称为RADOS存储集群即可靠、自动化、分布式......
  • 基于SpringBoot+Vue的校园招聘系统设计实现(源码+lw+部署文档+讲解等)
    (文章目录)前言:heartpulse:博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌:heartpulse:......
  • Jetty 部署项目
    下载PreviousJettyVersions|TheEclipseFoundation部署项目项目打包后直接放到webapps目录下即可配置数据库源在ect/jetty.xml里面新增如下配置,此处以Oracle数据库为例<!--注意放在<Configureid="Server"class="org.eclipse.jetty.server.Server">里面--><N......
  • Unity3D 游戏服务端哪些模块可以做成无状态详解
    Unity3D游戏服务端是指在使用Unity3D引擎开发的游戏中,负责处理与游戏客户端的通信以及游戏逻辑的服务器端。在设计游戏服务端时,有一种常见的设计模式叫做无状态模式。本文将详细介绍Unity3D游戏服务端哪些模块可以做成无状态,并给出技术详解和代码实现。对啦!这里有个游戏开发交流......
  • 可靠消息服务事务(RocketMQ的分布式事务解决方案)
    系统环境Java:openjdkversion“1.8.0_382”rocketmq-all-5.1.4整体机制使用rocketmq的事务消息,分两个阶段保证分布式事务的最终一致性;一阶段:消息生产者(分布式事务发起方)发送半消息(消费者不接收半消息),之后完成本地事务的执行,根据执行结果选择将半消息投递给消费者或撤回半......
  • 如何将python上调试好的whisper部署到微信小程序上
    如何将Python上调试好的Whisper部署到微信小程序上引言随着智能手机的普及和移动互联网的快速发展,微信小程序成为了一个非常热门的应用开发平台。Python作为一门非常流行的编程语言,拥有丰富的第三方库和强大的调试功能。本文将介绍如何将Python上调试好的Whisper部署到微信小程序......
  • 无开发账号部署
    无Apple开发账号订阅真机调试适用于没有开发者账号订阅的情况下,在与xcode项目相同账号的其他移动设备上的项目安装与调试。Xcode中下载自己账号的证书​​项目中配置自己的证书​3.真机无线调试打开“设备与仿真界面”:Windows​->DeviceandSimulators​查看到自己......
  • K8S单机版部署
    安装etcd、kubernetesKubernetes中几乎所有的资源对象(Node、Pod、ReplicationController、Service等)都能通过kubectl工具执行增删改查操作并保存在etcd中持久化存储。因此Kubernetes和etcd密不可分。可在root权限下,输入如下指令安装etcd和kubernetesyuminstall-yetcdkuber......