当前位置: 首页 > news >正文

虚拟机配置RabbitMQ集群教程

RabbitMQ是常用的一款消息中间件,那么如何在我们虚拟机中创建其集群呢?跟着博主这篇文章让你一步到位
本篇搭建的是三台机器为一个集群!假设大家虚拟机都为初始化状态,从0开始(注意集群搭建需要CentOS8以上环境!可以点击官网下载)

1. 配置网络

先对三台机器配各自的网络,具体实例如下图所示(ip根据自己动态调整),最好先操作node01,在步骤3完成后再克隆

在这里插入图片描述

1.1 以node01为例子,创建setup_network.sh脚本文件

注意在bin目录下创建一个可执行文件

vim /bin/setup_network.sh

记得根据自己的网卡调整,我这里用的是第二张网卡ens36,一般是第一个ens33所以根据自己虚拟机情况调整

#!/bin/bash# 检查是否提供了IP地址参数
if [ $# -ne 1 ]; thenecho "Usage: $0 <IP-ADDRESS>"exit 1
fi# 保存传入的IP地址
IPADDR=$1# 删除ens36网络连接
nmcli c del ens36# 编辑网络配置文件
cat > /etc/sysconfig/network-scripts/ifcfg-ens36 << EOF
TYPE=Ethernet
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=$IPADDR  # ip传进来
NETMASK=255.255.255.0
GATEWAY=192.168.187.2
DNS1=114.114.114.114
DNS2=8.8.8.8
EOF# 重启NetworkManager服务
systemctl restart NetworkManager# 启用ens36网络连接
nmcli c up ens36

1.2 运行脚本

#首先修改权限
chmod 777 /bin/setup_network.sh#运行 以第一台机器为例子(第二台.101 第三台.102)
/bin/setup_network.sh 192.168.187.100

2. 安装Erlang环境

RabbitMQ必要的运行环境,在docker中就集成好了依赖,单独安装集群就得重新安装

2.1 创建yum库配置文件

vim /etc/yum.repos.d/rabbitmq.repo

一下配置内容出自官方文档:

https://www.rabbitmq.com/docs/install-rpm

# In /etc/yum.repos.d/rabbitmq.repo##
## Zero dependency Erlang RPM
##[modern-erlang]
name=modern-erlang-el8
# uses a Cloudsmith mirror @ yum.novemberain.com in addition to its Cloudsmith upstream.
# Unlike Cloudsmith, the mirror does not have any traffic quotas
baseurl=https://yum1.novemberain.com/erlang/el/8/$basearchhttps://yum2.novemberain.com/erlang/el/8/$basearchhttps://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/rpm/el/8/$basearch
repo_gpgcheck=1
enabled=1
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md[modern-erlang-noarch]
name=modern-erlang-el8-noarch
# uses a Cloudsmith mirror @ yum.novemberain.com.
# Unlike Cloudsmith, it does not have any traffic quotas
baseurl=https://yum1.novemberain.com/erlang/el/8/noarchhttps://yum2.novemberain.com/erlang/el/8/noarchhttps://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/rpm/el/8/noarch
repo_gpgcheck=1
enabled=1
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.keyhttps://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md[modern-erlang-source]
name=modern-erlang-el8-source
# uses a Cloudsmith mirror @ yum.novemberain.com.
# Unlike Cloudsmith, it does not have any traffic quotas
baseurl=https://yum1.novemberain.com/erlang/el/8/SRPMShttps://yum2.novemberain.com/erlang/el/8/SRPMShttps://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/rpm/el/8/SRPMS
repo_gpgcheck=1
enabled=1
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.keyhttps://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1##
## RabbitMQ Server
##[rabbitmq-el8]
name=rabbitmq-el8
baseurl=https://yum2.novemberain.com/rabbitmq/el/8/$basearchhttps://yum1.novemberain.com/rabbitmq/el/8/$basearchhttps://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/rpm/el/8/$basearch
repo_gpgcheck=1
enabled=1
# Cloudsmith's repository key and RabbitMQ package signing key
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.keyhttps://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md[rabbitmq-el8-noarch]
name=rabbitmq-el8-noarch
baseurl=https://yum2.novemberain.com/rabbitmq/el/8/noarchhttps://yum1.novemberain.com/rabbitmq/el/8/noarchhttps://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/rpm/el/8/noarch
repo_gpgcheck=1
enabled=1
# Cloudsmith's repository key and RabbitMQ package signing key
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.keyhttps://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md[rabbitmq-el8-source]
name=rabbitmq-el8-source
baseurl=https://yum2.novemberain.com/rabbitmq/el/8/SRPMShttps://yum1.novemberain.com/rabbitmq/el/8/SRPMShttps://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/rpm/el/8/SRPMS
repo_gpgcheck=1
enabled=1
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key
gpgcheck=0
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md

2.2 更新yum库

# --nobest表示所需安装包即使不是最佳选择也接受
yum update -y --nobest

2.3 正式安装Erlang

yum install -y erlang

3. 安装RabbitMQ

由于wget下载github老连接不上🙃,这里就采用宿主机下载然后ftp传到虚拟机上
RPM包下载地址:https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.13.0/rabbitmq-server-3.13.0-1.el8.noarch.rpm

这里我放到/opt目录下

3.1 解压

rpm -ivh rabbitmq-server-3.13.0-1.el8.noarch.rpm

3.2 RabbitMQ基础配置

# 启用管理界面插件
rabbitmq-plugins enable rabbitmq_management# 启动 RabbitMQ 服务:
systemctl start rabbitmq-server# 将 RabbitMQ 服务设置为开机自动启动
systemctl enable rabbitmq-server# 新增登录账号密码
rabbitmqctl add_user charles 123456# 设置登录账号权限
rabbitmqctl set_user_tags charles administrator
rabbitmqctl set_permissions -p / charles ".*" ".*" ".*"# 配置所有稳定功能 flag 启用
rabbitmqctl enable_feature_flag all# 重启RabbitMQ服务生效
systemctl restart rabbitmq-server

注意最后要删掉一开始的rpm配置文件,因为需要的东西已经下载完了

rm -rf /etc/yum.repos.d/rabbitmq.repo

其实到这步后直接克隆就可以啦,省去繁琐的下载和配置时间,记得根据操作1换网络ip就好啦

4. 修改主机名字

# node01 、node02 、node03
vim /etc/hostname

5. 集群节点彼此发现

5.1 node01设置

①设置 IP 地址到主机名称的映射

修改文件/etc/hosts,追加如下内容:

192.168.187.100 node01
192.168.187.101 node02
192.168.187.102 node03

②查看当前RabbitMQ节点的Cookie值并记录

[root@node01 ~]# cat /var/lib/rabbitmq/.erlang.cookie 
AEZXBETHCPXIACMJTZCB

③重置节点应用

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app

5.2 node02设置

①设置 IP 地址到主机名称的映射

修改文件/etc/hosts,追加如下内容:

192.168.187.100 node01
192.168.187.101 node02
192.168.187.102 node03

②修改当前RabbitMQ节点的Cookie值

node02和node03都改成和node01一样:

vim /var/lib/rabbitmq/.erlang.cookie

③重置节点应用并加入集群

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@node01
rabbitmqctl start_app

5.3 node03设置

①设置 IP 地址到主机名称的映射

修改文件/etc/hosts,追加如下内容:

192.168.187.100 node01
192.168.187.101 node02
192.168.187.102 node03

②修改当前RabbitMQ节点的Cookie值

node02和node03都改成和node01一样:

vim /var/lib/rabbitmq/.erlang.cookie

③重置节点应用并加入集群

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@node01
rabbitmqctl start_app

④查看集群状态

rabbitmqctl cluster_status

在这里插入图片描述

到这里集群的搭建就完成啦🎉

5.4 常用操作

如有需要踢出某个节点,则按下面操作执行:

# 被踢出的节点:
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app# 节点1
rabbitmqctl forget_cluster_node rabbit@node02

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 长短期记忆网络(LSTM)预测模型及其Python和MATLAB实现
  • 【WiFi】一文了解WiFi中的 SISO/SIMO/MISO/MIMO/SU-MIMO/MU-MIMO/Beamforming
  • 在 Vim 编辑器中,如果某个单词被意外地高亮显示,使用:noh可以取消高亮显示
  • 2024年必备技能:小红书笔记评论自动采集,零基础也能学会的方法
  • 智能音箱的工作原理
  • 火山引擎VeDI数据技术分享:两个步骤,为Parquet降本提效
  • 项目比赛经验分享:如何抓住“黄金一分钟”
  • Android笔试面试题AI答之Activity(6)
  • 18万就能买华为智驾车,你当不了韭菜!
  • Excel基本操作(二)
  • 我当年自学黑客(网络安全)的一些心得!(内附学习笔记)
  • JAVA小白学习日记Day11
  • 研究生选择学习Android开发的利与弊?
  • 短视频矩阵系统搭建教程,源码获取,部署上线指南
  • Windows - C 语言开发环境 llvm-mingw + vscode (零基础超适用)
  • ES学习笔记(12)--Symbol
  • javascript从右向左截取指定位数字符的3种方法
  • js操作时间(持续更新)
  • Just for fun——迅速写完快速排序
  • mongodb--安装和初步使用教程
  • SpiderData 2019年2月16日 DApp数据排行榜
  • Vue官网教程学习过程中值得记录的一些事情
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 关于for循环的简单归纳
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 线上 python http server profile 实践
  • 项目管理碎碎念系列之一:干系人管理
  • 关于Android全面屏虚拟导航栏的适配总结
  • 整理一些计算机基础知识!
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (1)Hilt的基本概念和使用
  • (vue)页面文件上传获取:action地址
  • (补)B+树一些思想
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • .gitattributes 文件
  • .NET CLR基本术语
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .net core 使用js,.net core 使用javascript,在.net core项目中怎么使用javascript
  • .NET 设计模式初探
  • .NetCore项目nginx发布
  • .NET开发不可不知、不可不用的辅助类(一)
  • .NET框架设计—常被忽视的C#设计技巧
  • .NET下的多线程编程—1-线程机制概述
  • ??myeclipse+tomcat
  • @JoinTable会自动删除关联表的数据
  • @KafkaListener注解详解(一)| 常用参数详解
  • @RequestParam详解
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • @四年级家长,这条香港优才计划+华侨生联考捷径,一定要看!
  • [C# 基础知识系列]专题十六:Linq介绍
  • [CTSC2014]企鹅QQ