实验环境:

操作系统为 Centos 7.2

IP hostName

192.168.190.132 node132

192.168.190.139 node139

192.168.190.140 node140

 
 

RabbitMQ相关端口

 
 

  • 4369 (epmd)
  • 5672, 5671 (AMQP 0-9-1 and 1.0 without and with TLS)
  • 25672. This port used by Erlang distribution for inter-node and CLI tools communication and is allocated from a dynamic range (limited to a single port by default, computed as AMQP port + 20000). Seenetworking guide for details.
  • 15672 (if management plugin is enabled)
  • 61613, 61614 (if STOMP is enabled)
  • 1883, 8883 (if MQTT is enabled)

     
     

    相应端口开启防火墙设置

     
     

     
     

    添加EPEL源

     
     

    [root@node139 ~]# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

    Retrieving https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

    warning: /var/tmp/rpm-tmp.2hDPSr: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY

    Preparing... ################################# [100%]

    Updating / installing...

    1:epel-release-7-8 ################################# [100%]

     
     

    添加Erlang源

     
     

    [root@node139 ~]# rpm -Uvh http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm

    Retrieving http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm

    Preparing... ################################# [100%]

    Updating / installing...

    1:erlang-solutions-1.0-1 ################################# [100%]

    --2016-11-29 06:34:38-- http://packages.erlang-solutions.com/rpm/centos/erlang_solutions.repo

    Resolving packages.erlang-solutions.com (packages.erlang-solutions.com)... 31.172.186.53

    Connecting to packages.erlang-solutions.com (packages.erlang-solutions.com)|31.172.186.53|:80... connected.

    HTTP request sent, awaiting response... 200 OK

    Length: 245

    Saving to: 'erlang_solutions.repo'

     
     

    100%[==========================================================================>] 245 --.-K/s in 0s

     
     

    2016-11-29 06:34:39 (27.5 MB/s) - 'erlang_solutions.repo' saved [245/245]

     
     

    安装RabbitMQ

    软件版本:http://www.rabbitmq.com/releases/rabbitmq-server

     
     

    [root@node139 ~]# wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm

    [root@node139 ~]# rpm --import https://www.rabbitmq.com/rabbitmq-signing-key-public.asc

    [root@node139 ~]# yum install rabbitmq-server-3.6.6-1.el7.noarch.rpm

     
     

    启动服务

    [root@node139 ~]# systemctl enable rabbitmq-server.service

    [root@node139 ~]# systemctl start rabbitmq-server.service

     
     

    启用RabbitMQ监控插件

    [root@node139 ~]# rabbitmq-plugins enable rabbitmq_management

    The following plugins have been enabled:

    mochiweb

    webmachine

    rabbitmq_web_dispatch

    amqp_client

    rabbitmq_management_agent

    rabbitmq_management

     
     

    Applying plugin configuration to rabbit@node139... started 6 plugins.

    [root@node139 ~]# netstat -apn | grep 15672

    tcp 0 0 0.0.0.0:15672 0.0.0.0:* LISTEN 4119/beam.smp

     
     

    RabbitMQ用户管理

     
     

    添加用户(用户名root,密码admin)

    [root@node139 ~]# rabbitmqctl add_user admin admin

     
     

    设置用户角色(设置admin用户为管理员角色)

    [root@node139 ~]# rabbitmqctl set_user_tags admin administrator

    Setting tags for user "admin" to [administrator] ...

     
     

    设置用户权限(设置admin用户配置、写、读的权限)

    [root@node139 ~]# rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

    Setting permissions for user "admin" in vhost "/" ...

     
     

    删除用户(删除guest用户)

    [root@node139 ~]# rabbitmqctl delete_user guest

     
     

     
     

    RabbitMQ集群配置

    集群配置在单机配置完成的基础上进行

    以下以node140为例,node132需要做同样的操作

    • 添加/etc/hosts条目

    在node132、node139、node140里的/etc/hosts文件中分别添加:

    192.168.190.132 node132
    192.168.190.139 node139
    192.168.190.140 node140

     
     

    • 设置每个节点Cookie

    的权限。所以必须保证各节点cookie保持一致,否则节点之间就无法通信

     
     

    [root@node140 /]# echo -n "AZVOCZYZZBVFLBPTBXU" > /var/lib/rabbitmq/.erlang.cookie

    [root@node140 ~]# chown rabbitmq:root /var/lib/rabbitmq/.erlang.cookie

    [root@node140 /]# chmod 600 /var/lib/rabbitmq/.erlang.cookie

    [root@node140 /]# cat /var/lib/rabbitmq/.erlang.cookie

    AZVOCZYZZBVFLBPTBXU

     
     

    启动服务

    [root@node140 ~]# systemctl start rabbitmq-server.service

    [root@node140 ~]# rabbitmq-server -detached

     
     

    开通防火墙

    [root@node140 ~]# firewall-cmd --permanent --add-port={4369/tcp,25672/tcp}

    success

    [root@node140 ~]# firewall-cmd --reload

    success

     
     

  • 加入集群

    默认是磁盘节点,如果是内存节点的话,需要加--ram参数

     
     

    [root@node140 ~]# rabbitmqctl stop_app

    Stopping node rabbit@node140 ...

    [root@node140 ~]# rabbitmqctl join_cluster rabbit@node139

    Clustering node rabbit@node140 with rabbit@node139 ...

    [root@node140 ~]# rabbitmqctl start_app

    Starting node rabbit@node140 ...

  • 设置镜像策略

     
     

    [root@node140 ~]# rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'

    Setting policy "ha-all" for pattern "^" to "{\"ha-mode\":\"all\",\"ha-sync-mode\":\"automatic\"}" with priority "0" …

     
     

    启用RabbitMQ监控插件

    cluster搭建起来后若在web管理工具中rabbitmq_management的Overview的Nodes部分看到"Node statistics not available"的信息,说明在该节点上web管理插件还未启用。

    [root@node140 ~]# rabbitmq-plugins enable rabbitmq_management

     
     

    集群配置好后,可以在 RabbitMQ 任意节点上执行下面的命令来查看是否集群配置成功。

    [root@node140 ~]# rabbitmqctl cluster_status

     
     

    其它节点需要做同样的操作

     
     

     
     

    登录站点http://192.168.190.139:15672/

     
     

     
     

     
     

     
     

     
     

    参考网址:http://www.rabbitmq.com/clustering.html

    安装中遇到的问题:

    这个/var/lib/rabbitmq/.erlang.cookie文件需要修改文件所有者和文件的权限为rw,否则rabbitmq服务无法启动;

     
     

     
     

     
     

     
     

     
     

     
     

     
     

     
     

     
     

     
     

     
     

     
     

     
     

     
     

RabbitMq 集群搭建的更多相关文章

  1. RabbitMQ集群搭建和使用

    一.环境准备 1.选择RabbitMQ的版本 http://www.rabbitmq.com/changelog.html 注: 不同版本的Linux选择的RabbitMQ版本也不同,参照 http: ...

  2. centos7 rabbitmq集群搭建+高可用

    环境 [root@node1 ~]# cat /etc/redhat-release CentOS Linux release (Core) [root@node1 ~]# uname -r -.el ...

  3. CentOS 7 下 RabbitMQ 集群搭建

    环境 10.0.0.20 node1 10.0.0.21 node2 10.0.0.22 node3 搭建(在所有节点执行) 添加EPEL源 [root@node1 ~]# rpm -Uvh http ...

  4. rabbitmq集群搭建方法简介(测试机linux centos)【转】

    本文将介绍四台机器搭建rabbitmq集群: rabbitmq IP和主机名(每台机器已安装RabbitMQ 3.5.6, Erlang 18.1) 192.168.87.73 localhost73 ...

  5. rabbitmq集群搭建,镜像队列搭建

    原文地址:https://www.jianshu.com/p/11963564dd3d 教你如何从0开始搭建rabbitmq集群 一.准备工作 1.三台centos虚拟机 2.三台虚拟机都安装了doc ...

  6. RabbitMQ集群搭建

    准备三个节点,系统为CentOS7 Node IP rabbitmq01 172.50.0.64 rabbitmq02 172.50.0.65 rabbitmq03 172.50.0.66 这里把no ...

  7. rabbitmq+haproxy+keepalived实现高可用集群搭建

    项目需要搭建rabbitmq的高可用集群,最近在学习搭建过程,在这里记录下可以跟大家一起互相交流(这里只是记录了学习之后自己的搭建过程,许多原理的东西没有细说). 搭建环境 CentOS7 64位 R ...

  8. RabbitMQ的安装及集群搭建方法

    RabbitMQ安装 1 安装erlang 下载地址:http://www.erlang.org/downloads 博主这里采用的是otp_src_19.1.tar.gz (200MB+) [roo ...

  9. 搭建rabbitmq集群

    查看rabbitmq日志文件 开启web管理工具 [root@controller rabbitmq]# rabbitmq-plugins list [root@controller rabbitmq ...

随机推荐

  1. [原创]关于ORACLE的使用入门

    Oracle===============================数据库:Oracle------>甲骨文(Oracle) 49+%DB2---------->IBM 49+%Sq ...

  2. sublime text添加snippet

    下面的${1:this}格式的会在tab键下一次切换选中 <snippet> <content><![CDATA[Hello, ${1:this} is a ${2:sn ...

  3. JavaScript权威设计--JavaScript词法结构(简要学习笔记二)

    1.字符集 JavaScript是用Unicode字符集编写的 2.区分大小写 html不区分大小写,xhtml区分大小写 如:html中onclick可以写成Onclick 但是js中必须写成onc ...

  4. C#-正则,常用几种数据解析-端午快乐

    在等待几个小时就是端午节了,这里预祝各位节日快乐. 这里分享的是几个在C#中常用的正则解析数据写法,其实就是Regex类,至于正则的匹配格式,请仔细阅读正则的api文档,此处不具体说明,谢谢. 开始吧 ...

  5. java进阶之反射:反射基础之如何获取一个类以及如何获取这个类的所有属性和方法(2)

    当我们知道一个类的对象,或者知道一个类的路径,或者指导这个类的名称的时候我们可以获取到这个类的类对象 当我们仅仅知道一个类的类对象的时候我们依然无法操作这个类,因为我们不知道这个类的属性,类的方法.那 ...

  6. IOS 封装功能和逻辑思想

    在ios开发中,难免会用到helper的思想.这篇就简单讲解下关于helper的简单实用方法. 假设我们要做一个这样的界面: 会议分为四种情况: 未召开 正在召开 已结束 已取消 再看看逻辑关系: 编 ...

  7. 【分布式】Zookeeper请求处理

    一.前言 在前面学习了Zookeeper中服务器的三种角色及其之间的通信,接着学习对于客户端的一次请求,Zookeeper是如何进行处理的. 二.请求处理 2.1 会话创建请求 Zookeeper服务 ...

  8. c#编程基础之字符串函数

    c#常用的字符串函数 例一: 获取字符串的大小写函数 ToLower():得到字符串的小写形式 ToUpper():得到字符串的大写形式 注意: 字符串时不可变的,所以这些函数都不会直接改变字符串的内 ...

  9. PHP实现删除数组中的特定元素

    方法1: <?php $arr1 = array(1,3, 5,7,8); $key = array_search(3, $arr1); if ($key !== false) array_sp ...

  10. Linux 系统命令笔记

    前言 翻出N年前学习笔记,感觉还有点用,放到博客备忘,自己查看用. 一. 系统命令笔记 1.系统 % /etc/issue           # 查看操作系统版本  %          # 观察系 ...