RabbitMQ-集群

news2024/12/29 11:06:02
一、搭建

1、创建三个虚拟机

2、修改三台主机的hostname,分别为node1,node2,node3,分别重启

vi /etc/hostname
reboot

        3、配置各个主机的hosts文件,让各个节点都能互相识别对方

vi /etc/hosts
#添加下面配置
192.168.xxx.165 node1
192.168.xxx.167 node2
192.168.xxx.168 node3

        4、为确保各个节点的cookie文件使用的是同一个值,在node1上执行远程操作命令(.erlang.cookie是个隐藏文件)

scp /var/lib/rabbitmq/.erlang.cookie root@node2:/var/lib/rabbitmq/.erlang.cookie
scp /var/lib/rabbitmq/.erlang.cookie root@node3:/var/lib/rabbitmq/.erlang.cookie

        5、启动RabbitMQ服务,顺带启动Erlang虚拟机和RabbitMQ应用服务,在三个节点分别执行以下命令

rabbitmq-server -detached

       6、在节点二执行如下命令(这里需要关闭各节点的防火墙 systemctl stop firewalld 不然无法连接)

 rabbitmqctl stop_app  # (rabbitmqctl stop 会将erlang虚拟机关闭, rabbitmqctl stop_app 只关闭RabbitMQ服务)
 rabbitmqctl reset   #重置
 rabbitmqctl join_cluster rabbit@node1  #关联节点1
 rabbitmqctl start_app #启动服务

       7、在节点三执行如下命令

 rabbitmqctl stop_app  # (rabbitmqctl stop 会将erlang虚拟机关闭, rabbitmqctl stop_app 只关闭RabbitMQ服务)
 rabbitmqctl reset   #重置
 rabbitmqctl join_cluster rabbit@node2  #关联节点2
 rabbitmqctl start_app #启动服务

      8、查看集群状态

rabbitmqctl cluster_status

   9、重新设置账户

#创建账号
rabbitmqctl add_user admin 123
#设置用户角色
rabbitmqctl set_user_tags admin administrator
#设置用户权限
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"

   10、登录

    11、解除集群节点

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
rabbitmqctl cluster_status
rabbitmqctl forget_cluster_node rabbit@node2(在node1上执行)
  二、镜像队列

         搭建

      结果

      就算整个集群只剩下一台机器,依然能消费队列里面的消息,说明队列里面的消息被镜像队列传递到相应的机器里面了。

  三、高可用负载均衡

         HAProxy实现负载均衡

         HAProxy提供高可用性、负载均衡及基于TCPHTTP 应用的代理,支持虚拟主机,他是免费的,快速并且可靠的一种解决方案。HAProxy实现了一种事件驱动,单一进程模型,此模型支持非常大的并发连接数。

  四、Federation Exchange

         搭建

         1、需要保证每台节点单独运行

         2、在每台机器上开始federation插件

rabbitmq-plugins enable rabbitmq_federation
rabbitmq-plugins enable rabbitmq_federation_management

      3、必须先有下游节点交换机(先在node2创建fed_exchange)【部分代码】

       //声明交换机
        channel.exchangeDeclare(FED_EXCHANGE,BuiltinExchangeType.DIRECT);
        //声明队列
        channel.queueDeclare("node2_queue",true,false,false,null);
        //绑定
        channel.queueBind("node2_queue",FED_EXCHANGE,"routeKey");

      4、在downstream(node2)配置upstream(node1)

      5、添加policy

  五、Federation Queue

         联邦队列可以在多个Broker节点(或者集群)之间为单个队列提供均衡负载功能。一个联邦队列可以连接一个或者多个上游队列(upstream queue)并从这些上游队列中获取消息以满足本地消费者消费消息的需求。

        搭建(同上)只是在策略选项上选择则队列即可

  五、Shovel

         和Federation具备的数据转发功能类似,Shovel够可靠、持续地从一个broker中的队列(作为源端)拉取数据并转发至另一个Broker中的交换机(作为目的端),作为源端地队列和作为目的端地交换机可以同时位于同一个Broker,也可以位于不同的broker上

       搭建

       1、开启插件(每台机器都需要)

rabbitmq-plugins enable rabbitmq_shovel
rabbitmq-plugins enable rabbitmq_shovel_management

   2、添加配置

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

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

相关文章

Django by Example·第三章|Extending Your Blog Application@笔记

Django by Example第三章|Extending Your Blog Application笔记 之前已经写过两章内容了,继续第三章。第三章继续对博客系统的功能进行拓展,其中将会穿插一些重要的技术要点。 部分内容引用自原书,如果大家对这本书感兴趣 请支持原版Django …

基于模块联邦的微前端实现方案

一、 微前端应用案例概述 当前案例中包含三个微应用,分别为 Marketing、Authentication 和 Dashboard Marketing:营销微应用,包含首页组件和价格组件 Authentication:身份验证微应用,包含登录组件 Dashboard&#x…

B站发帖软件哪个好用?好用的哔哩哔哩发帖工具

B站发帖软件哪个好用?好用的哔哩哔哩发帖工具#发帖软件#哔哩哔哩发帖#视频发布软件 登录成功之后,进入到这样一个界面,默认情况下是这个样子的,我们在这里输入一下我们的一个文件夹的路径,输入到这里,点击添加账号&a…

kettle开发-Day36-循环驱动作业

前言:在日常数据处理时,我们通过变量传参来完成某个日期的数据转换。但可能因程序或者网络原因导致某个时间段的数据抽取失败。常见导致kettle作业失败的原因大概分为三大类,数据源异常、数据库异常、程序异常。因此面对这些异常时&#xff0…

Not available OpenAI s services are not available in your country.

一、准备阶段 1、邮箱账号(qq、网易、谷歌等等) 2、你能够科学上网(下边详细介绍) 3、拥有一个GW手机号,用于接收注册验证码。(下边详细介绍) 二、开始注册 1、官方注册网址https://beta.openai.com/signup(按照步骤注册&am…

RDSDRDSPolarDBPolarDB-X的区别

RDS 阿里云关系型数据库(Relational Database Service,简称RDS),是一种稳定可靠、可弹性伸缩的在线数据库服务。 基于阿里云分布式文件系统和高性能存储,RDS支持MySQL、SQL Server、PostgreSQL和PPAS(Post…

在VScode终端上创建nuxtjs项目遇到的问题以及使用GitHub遇到的问题和一些个人笔记

文章目录📋前言💻关于GitHub打开慢或无法打开的问题💻克隆GitHub的项目到本地💻创建nuxtjs项目🧩无法加载文件的报错问题🧩使用vue init nuxt/starter demo出现的问题🧩另一种命令创建nuxtjs项目…

字符编码及转换

什么是字符编码字符编码(Character encoding)也称字集码,是把字符集中的字符,编码为指定集合中的某一对象(例如:比特模式、自然数序列、8位组或者电脉冲),以便文本在计算机中存储或者…

前端控制台出现 红色 的报错信息TypeError: fn.apply is not a function

项目场景: 提示:这里简述项目相关背景: 使用vue在原来的系统中 开发新的模块,开发时无意间发现 前端控制台出现 红色 的报错信息,但是页面依然还是正常 加载出来了 控制台一直报错 TypeError: fn.apply is not a fun…

09- 逻辑回归算法 (LogisticRegression) (机器学习)

基本概念: 逻辑回归主要逻辑是通过sigmoid函数进行分类, 当函数结果大于0时赋值1, 小于0时赋值0, 然后根据结果进行分类, 化简后求最小值的过程和线性方程类似, 该函数的特点是:分类算法 模型训练 : lr LogisticRegression() from sklearn.linear_model import LogisticRegr…

力扣39.组合总数

文章目录力扣39.组合总数题目描述方法1:深搜回溯力扣39.组合总数 题目描述 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可…

【数据库】MySQL 单表查询,多表查询

目录 单表查询 一,创建表worker 1,创建表worker的sql代码如下: 2,向worker表中插入信息 二, 按要求进行单表查询 1、显示所有职工的基本信息。 2、查询所有职工所属部门的部门号,不显示重复的部门号。 …

【自学Python】Python字符大小写判断

大纲 Python字符串是否是小写 Python字符串是否是小写教程 在开发过程中,有时候我们需要判断一个 字符串 是否是小写形式(即,所有的字符都是小写字母,不是英文字符的忽略不做判断),在 Python 中&#xff…

SAP ERP系统SD模块常用增强之一:VA01/VA02创建或修改SO的输入检查

在SAP/ERP项目的实施中销售管理模块(SD)的创建和修改销售订单必定会有输入字段校验检查的需求,来防止业务人员录入错误或少录入数据,SAP公司也考虑到这一点,所以这方面的配置功能也非常强大,通常情况下不需…

GraphQL vs REST API 架构,谁更胜一筹?

GraphQL vs REST API 架构,谁更胜一筹? Michele Moody 平川 万佳 2020 年 1 月 18 日 本文字数:2890 字 阅读完需:约 9 分钟 2015 年,Facebook 开源 GraphQL。此后,它在前端 Web 中大受欢迎。传统的 R…

一篇文章带你学会Ansible的安装及部署

目录 前言 一、什么是Ansible 二、Ansible的工作方式 三、Ansible的安装 四、构建Anisble清单 1、清单书写方式 2、清单查看 3、清单书写规则 4、主机规格的范围化操作 五、ansible命令指定清单的正则表达式 六、 Ansible配置文件参数详解 1、配置文件的分类与优先…

【C++】C/C++内存管理模板初阶

文章目录一、 C/C内存管理1. C/C内存分布2. C内存管理方式3. operator new与operator delete函数4. new和delete的实现原理5. 定位new表达式6. 常见面试题malloc/free和new/delete的区别内存泄漏二、模板初阶1. 泛型编程2. 函数模板3. 类模板一、 C/C内存管理 1. C/C内存分布 …

每天10个前端小知识 【Day 13】

前端面试基础知识题 1. Position:absolute绝对定位,是相对于谁的定位? CSS position属性用于指定一个元素在文档中的定位方式。top,right,bottom 和 left 属性则决定了该元素的最终位置。 absolute的元素会被移出正…

牛客网 NC107 寻找峰值

前言:内容包括四大模块:题目,代码实现,大致思路,代码解读 题目: 描述 给定一个长度为n的数组nums,请你找到峰值并返回其索引。数组可能包含多个峰值,在这种情况下,返回…

vue-router路由配置

介绍:路由配置主要是用来确定网站访问路径对应哪个文件代码显示的,这里主要描述路由的配置、子路由、动态路由(运行中添加删除路由) 1、npm添加 npm install vue-router // 执行完后会自动在package.json中添加 "vue-router…