zoukankan      html  css  js  c++  java
  • RabbitMQ(三)集群

    一、rabbitmq节点
    1、节点分类
    1)磁盘节点:配置信息和元信息存储在磁盘上
    2)内存节点:配置信息和元信息存储在内存中,RAM节点不提供更高的消息速率
     
    2、节点的选择
    1)在单机情况下,节点必须为磁盘节点
    2)在集群模式下,至少有一个节点是磁盘节点
    如果唯一磁盘的磁盘节点崩溃了,不能进行如下操作:
    • 不能创建队列
    • 不能创建交换器
    • 不能创建绑定
    • 不能添加用户
    • 不能更改权限
    • 不能添加和删除集群几点
     
    3)集群中所有节点都是对等的,不存在主从关系
     
    二、rabbitmq的三种模式
    1、单机模式,就是单独运行一个rabbitmq服务
     
    2、普通集群模式
    1)节点之间同步元数据
    • 队列元数据:队列名称和它的属性;
    • 交换器元数据:交换器名称、类型和属性;
    • 绑定元数据:一张简单的表格展示了如何将消息路由到队列;
    • vhost元数据:为vhost内的队列、交换器和绑定提供命名空间和安全属性;
    • 用户元数据
    • 权限元数据
    2)消息不会在节点之间同步
    3)队列只会在创建的节点中存在,其他节点只知道这个queue的metadata信息和一个指向queue的owner node的指针
     
    3、生产和消费消息
    1)如果生产者消费者连接的节点为队列所在节点,集群中的消息收发只与该节点有关
    2)如果连接的节点为队列非所在节点,该节点起路由转发作用,
    生产消息:根据节点上有关的元数据,将数据转发至队列所在节点上,最终发送的消息还是会存储至队列所在节点上。
    消费消息:根据节点上有关的元数据,从队列所在节点拉取消息,发送给消费者
     
    3、镜像集群模式
    1)每一个镜像队列都包含一个master和1个或多个slave队列
    2)一旦主节点不可用,最老的从队列将被选举为新的主队列。
    3)镜像模式是在普通模式的基础上,通过配置同步策略,将消息同步到从队列

    rabbitmqctl set_policy [-p Vhost] Name Pattern Definition [Priority]
    -p Vhost: 可选参数,针对指定vhost下的queue进行设置
    Name: policy的名称
    Pattern: queue的匹配模式(正则表达式)
    Definition:镜像定义,包括三个部分ha-mode, ha-params, ha-sync-mode
            ha-mode:指明镜像队列的模式,有效值为 all/exactly/nodes
                all:表示在集群中所有的节点上进行镜像
                exactly:表示在指定个数的节点上进行镜像,节点的个数由ha-params指定
                nodes:表示在指定的节点上进行镜像,节点名称通过ha-params指定
            ha-params:作为参数,为ha-mode的补充
            ha-sync-mode:进行队列中消息的同步方式,有效值为automatic和manual
    priority:可选参数,policy的优先级
    
    实例: rabbitmqctl set_policy ha
    -all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}' --apply-to all
    三、docker部署镜像模式

    cat>>/etc/hosts<<EOF
    
    10.31.4.45  test-prd-10-31-4-45
    10.31.4.96  test-prd-10-31-4-96
    EOF
    
    systemctl enable docker
    
    systemctl start docker
    
    docker run --name rabbitmq-3.7.16 
    -e RABBITMQ_DEFAULT_PASS="12345678" 
    -e RABBITMQ_DEFAULT_USER="root" 
    -v /data/rabbitmq:/var/lib/rabbitmq 
    -e RABBITMQ_ERLANG_COOKIE="NLZZHgKCFB123XSVWXGD" 
    --network=host -d rabbitmq:3.7.16-management
    
    
    
    在节点10.31.4.45
    docker exec abf6fe67724e  rabbitmqctl stop_app
    docker exec abf6fe67724e  rabbitmqctl join_cluster rabbit@test-prd-10-31-4-96
    docker exec abf6fe67724e  rabbitmqctl start_app
    
    在其中一个节点执行同步策略
    docker exec 51189b820642 rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}' --apply-to all
  • 相关阅读:
    sublime3 常用快捷键
    sublime3 常用插件
    前端整理——css部分
    JS数组与对象的遍历方法大全
    Javascript 异步加载详解
    五大主流浏览器内核的源起以及国内各大浏览器内核总结
    JavaScript的分支结构(switch,if..else)
    js---作用域,作用域链,立即执行函数,闭包
    js预编译
    利用js实现轮播图
  • 原文地址:https://www.cnblogs.com/guoxianqi2020/p/13985057.html
Copyright © 2011-2022 走看看