RabbitMQ集群安装

RabbitMQ集群安装

1.前言

OS: CentOS Linux release 7.9.2009 (Core)

机器:

IPnodecpu内存存储
10.106.1.241max-rabbitmg-018 核16 G100 G
10.106.1.242max-rabbitmg-028 核16 G100 G
10.106.1.243max-rabbitmg-038 核16 G100 G

因为操作系统版本是 centos7,所以RabbitMQ安装版本,选的是最后一个支持RHEL7的版本。

在安装RabbitMQ之前,需要安装Erlang/OTP支持的版本。RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的。

再确定要下载的RabbitMQ的版本号之后,访问网址选择Erlang版本查看匹配对应Erlang的版本号,并进行下载。

本次下载RabbitMQ版本为3.10.0-1对应的Erlang版本为23.3.4.11-1

RabbitMQ: 3.10.0-1

Erlang: 23.3.4.11-1

2.准备

注意,以下操作,分别在3台机器上执行

配置hosts:

cat << \EOF >> /etc/hosts
10.106.1.241 max-rabbitmq-01
10.106.1.242 max-rabbitmq-02
10.106.1.243 max-rabbitmq-03
EOF

查看hosts配置是否正确:

ping max-rabbitmq-01
ping max-rabbitmq-02
ping max-rabbitmq-03

关闭selinux:

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
setenforce 0

关闭防火墙:

systemctl stop firewalld
systemctl disable firewalld

安装存储库:

curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | bash
curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | bash

下载rpm安装包:

wget --content-disposition https://packagecloud.io/rabbitmq/erlang/packages/el/7/erlang-23.3.4.11-1.el7.x86_64.rpm/download.rpm?distro_version_id=205
wget --content-disposition https://packagecloud.io/rabbitmq/rabbitmq-server/packages/el/7/rabbitmq-server-3.10.0-1.el7.noarch.rpm/download.rpm?distro_version_id=205

3.安装

注意,以下操作,分别在3台机器上执行

安装:

yum install -y erlang-23.3.4.11-1.el7.x86_64.rpm
yum install -y rabbitmq-server-3.10.0-1.el7.noarch.rpm

启动服务、并设置开机服务:

systemctl start rabbitmq-server
systemctl enable rabbitmq-server

其它服务命令:

# 启动
systemctl start rabbitmq-server
# 查看状态
systemctl status rabbitmq-server
# 停止
systemctl stop rabbitmq-server stop

4.端口授权

RabbitMQ节点绑定到端口(开放服务器TCP套接字)以接受客户端和CLI工具连接。

其他进程和工具(如SELinux)可能会阻止RabbitMQ绑定端口。

当发生这种情况时,节点将无法启动。
CLI工具、客户端库和RabbitMQ节点也可以打开连接(客户端TCP套接字)。

防火墙可以阻止节点和CLI工具之间的通信。

为了确保以下端口可访问,请单独端口开启授权,请直接关闭防火墙。

这里推荐直接关闭防火墙

4369: epmd, RabbitMQ节点和CLI工具使用的对等体发现服务

5672, 5671:用于AMQP 0-9-1和1.0客户端,无论是否使用TLS

25672:用于节点间和CLI工具通信(Erlang分发服务器端口),动态范围分配(默认限制为单个端口,计算为AMQP端口+ 20000)。除非这些端口上的外部连接确实是必要的(例如集群使用联合或在子网外的机器上使用CLI工具),否则这些端口不应该公开。具体请参见组网指南。

35672-35682: CLI工具(Erlang分发客户端端口)用于与节点通信,按动态范围(服务器分发端口+ 10000 ~服务器分发端口+ 10010计算)分配。具体请参见组网指南。

15672: HTTP API客户端,管理UI和rabbitmqadmin(只有启用了管理插件)

61613,61614: STOMP客户端不带TLS或带TLS(仅当启用STOMP插件时)

1883、8883:MQTT客户端,如果启用了MQTT插件,则不使用TLS或使用TLS

15674: STOMP-over- websockets客户端(仅当Web STOMP插件启用时)

15675: MQTT-over- websockets客户端(仅当启用Web MQTT插件时)

15692: Prometheus metrics(仅当Prometheus插件启用时)

5.开启远程登录

注意,以下操作,分别在3台机器上执行

rabbitmq-plugins enable rabbitmq_management
rabbitmq-plugins enable rabbitmq_mqtt

6.添加用户及权限

注意,以下操作,分别在3台机器上执行

添加RabbitMQ用户及权限:

rabbitmqctl add_user admin 你RabbitMQ的密码
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"

执行rabbitmqctl add_user时,出现 Done. Don't forget to grant the user permissions to some virtual hosts! See 'rabbitmqctl help set_permissions' to learn more. 这段是提醒记得设置权限。

执行完创建用户及授权命令后,可以试下账号是否能登录:

http://10.106.1.241:15672

http://10.106.1.242:15672

http://10.106.1.243:15672

7.集群配置

在max-rabbitmq-02、max-rabbitmq-03节点执行停RabbitMQ服务的命令:

systemctl stop rabbitmq-server

后面的集群配置,为了确保计算机中erlang.cookie文件是一致的,执行以下脚本scp命令。

拷贝.erlang.cookie到max-rabbitmq-02、max-rabbitmq-03节点:

scp /var/lib/rabbitmq/.erlang.cookie root@max-rabbitmq-02:/var/lib/rabbitmq/.erlang.cookie
scp /var/lib/rabbitmq/.erlang.cookie root@max-rabbitmq-03:/var/lib/rabbitmq/.erlang.cookie

重启max-rabbitmq-02、max-rabbitmq-03的RabbitMQ服务:

systemctl start rabbitmq-server

max-rabbitmq-02加入集群:

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@max-rabbitmq-01
rabbitmqctl start_app
rabbitmqctl cluster_status

max-rabbitmq-03加入集群:

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@max-rabbitmq-01
rabbitmqctl start_app
rabbitmqctl cluster_status

登录http://10.106.1.241:15672查看集群状态

正常情况如下图:
1.rabbitmq-cluster_status.png

8.安装插件

安装延迟消息队列插件

插件下载地址:rabbitmq_delayed_message_exchange-3.10.0.ez

请注意插件的版本号,这里下载的是与之相对应的版本。

查看插件存放目录:

rabbitmq-plugins directories -s

执行查看存放目录后,显示如下

Plugin archives directory: /usr/lib/rabbitmq/plugins:/usr/lib/rabbitmq/lib/rabbitmq_server-3.10.0/plugins
Plugin expansion directory: /var/lib/rabbitmq/mnesia/rabbit@max-rabbitmq-01-plugins-expand
Enabled plugins file: /etc/rabbitmq/enabled_plugins

rabbitmq_delayed_message_exchange-3.10.0.ez下载至/usr/lib/rabbitmq/lib/rabbitmq_server-3.10.0/plugins目录下。

执行安装命令:

rabbitmq-plugins enable rabbitmq_delayed_message_exchange

3台rabbitmq分别重启服务:

systemctl restart rabbitmq-server

查看插件安装是否成功:

2.rabbitmq_delayed_message_exchange.png

9.引用 Reference

Kubernetes 1.25.4版本安装
kubeasz安装kubernetes1.25.5
CentOS8搭建nfs服务
k8s一键安装redis单机版
k8s一键安装mysql8单机版
Docker制作springboot运行应用镜像
k8s部署springboot应用
zookeeper集群安装
Nginx日志切割
Elasticsearch单机版本安装
Elasticsearch集群安装
springboot集成prometheus+grafana
安装Docker及学习
RabbitMQ集群安装

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

跟着chatGPT学习:kubernetes中的Reflector、list-watcher、informer等概念

以下是我跟chatGPT学习kubernetes中Reflector、list-watcher、informer等的概念的过程 不敢保证chatGPT回答的百分之百准确。但是&#xff0c;确实帮助我了我理解&#xff01; 最终学习的是下面的图&#xff0c; 1、在kubernetes中Reflector原理&#xff1f; 在Kubernetes…

【操作系统】线程简介

线程简介 线程概念 在许多经典的操作系统教科书中&#xff0c;总是把进程定义为程序的执行实例&#xff0c;它并不执行什么, 只是维护应用程序所需的各种资源&#xff0c;而线程则是真正的执行实体。 所以&#xff0c;线程是轻量级的进程&#xff08;LWP&#xff1a;light w…

短视频矩阵源码-智能剪辑生成技术数值组如何编程?

短视频混剪生成时长逻辑一般采用根据用户设定的总时长、视频数量、时长比例等参数计算出每个视频在混剪中所占的时长&#xff0c;然后根据视频的总时长与所占比例来划分每个视频在混剪中的时长&#xff0c;最后将各个视频拼接起来形成混剪视频。此算法可以进行灵活的时长调整和…

RabbitMQ 小白教程,从安装到使用

主要内容 AMQP简介 RabbitMQ简介 RabbitMQ原理 Erlang安装 安装RabbitMQ RabbitMQ账户管理 交换器 学习目标 知识点要求AMQP简介掌握RabbmitMQ简介掌握RabbitMQ原理掌握Erlang安装掌握安装RabbitMQ掌握RabbitMQ账户管理掌握交换器掌握 一、 AMQP简介 1 AMQP是什么?…

【Midjourney】Midjourney 连续性人物创作 ④ ( 使用 URL + Seed 随机种子生成连续性的人物 )

文章目录 一、生成图片并获取 Seed二、使用 URL Seed 随机种子生成连续性的人物 使用 URL 链接 和 Seed 随机种子 生成连续性人物 , 必须先生成一组图片 , 然后按 U 按钮 , 选择一张大图 , 之后所有的连续性人物图片都基于该图片进行生成 ; 使用 URL Seed 随机种子生成连续性…

Flink学习——状态编程

目录 一、Flink中的状态 二、状态编程 (一)ValueState案例——判断传感器的数据 1.代码实现 2.端口进行传输数据 3.运行结果 (二)ListState (三)MapState案例——比较学生每次考试成绩 1.代码实现 2.端口传输学生成绩 3.运行结果 (四)ReducingState 一、Flink中的状…

DETR3D 论文学习

1. 解决了什么问题&#xff1f; 对于低成本自动驾驶系统&#xff0c;仅凭视觉信息进行 3D 目标检测是非常有挑战性的。目前的多相机 3D 目标检测方法有两类&#xff0c;一类直接对单目图像做预测&#xff0c;没有考虑 3D 场景的结构或传感器配置。这类方法需要多步后处理&…

C语言小游戏——扫雷

前言 结合前边我们所学的C语言知识&#xff0c;本期我们将使用C语言实现一个简单的小游戏——扫雷 目录 前言 总体框架设计 多文件分装程序 各功能模块化实现 初始化棋盘 棋盘打印 埋雷 判赢与排雷 游戏逻辑安排 总结 总体框架设计 和三子棋相同&#xff0c;游戏开始时…

Linux安装MySQL后无法通过IP地址访问处理方法

本文主要总结Linux安装Mysql后&#xff0c;其他主机访问不了MySQL数据库的原因和解决方法 环境说明&#xff1a; MySQL 5.7.30CentOS Linux release 7.6.1810 (Core) 创建完Mysql数据库后可以查看mysql 日志获取root 用户登录密码 [rootlocalhost mysql-5.7.30]# cat /var/l…

spring源码学习

1.xmlBeanFactory对defaultListableBeanFactory类进行扩展&#xff0c;主要用于从XML文档中获取BeanDefinition&#xff0c;对于注册及获取bean都是使用从父类DefaultListableBeanFactory继承的方法去实现。 xmlBeanFactory 主要是使用reader属性对资源文件进行读取和注册。 2.…

Maven属性与版本管理

文章目录 1 属性1.1 问题分析1.2 解决步骤步骤1:父工程中定义属性步骤2:修改依赖的version 2 配置文件加载属性步骤1:父工程定义属性步骤2:jdbc.properties文件中引用属性步骤3:设置maven过滤文件范围步骤4:测试是否生效 3 版本管理 在这一章节内容中&#xff0c;我们将学习两个…

cpp11实现线程池(一)——项目介绍

项目介绍 线程池是库的形式提供给用户&#xff0c;是必须放到代码中&#xff0c;不能单独运行&#xff0c;亦称为基础组件 第一版线程池任务对象使用继承技术&#xff0c;提供一个抽象基类Task&#xff0c;里面有一个纯虚函数run()&#xff0c;使用时继承该类&#xff0c;并重…

c++综合学习

1.函数调用 传值调用&#xff1a;在函数内部修改形式参数&#xff0c;不改编实际参数的值&#xff1b;引用调用&#xff1a;即指针调用&#xff0c;传入的是变量的指针&#xff0c;则在函数内部修改形式参数&#xff0c;实际参数跟着改变。 2. 数组 数组名即该数组的首地址&a…

CSPM 未来发展的思考

由于数据泄露的持续威胁以及云的短暂和快节奏的特性&#xff0c;只有在最基础的层面上保护您的云才有意义。组织已经转向 CSPM 解决方案来锁定他们的平台。 今天我们来聊聊什么是CSPM&#xff0c;它如何去产生有有效的帮助&#xff0c;未来会向哪发展。 什么是 CSPM&#xff1…

阿拉德手游服务端Centos搭建教程

阿拉德手游服务端Centos搭建教程 大家好我是艾西&#xff0c;又有几天没有更新文章了。这几天看了看还是有不少人对手游感兴趣&#xff0c;今天给大家分享一款早些年大火的pc游戏&#xff0c;现在也有手游了“阿拉德”。 你是否还记得DNF&#xff0c;一天你不小心救了赛丽亚&a…

Win10系统电脑开机黑屏一直转圈无法进入桌面怎么办?

Win10系统电脑开机黑屏一直转圈无法进入桌面怎么办&#xff1f;有用户电脑开机了之后无法进入到桌面中&#xff0c;开机了之后&#xff0c;电脑桌面只有显示一个黑屏和转圈的图标&#xff0c;一直都无法进入到桌面中。强制重启电脑之后依然是这样&#xff0c;那么这个情况怎么去…

今天公司来了个拿 30K 出来的测试,算是见识到了基础的天花板

今天上班开早会就是新人见面仪式&#xff0c;听说来了个很厉害的大佬&#xff0c;年纪还不大&#xff0c;是上家公司离职过来的&#xff0c;薪资已经达到中高等水平&#xff0c;很多人都好奇不已&#xff0c;能拿到这个薪资应该人不简单&#xff0c;果然&#xff0c;自我介绍的…

Mysql-存储过程简单入门

定义&#xff1a; 存储过程的英文是 Stored Procedure 。它的思想很简单&#xff0c;就是一组经过 预先编译 的 SQL 语句 的封装。 执行过程&#xff1a;存储过程预先存储在 MySQL 服务器上&#xff0c;需要执行的时候&#xff0c;客户端只需要向服务器端发出调用 存储过程的命…

Godot引擎 4.0 文档 - 循序渐进教程 - 监听玩家输入

本文为Google Translate英译中结果&#xff0c;DrGraph在此基础上加了一些校正。英文原版页面&#xff1a; Listening to player input — Godot Engine (stable) documentation in English 监听玩家输入 在上一课创建您的第一个脚本的基础上&#xff0c;让我们看看任何游戏…

SpringBoot集成SpringSecurity从0到1搭建权限管理详细过程(认证+授权)

前言 最近工作需要给一个老系统搭建一套权限管理&#xff0c;选用的安全框架是SpringSecurity&#xff0c;基本上是结合业务从0到1搭建了一套权限管理&#xff0c;然后想着可以将一些核心逻辑抽取出来写一个权限通用Demo&#xff0c;特此记录下。 文章目录 前言1、SpringSecuri…