4.rabbitMQ之集群

1.mq集群(必须要hostname与hosts有对应关系,所以改本机的配置文件)

   //全部设置主机名称,例如改为 node1
    vim /etc/hostname
   //设置host映射关系的配置文件(就可以不用ip而用主机名简单的访问别的服务器了)
    vim /etc/hosts
   10.211.55.74 node1
   10.211.55.75 node2
   10.211.55.76 node3
  //确保每个节点cookie一致,使用scp复制命令
  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
    //启动mq服务和erlang虚拟机
    rabbitmq-server -detached
   //节点2,3关闭mq服务不改变erlang服务
   rabbitmqctl stop_app
   rabbitmqctl reset
  //加入集群
   rabbitmqctl join_cluster rabbit@node2
  //启动mq
  rabbitmqctl start_app
  //查看集群状态(每个节点都可以查看到一样的信息)
   rabbitmqctl cluster_status
  
  //删除节点
   rabbitmqctl stop_app
   rabbitmqctl reset
    rabbitmqctl start_app
    rabbitmqctl cluster_status
    rabbitmqctl forget_cluster_node rabbit@node2(node1 机器上执行)
   //需要重新设置账号角色和权限
   rabbitmqctl add_user admin 123
   rabbitmqctl set_user_tags admin administrator
   rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"

2.镜像队列(队列在几个节点都有备份)一台机器down会消息丢失
//最好备份1份,多份 的话很浪费资源 mq界面admin ->Add / update a policy

  ha-mode exactly  #指定份数
  ha-params 2        #几份 备份2份
 ha-sync-mode automatic #同步模式,自动同步到其他机器

3.高可用负载均衡 haproxy+keepalive询问是否有心跳 ip转移到另外一个机器,那个ip还可以访问使用(略过,作者搭建起来使用不了,文档也没有信息步骤,以后好好学习nginx,体验一下负载均衡,以前搭建过,但是那时候什么都不懂…)

1.官网下载tar.gz包
#解压 tar -zxvf xxx
#内核版本要3.10
uname -r

2.进入目录编译c语言文件,cent7使用linux31
make TARGET=linux31
make install PREFIX=/usr/local/haproxy

3.配置文件9188是可以改的前端管理页面端口(这个启动起来了,但是不知道怎么使用)

4.启动 /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg

5.访问网页http://192.168.10.106:9188/haproxy

global
 
        daemon
 
        chroot /usr/local/haproxy
 
defaults
 
        log 127.0.0.1 local0 err #[err warning info debug]
 
        mode http
 
        retries 2
 
        option redispatch
 
        option abortonclose
 
        option dontlognull
 
        maxconn 4096
 
        timeout connect 5000ms
 
        timeout client 30000ms
 
        timeout server 30000ms
 
        #timeout check 2000
 
listen admin_status
 
        bind 0.0.0.0:9188
 
        mode http
 
        stats uri /haproxy
 
stats realm welcome login/ Haproxy
 
listen proxy-private
 
        bind 0.0.0.0:8088
 
        mode tcp
 
        balance leastconn
 
        option tcplog
 
server s1 192.168.10.106:8087 check weight 1 maxconn 2000

4.federationExchange联邦交换机 (解决远距离网络延迟问题,如北京和深圳距离比较远,北京用户访问北京mq,深圳用户访问深圳mq,但是北京和深圳必须要同步消息,因为相互依赖)(主要是在admin管理界面设置参数,没有代码)

  #删除之前的policy
#全部机器启用联邦插件
rabbitmq-plugins enable rabbitmq_federation
rabbitmq-plugins enable rabbitmq_federation_management
#admin查看到联邦 Federation Status 

#upstream 上游交换机的数据流向下游,下游不流向上游
1.消费者创建交换机(随便类型)Dirrect

feder_exchange

2.node3的 admin-> Federation upStream 格式amqp://账号:密码@节点ip

       名字: your_name
       uri: amqp://admin:123@node1

3.node3设置policy Add / update a policy

Pattern: ^fed.* #apply to Exchanges,交换机 的名字
Definition:  federation-upstream  your_name
  #点击界面的 feder status查看状态

–消费者–

public class Feder {
        public static final String EXCHANGE_NAME="fed_exchange";
    public static void main(String[] args) throws Exception {
        Channel channel = MQRabbitUtil.getChannel();
        //得到临时队列
        String QName="fed_queue1";
        channel.queueDeclare(QName,false,false,false,null);
        //交换机的名字和类型
//        channel.exchangeDeclare(EXCHANGE_NAME,"fanout");
        channel.exchangeDeclare(EXCHANGE_NAME,"direct");
        channel.queueBind(QName,EXCHANGE_NAME,"wrong");
        DeliverCallback deliverCallback=(tag, delivery)->{

            System.out.println("consumer1"+new String(delivery.getBody(),"UTF-8"));
        };
        CancelCallback nCallback=(tag)->{

            System.out.println("失败应答");
        };

        boolean IsAck=true;
        channel.basicConsume(QName,IsAck,deliverCallback,(tag)->{});



    }
}

–提供者—

   public class FederexchangeProducer {
    public static final String EXCHANGE_NAME="fed_exchange";
    public static void main(String[] args) throws Exception {
        Channel channel = MQRabbitUtil.getChannel();
        //交换机的名字和类型
//        channel.exchangeDeclare(EXCHANGE_NAME,"fanout");
        channel.exchangeDeclare(EXCHANGE_NAME,"direct");
        Scanner scanner = new Scanner(System.in);

        while (scanner.hasNext()){
            String next = scanner.next();
            //交换机
            //队列名
            //设置消息持久化
            //二进制
            //fanout交换机模式
//            channel.basicPublish(EXCHANGE_NAME,"", MessageProperties.PERSISTENT_TEXT_PLAIN,next.getBytes());
            //direct交换机
            channel.basicPublish(EXCHANGE_NAME,"wrong", MessageProperties.PERSISTENT_TEXT_PLAIN,next.getBytes());
//            boolean flag=channel.waitForConfirms();
//            if(flag){
//                System.out.println("消息已经写入磁盘的确认");
//
//            }

        }

    }
}

5.联邦队列 Queue (和上面同理)(有重复消费的问题)

   1.upstream同上
   2.policy 也选择上游名称,注意这里选择Queue就可以了

6.Shovel(铲子) 将数据从队列移到另外一个队列 源端到目的端,也是同步数据
#比使用联邦更清晰,貌似很简单粗暴,
#如果在node2的q1数据转发到node1的q2,直接给node2的加一个q2队列增加数据,然后给node1增加q1q2队列并同步数据
#集群所有机器开启插件

 rabbitmq-plugins enable rabbitmq_shovel
 rabbitmq-plugins enable rabbitmq_shovel_management

#admin界面出现shovel management,添加界面 写source队列和destination队列,用AMQP0.9.1比较符合之前的习惯

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

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

相关文章

【SpringMVC】| SpringMVC执行流程原理 | 常用注解 剥析

MVC目录 一. 🦁 MVC模型二. 🦁 SpringMVC1. SpringMVC执行流程(重点)Ⅰ. SpringMVC四大组件Ⅱ. 执行流程 2. RequestMapping3. RequestParam4. ReuqestHeader & CookieValue5. RESTful风格支持Ⅰ. 传统 vs restfulⅡ. PathVar…

【网络技术】什么是CNI

序言 你只管努力,其他交给时间,时间会证明一切。 Never look back unless you are planning to go that way. 文章标记颜色说明: 黄色:重要标题红色:用来标记结论绿色:用来标记一级论点蓝色:用…

【应急响应】日志自动提取分析项目ELKLogkitLogonTracerAnolog等

日志自动提取-七牛Logkit&观星应急工具 1、七牛Logkit:(Windows&Linux&Mac等) https://github.com/qiniu/logkit/ 支持的数据源(各类日志,各个系统,各个应用等) File: 读取文件中的日志数据,包…

面了一个4年经验的测试工程师,自动化都不会也要15k,我也是醉了····

在深圳这家金融公司也待了几年,被别人面试过也面试过别人,大大小小的事情也见识不少,今天又是团面的一天, 一百多个人都聚集在一起,因为公司最近在谈项目出来面试就2个人,无奈又被叫到面试房间。 整个过程…

数说热点 | 跟着《长月烬明》起飞,今年各地文旅主打的就是一个听劝

近日,随着热播剧《长月烬明》的爆火,蚌埠、宣城、敦煌等多个与剧情梦幻联动的宝藏城市被带飞,各地热心网友也纷纷催促自家文旅局赶紧“蹭飞”,《长月烬明》以一己之力打造了影视文旅融合的新样板。 仙偶剧特效天花板,…

《互联网安全产品漏洞管理规定》

《网络产品安全漏洞管理规定》由工业和信息化部、国家互联网信息办公室、公安部联合印发,自2021年9月1日起施行。 该《规定》明确,任何组织或者个人不得利用网络产品安全漏洞从事危害网络安全的活动,不得非法收集、出售、发布网络产品安全漏洞…

Redis高频面试题,使用场景

一、缓存 1、什么是缓存穿透 ? 怎么解决 ? 缓存穿透 查询一个不存在的数据,mysql查询不到数据也不会直接写入缓存,就会导致每次请求都查数据库。 解决 方案一:缓存空数据,查询返回的数据为空,仍把这个空结果进行…

【JavaEE】认识线程

目录 1、什么是线程 2、为什么引入线程 2.1、线程的优缺点 3、CPU的工作原理 4、线程和进程的关系 4.1、线程和进程的入口函数 4.2、线程独享的资源 1、什么是线程 一个进程中可以有一个或者多个线程,每个线程都是一个独立的执行流。多个线程之间,也…

3.rabbitMQ之发布确认高级和整合springboot(重要)找了很多博客整理出来的

1.极端情况下 rabbitMQ需要重启,导致消息投递失败(生产者发消息全部丢失)(交换机或者队列出问题) 生产者需要把数据放到缓存,用定时任务重新发送 解决方法: 0.必须配置文件写 spring.rabbitmq.publisher-confirm-typecorrelatedspring.rabbitmq.publisher-returnstruecorrelati…

Word Embedding

One-hot-encoding 缺点 1.向量维度和向量个数很大,假设有1w个token的话,向量个数和维度就都是1w 2. 语义相近的词的向量并不相似 Word Embedding 核心思想:可以通过上下文理解单词的语义 predection-based方法 使用前一个单词预测下一个…

【机器学习】信息量、香农熵、信息增益

这节可以搭配 【机器学习】Logistic回归(重新整理)信息量(信息)信息量公式的推理过程 香农熵信息增益 【机器学习】Logistic回归(重新整理) B站视频:“交叉熵”如何做损失函数?打包…

Linux一学就会——编写自己的shell

编写自己的shell 进程程序替换 替换原理 用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数 以执行另一个程序。当进程调用一种exec函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动 例程开始执行…

视觉震撼的数据可视化示例

众所周知,数据可以非常强大——当你真正理解它告诉你什么时。 数据和信息可视化(数据可视化或信息可视化)是对大量复杂的定量、定性数据、信息进行设计和创建易于沟通、易于理解的图形或视觉表示的实践,在静态、动态或交互式视觉项目的帮助下&#xff0…

存储网络架构——DAS、NAS、SAN、分布式组网架构

目录 DAS直连式存储 NAS网络附加存储 SAN存储 存储区域网络 分布式存储组网 DAS直连式存储 DAS遇到的挑战 NAS网络附加存储 向主机提供文件服务;文件系统由存储设备维护,用户访问文件系统,不直接访问底层存储 拥有所有主机上文件与底层存储空…

JS案例分析-某国际音x-tt-params参数分析

今天我们要分析的网站是:https://www.tiktok.com/selenagomez?langen,参数名字叫x-tt-params。 先来抓个包 这个接口是用户视频列表url,参数叫x-tt-params,该接口中还有其他参数像msToken,X-Bogus, _sig…

【51单片机】点亮一个LED灯(看开发板原理图十分重要)

🎊专栏【51单片机】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【The Right Path】 🥰大一同学小吉,欢迎并且感谢大家指出我的问题🥰 目录 🍔基础内容 &#x1f3f3…

项目集的定义及管理

一、什么是项目集 项目集是相互关联且被协调管理的项目、子项目集和项目集活动,以便获得分别管理所无法获 得的效益。 以项目集的形式管理项目、子项目集及项目集活动能确保项目集组件的战略和工作计划根据各组 件的成果做出相应调整,或者按照发起组织的…

洞车系统常见问题解决指南

洞车常见问题解决指南 1.研发脚本处理问题1.1 WMS出库单无法审核1.2 OMS入库单无法提交,提示更新中心库存失败1.3 当出现OMS下发成功WMS/TMS/DMS还没有任务的情况时处理方案1.4 调度波次生成或者添加任务系统异常1.5 东鹏出库单部分出库回传之后要求重传1.6 更新订单…

不会前端,怎么快速打造属于自己的个人博客?

个人博客 简介提前准备 一、初始化vuepress项目二、页面配置首页配置顶部配置顶部导航栏路由配置侧边导航栏配置 三、打包部署四、数据统计插槽自定义插槽配置整体结构页面效果 项目地址 简介 主要教大家如何快速搞一个属于自己的博客网站,特别是一些不怎么会前端的…

信息安全保障

文章目录 信息安全保障基础基本概念信息安全定义广义和狭义的信息安全问题信息安全问题的根源和特征情报威胁和态势感知信息安全保障基础信息安全属性信息安全视角 信息安全发展阶段通信安全计算机安全信息系统安全信息安全保障网络安全空间 信息安全保障新领域工业控制系统(IS…
最新文章