RabbitMQ集群安装

这篇具有很好参考价值的文章主要介绍了RabbitMQ集群安装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

RabbitMQ集群安装

1.前言

OS: CentOS Linux release 7.9.2009 (Core)

机器:

IP node cpu 内存 存储
10.106.1.241 max-rabbitmg-01 8 核 16 G 100 G
10.106.1.242 max-rabbitmg-02 8 核 16 G 100 G
10.106.1.243 max-rabbitmg-03 8 核 16 G 100 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查看集群状态

正常情况如下图:
RabbitMQ集群安装

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

查看插件安装是否成功:

RabbitMQ集群安装

9.镜像集群配置

为什么要配置镜像集群?因为默认集群无法达到高可用的效果。

  • 默认模式:

即普通模式,默认模式,以两个节点(rabbit01,rabbit02)为例来进行说明,对于Queue来说,消息实体只存在于其中一个节点rabbit01(或者rabbit02),rabbit01和rabbit02两个节点仅有相同的元数据,即队列结构。当消息进入rabbit01节点的Queue后,consumer从rabbit02节点消费时,RabbitMQ会临时在rabbit01,rabbit02间进行消息传输,把A中的消息实体取出并经过B发送给consumer,所以consumer应尽量连接每一个节点,从中取消息。即对于同一个逻辑队列,要在多个节点建立物理Queue。否则无论consumer连rabbit01或rabbit02,出口总在rabbit01,会产生瓶颈。当rabbit01节点故障后,rabbit02节点无法取到rabbit01节点中还未消费的消息实体。如果做了消息持久化,那么等到rabbit01节点恢复,然后才可被消费。如果没有消息持久化,就会产生消息丢失的现象。

  • 镜像模式:

把需要的队列做成镜像队列,存在与多个节点属于RabibitMQ的HA方案,该模式解决了普通模式中的问题,其实质和普通模式不同之处在于,消息体会主动在镜像节点间同步,而不是在客户端取数据时临时拉取,该模式带来的副作用也很明显,除了降低系统性能外,如果镜像队列数量过多,加之大量的消息进入,集群内部的网络带宽将会被这种同步通讯大大消耗掉,所以在对可靠性要求比较高的场合中适用。

配置镜像集群:

镜像模式要依赖policy模块,policy中文来说是政策,策略的意思,那么他就是要设置,那些Exchanges或者queue的数据需要复制,同步,如何复制同步?对就是做这些的。

  1. 进入Policies配置页面:

通过Web控制台操作,随便找一台节点服务,这里以max-rabbitmq-01节点为例,按下图中标记出的数字先后顺序,点击进入Policies配置页面。
RabbitMQ集群安装

  1. Policies配置页面介绍:
    RabbitMQ集群安装

参数解释:

name: 策略名称,自定义命名;
Pattern: 匹配符,只有一个代表匹配所有,test为匹配名称为test的exchanges或者queue;
***Apply to:***使用对象,使用Exchanges and queues;
Priority:配置了多个策略时候的优先级,值越大,优先级越高。(单个策略配置意义不大),注意:没有指定优先级的消息会将优先级以0对待,即没有配置Priority时默认为0。 对于超过优先级队列所定最大优先级的消息,优先级以最大优先级对待;
Definition: 匹配类型,他分为3种模式:all-所有(所有的queue),exctly-部分(需配置ha-params参数,此参数为int类型比如3,众多集群中的随机3台机器),nodes-指定(需配置ha-params参数,此参数为数组类型比如[“3rabbit@F”,“rabbit@G”]这样指定为F与G这2台机器。)

  1. 查验镜像集群是否生效:
    查看Queues,会发现在Node字段中,默认指向了Master,当Master故障后,会切换至新选择产生的Maseter,可自行测试验证,比如将max-rabbitmq-01服务停掉,再来看此处的Node字段,是不是指向了新的节点上。
    RabbitMQ集群安装
    此至,镜像集群配置已经完成。

10.引用Reference

CentOS8搭建nfs服务
Kubernetes 1.25.4版本安装
kubeasz安装kubernetes1.25.5
k8s一键安装redis单机版
k8s一键安装mysql8单机版
k8s部署springboot应用
Docker安装及学习
Docker制作springboot运行应用镜像
Docker制作Java8环境镜像
Docker安装Mysql5.7.31
Docker安装Mysql8.1.0
Elasticsearch单机版本安装
Elasticsearch集群安装
ELK安装
Docker安装ELK
zookeeper集群安装
Nginx日志切割
RabbitMQ集群安装
springboot集成prometheus+grafana
windows11安装android应用文章来源地址https://www.toymoban.com/news/detail-451043.html

到了这里,关于RabbitMQ集群安装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Centos安装RabbitMQ

     控制台     

    2024年02月13日
    浏览(46)
  • CentOS8安装RabbitMQ

    1、安装Erlang环境 具体下载哪个版本需要看RabbitMQ需要安装的版本 RabbitMQ和Erlang版本对应 官网安装指定的Erlang版本 下载RabbitMQ的rpm包 上传Erlang和对应的RabbitMQ安装包 卸载前面的Erlang和RabbitMQ (一)、安装Erlang (二)、安装RabbitMQ 启动RabbitMQ 开放端口 添加用户 报错 Error: unab

    2024年02月04日
    浏览(34)
  • RabbitMQ的安装-centos环境

    RabbitMQ是一个消息中间件:它接受并转发消息。你可以把它当做一个快递站点,当你要发送一个包裹时,你把你的包裹放到快递站,快递员最终会把你的快递送到收件人那里,按照这种逻辑RabbitMQ是一个快递站,一个快递员帮你传递快件。RabbitMQ与快递站的主要区别在于,它不处

    2024年02月13日
    浏览(38)
  • centos7安装rabbitmq

    1、安装curl 2、下载erlang安装包 3、安装erlang 4、安装成功以后检测erlang版本号 5、先导入key 6、下载rabbitmq服务 7、在centos服务器上新建文件夹,并切换到当前路径 8、 centos7下载安装包,将下载的安装包上传到新建的路径上 https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.5/ra

    2024年02月09日
    浏览(36)
  • CentOS8 安装 RabbitMQ【纯安装手册】

    安装RabbitMQ 注意:以下的命令都是用root用户操作的 下载Centos-8.repo 生成缓存 更新yum 由于 rabbitmq 是基于 erlang 语言开发的,所以必须先安装 erlang 安装依赖 erlang官网下载地址 erlang的github下载地址 github访问可以下载这个软件加速器 解决访问github慢或打不开的问题资源-CSDN文库

    2024年02月04日
    浏览(40)
  • Centos7安装配置RabbitMQ

    在开始演示安装RabbitMQ前,小编决定先介绍一下前置知识,想看安装步骤的小伙伴可以直接跳过这个章节,本篇博客算是小编学习RabbitMQ的笔记,部分内容都是摘录的,如果有感兴趣的小伙伴可以私信小编,后续小编将会更新更多的关于RabbitMQ的知识,感兴趣的小伙伴可以点个订阅。 1

    2023年04月25日
    浏览(27)
  • RabbitMQ在CentOS下的安装

    RabbitMQ的版本是3.8.2 1.环境配置:CentOs 7.6以上版本,我的版本是7.9,不要对yum换源,否则可能会安装失败。 以上命令,是使用了UTF-8编码格式。 2. 执行,开始下载包 3.执行 4.执行以上两部后 开始安装。 5. 看到下面,点击y即可,安装完成。  6. 启动RabbitMQ 7. 看看端口有没有起

    2024年02月13日
    浏览(24)
  • RabbitMQ离线安装(Centos7)

    摘要: 本文介绍在Centos7上离线安装RabbitMQ 目录 一、安装RabbitMQ 1、下载rpm安装包 2、安装rpm包 二、开放相应端口白名单 1、停止 Firewall 2、打开iptables配置文件 3、追加相应端口的配置内容 4、重启iptables 三、配置并启动RabbitMQ 1、开启用户远程访问 2、 启动RabbitMQ服务 3、开启

    2024年02月06日
    浏览(44)
  • Centos7下安装RabbitMQ教程

    看我这个文章安装如果不会,你顺着网线来揍我,不能说最简单,我的是超级简单!!! 一、做准备(我是在vm虚拟机上的Centos7镜像上安装的)     1、安装rabbitmq得准备他的安装包(rabbitmq-server-3.8.5-1.el7.noarch)        下载地址mq              2、还得准备erlang语言(er

    2024年02月07日
    浏览(37)
  • Centos安装RabbitMQ,JavaSpring发送RabbitMQ延迟延时消息,JavaSpring消费RabbitMQ消息

    erlang 和 rabbitmq 版本说明 https://www.rabbitmq.com/which-erlang.html 确认需要安装的mq版本以及对应的erlang版本。 RabbitMQ下载地址: https://packagecloud.io/rabbitmq/rabbitmq-server Erlang下载地址: https://packagecloud.io/rabbitmq/erlang RabbitMQ延迟消息插件下载 https://github.com/rabbitmq/rabbitmq-delayed-message-exc

    2024年02月08日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包