zoukankan      html  css  js  c++  java
  • 集群架构和CentOS7安装RabbitMQ集群(单机版)

    1. 集群架构

    1.1 四种内部元数据

    队列元数据、交换器元数据、绑定元数据、vhost元数据。
    单一节点中:会将数据存储到内存,同时将持久化元数据保存到硬盘。
    集群中: 存储到磁盘上、内存中。
    集群中的队列:不是每一个rabbitmq节点都有所有队列的拷贝,集群只会在单个节点上创建完整信息。

    1.2 、内存节点和磁盘节点

    内存节点: 元数据定义都存储在内存中。内存节点有出色的性能。
    磁盘节点: 元数据定义都存储在磁盘中(单节点服务器都是磁盘节点)。磁盘节点能持久化信息。
    rabbitmq集群中至少有一个磁盘节点。当节点加入或者离开集群时,必须将变更通知到至少一个磁盘节点。
    如果集群只有一个磁盘节点,正好它崩了。此时集群还可以路由消息。但是不能创建元数据和管理用户和节点。解决方案是集群中设置两个磁盘节点。

    2. 单机集群搭建

    2.1 配置集群前,先确保第一次安装的rabbitmq服务关闭:
    rabbitmqctl stop
    
    2.2 在一台服务器上启动3个节点的集群
    RABBITMQ_NODE_PORT=5672 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15672}]" RABBITMQ_NODENAME=rabbit  rabbitmq-server -detached
    RABBITMQ_NODE_PORT=5673 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15673}]" RABBITMQ_NODENAME=rabbit_1  rabbitmq-server -detached
    RABBITMQ_NODE_PORT=5674 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15674}]" RABBITMQ_NODENAME=rabbit_2  rabbitmq-server -detached
    
    2.3 配置web UI 访问:

    rabbit

    [root@localhost ~]# rabbitmqctl -n rabbit@localhost add_user admin admin
    [root@localhost ~]# rabbitmqctl -n rabbit@localhost set_user_tags admin administrator
    [root@localhost ~]# rabbitmqctl -n rabbit@localhost set_permissions -p / admin ".*" ".*" ".*"
    

    rabbit_1

    [root@localhost ~]# rabbitmqctl -n rabbit_1 add_user admin admin
    [root@localhost ~]# rabbitmqctl -n rabbit_1 set_user_tags admin administrator
    [root@localhost ~]# rabbitmqctl -n rabbit_1 set_permissions -p / admin ".*" ".*" ".*"
    

    rabbit_2:

    [root@localhost ~]# rabbitmqctl -n rabbit_2 add_user admin admin
    [root@localhost ~]# rabbitmqctl -n rabbit_2 set_user_tags admin administrator
    [root@localhost ~]# rabbitmqctl -n rabbit_2 set_permissions -p / admin ".*" ".*" ".*"
    

    访问web页面: http://ip:15672/#/ http://ip:15673/#/ http://ip:15674/#/

    2.4 第一个rabbit为主节点(磁盘节点)
    2.5 配置rabbit_1为磁盘节点
    [root@localhost ~]# rabbitmqctl -n rabbit_1 stop_app
    [root@localhost ~]# rabbitmqctl -n rabbit_1 reset
    [root@localhost ~]# rabbitmqctl -n rabbit_1 join_cluster rabbit@localhost
    [root@localhost ~]# rabbitmqctl -n rabbit_1 start_app
    
    2.6 配置rabbit_2为RAM内存节点
    [root@localhost ~]# rabbitmqctl -n rabbit_2 stop_app
    [root@localhost ~]# rabbitmqctl -n rabbit_2 reset
    [root@localhost ~]# rabbitmqctl -n rabbit_2 join_cluster rabbit@localhost --ram
    [root@localhost ~]# rabbitmqctl -n rabbit_2 start_app
    
    2.7 查看集群状态:
    [root@localhost ~]# rabbitmqctl cluster_status
    

    得到以下结果:

    [root@localhost ~]# rabbitmqctl cluster_status
    Cluster status of node rabbit@localhost
    [{nodes,[{disc,[rabbit@localhost,rabbit_1@localhost]},
             {ram,[rabbit_2@localhost]}]},
     {running_nodes,[rabbit_2@localhost,rabbit_1@localhost,rabbit@localhost]},
     {cluster_name,<<"rabbit@localhost">>},
     {partitions,[]},
     {alarms,[{rabbit_2@localhost,[]},
              {rabbit_1@localhost,[]},
              {rabbit@localhost,[]}]}]
    

    访问web页面可以看见集群信息(两个磁盘节点,一个内存节点)

  • 相关阅读:
    关于这个 blog
    P6499 [COCI2016-2017#2] Burza 题解
    CF1172F Nauuo and Bug 题解
    CF1479D Odd Mineral Resource 题解
    CF1442E Black, White and Grey Tree 题解
    CF1442D Sum 题解
    CF1025D Recovering BST 题解
    CF1056E Check Transcription 题解
    CF1025F Disjoint Triangles 题解
    红包算法的PHP实现
  • 原文地址:https://www.cnblogs.com/monkjavaer/p/10786753.html
Copyright © 2011-2022 走看看