RabbitMQ之单机多实例部署

news2024/11/15 3:49:35

单机版安装前面介绍过了,不再介绍。

此处在单机版基础上 ,也就是一台Linux虚拟机上启动多个RabbitMQ实例,部署集群。 

1、在单个Linux虚拟机上运行多个RabbitMQ实例:

  • 多个RabbitMQ使用的端口号不能冲突
  • 多个RabbitMQ使用的磁盘存储路径不能冲突
  • 多个RabbitMQ的配置文件也不能冲突

        在单个Linux虚拟机上运行多个RabbitMQ实例,涉及到RabbitMQ虚拟主机的名称不能重复,每个RabbitMQ使用的端口不能重复。

        RABBITMQ_NODE_PORT 用于设置RabbitMQ的服务发现,对外发布的其他端口在这个端口基础上计算得来。

端口号说明
4369epmd,RabbitMQ节点和CLI工具使用的对等发现服务
5672、5671分别为不带TLS和带TLS的AMQP 0-9-1和1.0客户端使用
25672用于节点间和CLI工具通信(Erlang分发服务器端口),并从动态范围分配(默认情况下限制为单个端口,计算为AMQP端口+ 20000)。一般这些端口不应暴露出去。
35672-35682由CLI工具(Erlang分发客户端端口)用于与节点进行通信,并从动态范围(计算为服务器分发端口+ 10000通过服务器分发端口+ 10010)分配。
15672HTTP API客户端,管理UI和Rabbitmqadmin(仅在启用了管理插件的情况下)
61613、61614不带TLS和带TLS的STOMP客户端(仅在启用STOMP插件的情况下)
1883、8883如果启用了MQTT插件,则不带TLS和具有TLS的MQTT客户端
15674STOMP-over-WebSockets客户端(仅在启用了Web STOMP插件的情况下)
15675MQTT-over-WebSockets客户端(仅在启用Web MQTT插件的情况下)
15692Prometheus指标(仅在启用Prometheus插件的情况下)

        RABBITMQ_NODENAME 用于设置RabbitMQ节点名称@ 前缀是用户名@ 后缀是RabbitMQ所在的Linux主机的hostname 。

数据存储目录:

日志数据存储目录: 

RabbitMQ使用的环境变量: 

参数说明
RABBITMQ_NODE_IP_ADDRESS将RabbitMQ绑定到一个网络接口。 如果要绑定多个网络接口,可以在配置文件中配置。 默认值:空字串。表示绑定到所有的网络接口。
RABBITMQ_NODE_PORT默认值:5672
RABBITMQ_DIST_PORTRabbitMQ节点之间通信以及节点和CLI工具通信用到的端口。 如果在配置文件中配置了kernel.inet_dist_listen_min 或者kernel.inet_dist_listen_max,则忽略该配置。 默认值:
$RABBITMQ_NODE_PORT + 20000
ERL_EPMD_ADDRESSepmd 使用的网络接口, epmd 用于节点之间以及节点和CLI之间的通信。 默认值:所有网络接口,包括和IPv4。
ERL_EPMD_PORTepmd 使用的端口。 默认值:4369。
RABBITMQ_DISTRIBUTION_BUFFER_SIZE节点之间通信连接使用的发送数据缓冲区大小限制, 单位是KB。推荐使用小于64MB的值。 默认值:128000。
RABBITMQ_IO_THREAD_POOL_SIZEErlang运行时的I/O 用到的线程数。不推荐小于32的值。 默认值:128(Linux),64(Windows)。
RABBITMQ_NODENAMERabbitMQ的节点名称。对于Erlang节点和机器,此名称应该唯一。 通过设置此值,可以在一台机器上多个RabbitMQ节点。 默认值:rabbit@$HOSTNAME(Unix-like),rabbit@%COMPUTERNAME%(Windows)。
RABBITMQ_CONFIG_FILERabbitMQ主要配置文件的路径。例如 /etc/rabbitmq/rabbitmq.conf或
者 /data/configuration/rabbitmq.conf是新格式的配置文件。 如果是老格式的配置文件,扩展名是 .config或者不写。 默认值: 对于Unix: $RABBITMQ_HOME/etc/rabbitmq/rabbitmq Debian: /etc/rabbitmq/rabbitmq RPM: /etc/rabbitmq/rabbitmq MacOS(Homebrew):
${install_prefix}/etc/rabbitmq/rabbitmq, Homebrew的前缀通常是: /usr/local/ Windo%APPDATA%\RabbitMQ\rabbitmq
RABBITMQ_ADVANCED_CONFIG_FILERabbitMQ带 .config的高级配置文件路径(基于Erlang配置)。例如, /data/rabbitmq/advanced.config。 
默认值: 
Unix: $RABBITMQ_HOME/etc/rabbitmq/advanced 
Debian: /etc/rabbitmq/advanced 
RPM: /etc/rabbitmq/advanced 
MacOS(Homebrew): ${install_prefix}/etc/rabbitmq/advanced, 其中Homebrew前缀通常是 /etc/local/ 
Windows: %APPDATA%\RabbitMQ\advanced。
RABBITMQ_CONF_ENV_FILE包含了环境变量定义的文件的目录(不使用 RABBITMQ_前缀)。 Windows上的文件名称与其他操作系同。 默认值: UNIX: $RABBITMQ_HOME/etc/rabbitmq/rabbitmq-env.conf Ubuntu和Debian: /etc/rabbitmq/rabbitmq-env.conf RPM: /etc/rabbitmq/rabbitmq-env.conf Mac (Homebrew): ${install_prefix}/etc/rabbitmq/rabbitmq-env.conf,Homebrew的前缀一般是 /usr/local Windows: %APPDATA%\RabbitMQ\rabbitmq-env-conf.bat
RABBITMQ_MNESIA_BASE包含了RabbitMQ服务器的节点数据库、消息存储以及 集群状态文件子目录的根目录。除非显式设置了RABBITMQ_MNESIA_DIR的值。需要确保RabbitMQ用户 在该目录拥有读、写和创建文件以及子目录的该变量一般不要覆盖。一般覆盖 RABBITMQ_MNESIA_DIR变量。 默认值: Unix:
$RABBITMQ_HOME/var/lib/rabbitmq/mnesia Ubuntu和Debian: /var/lib/rabbitmq/mnesia/RPM: /var/lib/rabbitmq/plugins MacOS(Homebrew):
${install_prefix}/var/lib/rabbitmq/mnesia, 其中Homebrew的前缀一般是 /usr/local Windows: %APPDATA%\RabbitMQ
RABBITMQ_MNESIA_DIRRabbitMQ节点存储数据的目录。该目录中包含了数据库、 消息存储、集群成员信息以及节点其他的持状态。 默认值: 通用UNIX包: $RABBITMQ_MNESIA_BASE/$RABBITMQ_NODENAME Ubuntu和Debia$RABBITMQ_MNESIA_BASE/$RABBITMQ_NODENAME RPM: $RABBITMQ_MNESIA_BASE/$RABBITMQ_NO MacOS (Homebrew): ${install_prefix}/var/lib/rabbitmq/mnesia/$RABBITMQ_NODENAME, Homebrew的前缀一般是 /usr/local Windows: %APPDATA%\RabbitMQ\$RABBITMQ_NODENAME
RABBITMQ_PLUGINS_DIR存放插件压缩文件的目录。RabbitMQ从此目录解压插件。 跟PATH变量语法类似,多个路径之间使用统的分隔符分隔 (Unix是 :,Windows是';')。插件可以安装到该变量指定的任何目录。 路径不要有符。 默认值: 通用UNIX包: $RABBITMQ_HOME/plugins Ubuntu和Debian
包: /var/lib/rabbitmq/plugins RPM: /var/lib/rabbitmq/plugins MacOS (Homebrew):${install_prefix}/Cellar/rabbitmq/${version}/plugins, Homebrew的前缀一般是 /usr/l Windows: %RABBITMQ_HOME%\plugins
RABBITMQ_PLUGINS_EXPAND_DIR节点解压插件的目录,并将该目录添加到代码路径。该路径不要包含特殊字符。 默认值: UNIX:
$RABBITMQ_MNESIA_BASE/$RABBITMQ_NODENAME-plugins-expand Ubuntu和Debian packages:$RABBITMQ_MNESIA_BASE/$RABBITMQ_NODENAME-plugins-expand RPM:
$RABBITMQ_MNESIA_BASE/$RABBITMQ_NODENAME-plugins-expand MacOS (Homebrew):
${install_prefix}/var/lib/rabbitmq/mnesia/$RABBITMQ_NODENAME-plugins-expand Window%APPDATA%\RabbitMQ\$RABBITMQ_NODENAME-plugins-expand
RABBITMQ_USE_LONGNAME当设置为 true的时候,RabbitMQ会使用全限定主机名标记节点。 在使用全限定域名的环境中使用。重置节点, 不能在全限定主机名和短名之间切换。 默认值: false。
RABBITMQ_SERVER_CODE_PATH当启用运行时的时候指定的外部代码路径(目录)。 当节点启动的时候,这个是值传给 erl的命令行默认值:(none)
RABBITMQ_CTL_ERL_ARGS当调用rabbitmqctl 的时候传给erl 的命令行参数。 可以给Erlang设置使用端口的范围: -kernel inet_dist_listen_min 35672 -kernel inet_dist_listen_max 35680 默认值:(none)
RABBITMQ_SERVER_ERL_ARGS当调用RabbitMQ服务器的时候 erl的标准命令行参数。 仅用于测试目的。使用该环境变量会覆盖默认默认值: Unix*: +P 1048576 +t 5000000 + stbt db +zdbbl 128000 Windows:没有
RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS调用RabbitMQ服务器的时候传递给 erl命令的额外参数。 该变量指定的变量追加到默认参数列表( RABBITMQ_SERVER_ERL_ARGS)。 默认值: Unix*: 没有 Windows: 没有
RABBITMQ_SERVER_START_ARGS调用RabbitMQ服务器的时候传给 erl命令的额外参数。该变量不覆盖 RABBITMQ_SERVER_ERL_ARGS默认值:没有
RABBITMQ_ENABLED_PLUGINS_FILE用于指定 enabled_plugins文件所在的位置。默认: /etc/rabbitmq/enabled_plugins

方式一:

export RABBITMQ_NODE_PORT=5672
export RABBITMQ_NODENAME=rabbit2
rabbitmq-server

export RABBITMQ_NODE_PORT=5673
export RABBITMQ_NODENAME=rabbit3
rabbitmq-server

export RABBITMQ_NODE_PORT=5674
export RABBITMQ_NODENAME=rabbit4
rabbitmq-server

方式二:

RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit2 rabbitmq-server
RABBITMQ_NODE_PORT=5673 RABBITMQ_NODENAME=rabbit3 rabbitmq-server
RABBITMQ_NODE_PORT=5674 RABBITMQ_NODENAME=rabbit4 rabbitmq-server

以上命令的运行都在Linux命令行中运行。

2、启动web控制台的管理插件

rabbitmq-plugins enable rabbitmq_management

        rabbitmq从3.3.0开始禁止使用guest/guest权限通过除localhost外的访问。如果想使用guest/guest通过远程机器访问,需要在rabbitmq配置文件中设置loopback_users为[],当然也可以按我之前讲的命令自己创建用户。

vim /etc/rabbitmq/rabbitmq.conf

需要注意的是,如果要使用自定义位置的配置文件,需要目录属于rabbitmq 组。 

默认配置文件的位置:/etc/rabbitmq/rabbitmq.conf

我们在/opt/rabbitconf中创建三个配置文件:

        rabbit1.conf,rabbit2.conf,rabbit3.conf,其中注明三个RabbitMQ实例使用的rabbitmq_management插件使用的端口号,以及开通guest远程登录系统的权限:

文件路径内容
/opt/rabbitmqconf/rabbit1.confloopback_users.guest=false
management.tcp.port=6001
/opt/rabbitmqconf/rabbit2.confloopback_users.guest=false
management.tcp.port=6002
/opt/rabbitmqconf/rabbit2.confloopback_users.guest=false
management.tcp.port=6003

启动命令:

节点名称命令
rabbit1RABBITMQ_NODENAME=rabbit1 RABBITMQ_NODE_PORT=5001
RABBITMQ_CONFIG_FILE=/opt/rabbitconf/rabbit1.conf rabbitmq-server
rabbit2RABBITMQ_NODENAME=rabbit2 RABBITMQ_NODE_PORT=5002
RABBITMQ_CONFIG_FILE=/opt/rabbitconf/rabbit2.conf rabbitmq-server
rabbit3RABBITMQ_NODENAME=rabbit3 RABBITMQ_NODE_PORT=5003
RABBITMQ_CONFIG_FILE=/opt/rabbitconf/rabbit3.conf rabbitmq-server

停止命令:

节点名称命令
rabbit1rabbitmqctl -n rabbit1 stop
rabbit2rabbitmqctl -n rabbit2 stop
rabbit3rabbitmqctl -n rabbit3 stop

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/57477.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

李宏毅《DLHLP》学习笔记6 - 语言模型

视频链接:https://www.youtube.com/watch?vdymfkWtVUdo&listPLJV_el3uVTsO07RpBYFsXg-bN5Lu0nhdG&index8&ab_channelHung-yiLee 课件链接:https://speech.ee.ntu.edu.tw/~tlkagk/courses/DLHLP20/ASR3.pdf 1. Language Model LM的作用是预…

嵌入式Linux 开发经验:注册一个 misc 设备

前言 之前买过好几本Linux 设备驱动的书,不过对设备驱动一知半解,什么叫设备,什么又叫驱动?最近工作需要,从源码级别深入的研究了一下 Linux 下的设备与驱动的概念,略有所收获 一般提起驱动开发&#xff0…

[附源码]Python计算机毕业设计Django基于Java的图书购物商城

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

visual stduio code 配置高效舒适web生产环境

与webstrom 之前写了一篇webstorm的配置,参考同学的建议,vscode可能使用的人更多,所以配置了一个vs来试用看看。 一直用不习惯的是全文搜索,还是更喜欢webstrom弹窗式的,还可以显示上下文。包括其他的配置&#xff0…

第二证券|小鹏持续萎靡,理想蔚来逆势反弹破月销记录

12月1日,多家造车新势力先后公布11月销量数据。跟着“银十”出售旺季热度淡去,新势力品牌销量也受轿车零售商场逐渐冷却影响出现整体下滑。接连稳居榜首的埃安、哪吒等品牌均出现4位数以上环比销量下滑。上月商场体现低迷的抱负与蔚来则逆势添加&#xf…

TensorFlow之文本分类算法-6

1 前言 2 收集数据 3 探索数据 4 选择模型 5 准备数据 6 模型-构建训练评估 构建输出层 构建n-gram模型 构建序列模型 GloVe(英文全称是Global Vectors for Word Representation)是一个全球化的英语语境的单词表示的向量集,其使用非…

新变化新营销 这些知识点你得 Get!(文末有 PPT 福利首次放送)

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 在刚刚结束的第 7 期火山引擎数智平台 VeDI「增长课堂」上,火山引擎数智平台 VeDI 零售行业解决方案、汽车行业解决方案团队,以及慢慢买平台…

LM2903VQPWRQ1比较器 LM73C0QDDCRQ1传感器的中文资料

1、LM2903-Q1双路差分比较器包含两个独立的电压比较器,这些比较器可在宽电压范围内由单电源供电运行。如果两个电源之间的电压差在2V至36V且VCC比输入共模电压至少高1.5V以上,那么它们也可以由双电源供电运行。电流消耗不受电源电压的影响。可将输出连接…

一文带你深入理解【Java基础】· Java集合(下)

写在前面 Hello大家好, 我是【麟-小白】,一位软件工程专业的学生,喜好计算机知识。希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正&#xff0…

Pikachu靶场全关攻略(超详细!)

一、靶场搭建 准备工具 phpstudy**pikachu靶场下载地址:**https://github.com/zhuifengshaonianhanlu/pikachu 搭建过程 将靶场文件夹放到phpstudy的www目录 进入pikach文件夹的inc目录,修改靶场配置文件config.inc.php,设置数据库账号密…

Ubuntu 安装 Zotero, 并导入原有数据库,然后同步账户

文章目录写在前面一、下载 Linux 下的 Zotero二、安装Zotero三、导入自己的数据库三、同步账户参考链接写在前面 发文时间:2022.12.03 自己的系统是Ubuntu20.04.5,Zotero 是 Zotero-6.0.18_linux-x86_64.tar.bz2 一、下载 Linux 下的 Zotero 直接登录…

魔兽世界开服教程——魔兽世界服务器架设全攻略---战网+Ladder排行版

需要用到的软件: 1. WAMP5 v1.7.exe (这个是为排行榜提供数据库服务,为Mysql数据库) 2.PvPGN-1.8.2-0-Win32-MySQL-5.0.45-BIN.zip PvPGN-1.8.2-0-Win32-SQLite-3.5.1-BIN.zip (这三个是战网主文件) pvpgn-…

使用dos命令符操作,感光屏绘图,ccd摄像头采集图像,并按程序进行机械加工的计算机

使用dos命令符操作,感光屏绘图,ccd摄像头采集图像,并按程序进行机械加工的计算机 使用dos命令符操作,感光屏绘图,ccd摄像头采集图像,并按程序进行机械加工的计算机是一种可以按照dos命令符复制磁带程序&…

yolov1算法思想流程简单讲解概述————(究极简单的讲述和理解)

在我想学习算法的时候,我看某些大佬特别喜欢上来就讲论文,给我搞的贼难受,毕竟本人太辣鸡了,上来这么搞看不懂,经过诸多算法的这样折磨。我打算根据自己的亲身经历和学习过程中遇到的问题出一期,先讲算法整…

智能优化算法(源码)—蜣螂优化算法(Dung beetle optimizer,DBO)

获取更多资讯,赶快关注上面的公众号吧! 文章目录启发数学模型滚球跳舞繁殖觅食偷窃伪代码2022年11月27日,东华大学沈波教授团队,继麻雀搜索算法之后,又提出了一种全新的群体智能优化算法——蜣螂优化(Dung …

功率信号源在超声波及智能骨料损伤监测中的应用

实验名称:超声波及智能骨料损伤监测原理 研究方向:无损检测、损伤定位 实验原理:换能器所产生的高频信号在介质中传播遇到裂缝、空洞等缺陷产生反射、折射、绕射等现象到达接收端时大量衰减,声学参量发生一定的变化,基…

ABAP学习笔记之——第七章:ABAP数据字典

一、数据字典 在 ABAP 程序里使用的所有对象 (表、视图、结构体、类型等)统称为 ABAP 数据字典。这些对象的信息叫 Metadata 或者 Data Definition,另外,ABAP 数据字典有定义和管理数据结构,集中管理系统中使用的对象的功能。 数据字典类型&…

Spring框架(五):SpringAop底层原理和注解配置

SpringAop底层原理和注解配置引子Aop简介利用Aop原理实现一个Demo(代理模式)Aop的xml方式实现Aop的注解方式实现总结引子 痛定思痛,主要问题出现在自己雀氏不熟悉框架底层、一些面试题,以及sql的一些情况淡忘了。 本章节的开始是…

[附源码]计算机毕业设计学生疫情防控信息填报系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【信号去噪】基于变分贝叶斯卡尔曼滤波器实现信号滤波附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …