栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

window下单机搭建RabbitMQ多节点集群(超详细)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

window下单机搭建RabbitMQ多节点集群(超详细)

window单机搭建RabbitMQ多节点集群(超详细)
  • 一、前言
  • 二、需求
  • 三、准备工作
  • 四、多节点搭建
    • 1)复制三份RabbitMQ,区分名字
    • 2)新增xxx.config文件(以rabbitmq_server-3.8.4-1 为例)
    • 3)修改 abbitmq-env.bat 文件(以rabbitmq_server-3.8.4-1 为例)
    • 4)修改 rabbitmq-server.bat 文件(以rabbitmq_server-3.8.4-1 为例)
    • 5)启动方式一测试(start 命令)
    • 6)启动方式二测试(-detached 命令)
    • 7) 两种启动方式区别
  • 五、 启动rabbit1、rabbit2、rabbit3
    • 1)分别以后台形式启动三个RabbitMQ服务
  • 六、将 rabbit2,rabbit3 加入集群
    • 1)关闭 rabbit2
    • 2) 将 rabbit2 加入 rabbit1
    • 3) 打开15673管理后台验证
    • 4)查看集群状态
    • 5)各节点状态
  • 七、退出集群
    • 1)将 rabbit2 退出集群
    • 2)打开管理后台
  • 八、bat脚本启动MQ服务
    • 1)脚本代码(窗口运行方式)
    • 2)脚本代码(后台运行方式)
  • 九、总结

一、前言

       在学习过程中,由于某种奇葩原因,电脑装不了linux虚拟机,查阅关于 rabbitmq集群搭建 资料大多都是基于linux系统,window下单机搭建 文章数量较少,搞了好几天总算顺利搭建,希望对大家有帮助

版本说明

  1. RabbitMQ使用版本是3.8.4
  2. Erlang使用版本是 23.0
二、需求

在一台window系统电脑上搭建多节点RabbitMQ集群,节点名称和端口的对应关系为:

 rabbit1		15673
 rabbit2		15674
 rabbit3		15675
三、准备工作
  1. 安装 Erlang
  2. 安装 RabbitMQ
  3. 确保以上2步安装成功,以及mq可以开启并访问到管理页面(具体可查RabbitMQ安装步骤,这里不过多阐述)
四、多节点搭建 1)复制三份RabbitMQ,区分名字

2)新增xxx.config文件(以rabbitmq_server-3.8.4-1 为例)

在 /etc/ 下新增 rabbitmq-node1.config,加入以下配置(三个安装目录下都要新增,端口分别为5673,5674,5675)

[ {
  rabbit,
  [ {
    tcp_listeners,
    [ {"0.0.0.0" ,5673}]
  }]
},{
  rabbitmq_management,
  [ {
    listener,
    [
      {port , 15674},
      {ip , "127.0.0.1"},
      {ssl,false}
    ]
  }]
}].
3)修改 abbitmq-env.bat 文件(以rabbitmq_server-3.8.4-1 为例)

在 abbitmq-env.bat 文件16行加入以下配置(其余两个也要修改)

	//这一行是指定使用我们刚刚 /etc/ 下创建的config文件,不指定会默认使用 C盘下 的配置文件
	set RABBITMQ_CONFIG_FILE=!RABBITMQ_HOME!etcrabbitmq-node1 
	set RABBITMQ_NODENAME=rabbit1

配置截图如下(橙色部分为节点名称,注意不能重复)

4)修改 rabbitmq-server.bat 文件(以rabbitmq_server-3.8.4-1 为例)

在 rabbitmq-server.bat 文件27行加入以下配置(其余两个也要修改)

	set RABBITMQ_NODE_PORT=5673
	set RABBITMQ_DIST_PORT=15673

配置截图如下(橙色部分为端口号,注意不能重复)

5)启动方式一测试(start 命令)

4.1 以管理员身份运行cmd,cd到 rabbitmq_server-3.8.4-1的sbin目录下,执行以下命令(更改配置文件需要执行remove和install使配置生效)

  • rabbitmq-service remove
  • rabbitmq-service install
  • rabbitmq-server start

实例截图如下

4.2 测试访问管理页面(示例端口:15763)
浏览器输入 localhost:15763/#/ ,出现这个管理页面说明配置成功

6)启动方式二测试(-detached 命令)

5.1 以管理员身份运行cmd,cd到 rabbitmq_server-3.8.4-1的sbin目录下,执行以下命令(更改配置文件需要执行remove和install使配置生效)

  • rabbitmq-service remove
  • rabbitmq-service install
  • rabbitmq-server -detached

5.2 测试访问管理页面(示例端口:15763)
浏览器输入 localhost:15763/#/ ,同样可以看到这个页面

7) 两种启动方式区别
  • start :关闭该cmd窗口,服务即关闭
  • -detached :关闭窗口,服务依然在,在任务管理器将 erl.exe 进程关闭即可关闭服务
五、 启动rabbit1、rabbit2、rabbit3 1)分别以后台形式启动三个RabbitMQ服务

方便演示单机集群的搭建,我们将上一步开启的服务全部关掉,分别进入rabbitmq_server-3.8.4-1、rabbitmq_server-3.8.4-2、rabbitmq_server-3.8.4-3 的 sbin 目录,执行命令

  • rabbitmq-server -detached
D:toolsRabbitMQ Serverrabbitmq_server-3.8.4-1sbin>rabbitmq-server -detached	//服务1
D:toolsRabbitMQ Serverrabbitmq_server-3.8.4-2sbin>rabbitmq-server -detached //服务2
D:toolsRabbitMQ Serverrabbitmq_server-3.8.4-3sbin>rabbitmq-server -detached //服务3

浏览器地址栏输入 http://localhost:15673/#/,在管理后台可以看到,rabbit1 已经成功启动了.

浏览器地址栏输入 http://localhost:15674/#/,在管理后台可以看到,rabbit2 已经成功启动了

浏览器地址栏输入 http://localhost:15675/#/,在管理后台可以看到,rabbit3 已经成功启动了

六、将 rabbit2,rabbit3 加入集群 1)关闭 rabbit2
  • 在rabbitmq_server-3.8.4-2的sbin目录下
  • 执行命令 rabbitmqctl stop_app
D:toolsRabbitMQ Serverrabbitmq_server-3.8.4-2sbin>rabbitmqctl stop_app
Stopping rabbit application on node rabbit2@DESKTOP-IB5K0.. ... //成功关闭提示
2) 将 rabbit2 加入 rabbit1
  • 执行命令 rabbitmqctl join_cluster rabbit1
D:toolsRabbitMQ Serverrabbitmq_server-3.8.4-2sbin>rabbitmqctl join_cluster rabbit1
Clustering node rabbit2@DESKTOP-IB5K0.. with rabbit1  //成功提示
3) 打开15673管理后台验证
可以看到 rabbit2 已经加入进来,但未启动


将 rabbit2 启动起来,执行命令 rabbitmqctl start_app

D:toolsRabbitMQ Serverrabbitmq_server-3.8.4-2sbin>rabbitmqctl start_app
Starting node rabbit2@DESKTOP-IB5K0CG ... //成功启动提示

可以看到状态已经更改为绿色

同理,进入rabbitmq_server-3.8.4-3的sbin目录下重复以上步骤将 rabbit3 加入 rabbit1 集群
打开管理后台验证:

4)查看集群状态
  • 在 sbin目录下执行命令
  • rabbitmqctl cluster_status
  • 集群名称为 rabbit1,且有三个节点正在运行

5)各节点状态

七、退出集群 1)将 rabbit2 退出集群
  1. rabbitmq-server -detached (已经启动可以忽略这一步)
  2. rabbitmqctl stop_app (关闭节点)
  3. rabbitmqctl reset

2)打开管理后台

八、bat脚本启动MQ服务

搭建过程每次关闭服务后,都需要重新cd进文件目录,输入一堆命令启动服务,十分繁琐,于是决定使用bat脚本提前写好命令,一键启动RabbitMQ服务

1)脚本代码(窗口运行方式)
@echo off
:获取管理员权限
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
:保持当前目录下运行
cd /d "%~dp0"

@echo. start RabbitMQ...1
@echo off

cmd /k "cd /d D:toolsRabbitMQ Serverrabbitmq_server-3.8.4-1sbin&&rabbitmq-service remove&&rabbitmq-service install&&rabbitmq-server start"

exit
echo "^_^ Close the Window To Stop" & pause > nul
  • 代码截图

  • bat文件

  • 双击bat文件一键启动MQ服务

2)脚本代码(后台运行方式)
@echo off
:获取管理员权限
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
:保持当前目录下运行
cd /d "%~dp0"

@echo. start RabbitMQ...3
@echo off

cmd /k "cd /d D:toolsRabbitMQ Serverrabbitmq_server-3.8.4-1sbin&&rabbitmq-server -detached"

exit
echo "^_^ Close the Window To Stop" & pause > nul
  • 配置三份

九、总结

       至此,普通集群已初步搭建,这种集群可以提高 RabbitMQ 的消息吞吐能力,但是无法保证高可用,因为一旦一个 RabbitMQ 实例挂了,消息就没法访问了,如果消息队列做了持久化,那么等 RabbitMQ 实例恢复后,才可以继续访问;如果消息队列没做持久化,那么消息就丢了。基于这种情况,我们可以将队列设置为镜像队列来解决。后续将会增加镜像队列配置以及通过HAProxy实现高可用性及负载均衡代理,将在下一篇文章发表关于集群的其它配置。

配置过程中有任何问题或者本文有不足之处,欢迎评论区留言!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/941767.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号