zoukankan      html  css  js  c++  java
  • Rabbitmq-集群

    RabbitMQ本身是基于Erlang编写的,Erlang天生支持分布式(通过同步Erlang集群各节点的cookie来实现),因此不需要像Kafka那样通过ZooKeeper来实现分布式集群。
     
    1:元数据
    RabbitMQ内部有各种基础构件,包括队列、交换器、绑定、虚拟主机等,他们组成了AMQP协议消息通信的基础,而这些构件以元数据的形式存在
    2:内存节点与磁盘节点
    在集群中的每个节点,要么是内存节点,要么是磁盘节点,如果是内存节点,会将所有的元数据信息仅存储到内存中,而磁盘节点则不仅会将所有元数据存储到内存上, 还会将其持久化到磁盘。所以在搭建集群的时候,为了保证数据的安全性和性能,最好是两种节点都要有
     
     
    实验环境
     
    test1:192.168.1.17 (磁盘节点)
    test2:192.168.1.18 (内存节点)
    test3:192.168.1.19 (内存节点)
     
    一、前期准备
     
    说明:
    ①三台机器都需要安装Rabbitmq服务
    ②开启web管理界面rabbitmq-plugins enable rabbitmq_managemen
     
    1:三台机器设置hostname
    [root@test1 ~]# hostnamectl set-hostname test1
    [root@test2 ~]# hostnamectl set-hostname test2 [root@test3 ~]# hostnamectl set-hostname test3
     
    2:配置三台机器上的hosts文件
    [root@test1 ~]# vim /etc/hosts
    192.168.1.17 test1 192.168.1.18 test2 192.168.1.19 test3
     
    [root@test2 ~]# vim /etc/hosts
    192.168.1.17 test1 192.168.1.18 test2 192.168.1.19 test3
     
    [root@test3 ~]# vim /etc/hosts
    192.168.1.17 test1 192.168.1.18 test2 192.168.1.19 test3
     
    3:为了方便做实验,直接关闭selinux以及iptables(线上环境勿学)
    [root@test1 ~]# iptables -F
    [root@test1 ~]# setenforce 0
     
    [root@test2 ~]# iptables -F
    [root@test2 ~]# setenforce 0
     
    [root@test3 ~]# iptables -F
    [root@test3 ~]# setenforce 0
     
    4: 编辑cookie文件,将三台机器的该文件内容编辑为一致
    [root@test1 ~]# cat /root/.erlang.cookie
    UMHAFMJEJLZCLFCJOVII
    [root@test1 ~]# rsync -av /root/.erlang.cookie root@test2:/root/.erlang.cookie
    [root@test1 ~]# rsync -av /root/.erlang.cookie root@test3:/root/.erlang.cookie
     
    说明:修改了cookie内容,test2、test3需要重启rabbitmq服务,否则以下操作会报错


    二、分配节点

     
    ①test1为磁盘节点
    ②test2、test3为内存节点
     
    1:test2机器执行
    ①加入之前,需要暂停应用服务
    [root@test2 ~]# rabbitmqctl stop_app
    Stopping rabbit application on node rabbit@test2
     
    ②加入节点
    [root@test2 ~]# rabbitmqctl join_cluster --ram rabbit@test1
    Clustering node rabbit@test2 with rabbit@test1
     
    ③启动应用服务
    [root@test2 ~]# rabbitmqctl start_app
    Starting node rabbit@test2
     
    2:test3机器执行
    ①加入之前,需要暂停应用服务
    [root@test3 ~]# rabbitmqctl stop_app
    Stopping rabbit application on node rabbit@test3
     
    ②加入节点
    [root@test3 ~]# rabbitmqctl join_cluster --ram rabbit@test1
    Clustering node rabbit@test3 with rabbit@test1
     
    ③启动应用服务
    [root@test3 ~]# rabbitmqctl start_app
    Starting node rabbit@test3
    3:查看集群状态 [root@test3 ~]# rabbitmqctl cluster_status Cluster status of node rabbit@test3
    [{nodes,[{disc,[rabbit@test1]},{ram,[rabbit@test3,rabbit@test2]}]},
    {running_nodes,[rabbit@test2,rabbit@test1,rabbit@test3]},
    {cluster_name,<<"rabbit@test2">>},
    {partitions,[]},
    {alarms,[{rabbit@test2,[]},{rabbit@test1,[]},{rabbit@test3,[]}]}]
     
    4:web界面查看

  • 相关阅读:
    redis缓存问题解决方案
    JVM 2-垃圾收集及内存分配策略
    JVM 1-内存管理
    mysql数据库基础
    事务学习
    使用redis分布式锁来解决集群项目的定时任务冲突问题
    Spring AOP学习
    Spring IOC
    java语言基础7--线程相关类
    多重背包的二进制优化——DP
  • 原文地址:https://www.cnblogs.com/douyi/p/11761714.html
Copyright © 2011-2022 走看看