一、RabbitMQ安装

1.1、下载Erlang的rpm包

  RabbitMQ是Erlang语言编写,所以Erang环境必须要有,注:Erlang环境一定要与RabbitMQ版本匹配:https://www.rabbitmq.com/which-erlang.html

  Erlang下载地址:https://www.rabbitmq.com/releases/erlang/(根据自身需求及匹配关系,下载对应rpm包)

请一定要注意 erlang的版本要跟 rabbitmq的版本要对应一致,不然会出现各种异常的错误。

1.2、下载RabbitMQ的rpm包

  RabbitMQ下载地址:https://www.rabbitmq.com/releases/rabbitmq-server/(根据自身需求及匹配关系,下载对应rpm包)

1.3、下载socat的rpm包

  rabbitmq安装依赖于socat,所以需要下载socat。

  socat下载地址:http://repo.iotti.biz/CentOS/6/x86_64/socat-1.7.3.2-1.el6.lux.x86_64.rpm

1.4、需要安装logrotate 

yum -y install logrotate

1.5、分别安装Erlang、Socat、RabbitMQ(一定按照顺序!)

一定按照以下顺序安装

[root@A ~]#rpm -ivh erlang-18.3-1.el6.x86_64.rpm

[root@A ~]#rpm -ivh socat-1.7.3.2-1.el6.lux.x86_64.rpm

[root@A ~]#rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm

二、配置Rabbitmq

2.1、配置rabbitmq

如果仅仅是允许guest账号访问的话,则需要做以下操作:

vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app

2.2、启用web管理插件

[root@A ~]# rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:
amqp_client
cowlib
cowboy
rabbitmq_web_dispatch
rabbitmq_management_agent
rabbitmq_management Applying plugin configuration to rabbit@bigdata-arch-client11... started 6 plugins.

2.3、启动RabbitMQ

[root@A ~]cd /var/lib/rabbitmq/

[root@A ~]chown -R rabbitmq:rabbitmq .erlang.cookie

[root@A ~]cd /usr/lib/rabbitmq/bin

[root@A ~]./rabbitmq-server start  #centos 7.0=>/bin/systemctl start rabbitmq-server.service

访问浏览器:http://ip地址:15672/,出现以下界面说明安装完成!默认用户名和密码都是:guest

三、配置RabbitMQ的账号

1、创建账号

rabbitmqctl add_user 用户名   密码

[root@A ~]# rabbitmqctl add_user admin admin
Creating user "admin"

如想修改密码:

rabbitmqctl change_password 用户名 密码

[root@A ~]# rabbitmqctl change_password  admin test.1234
Creating user "admin"

2、将admin账号赋予管理员权限

rabbitmqctl set_user_tags 用户名  administrator

[root@A ~]# rabbitmqctl set_user_tags admin administrator
Setting tags for user "admin" to [administrator]

3、设置权限

rabbitmqctl  set_permissions  -p  '/'  用户名'.' '.' '.'

[root@A ~]# rabbitmqctl  set_permissions  -p  '/'  admin '.' '.' '.'
Setting permissions for user "admin" in vhost "/"

四、配置RabbitMQ集群

前提:我们这里会展示如何配置一个RabbitMQ集群,要保证三台服务器的IP能通。而且特别强调的是三台机器的服务都要配置上hosts:

[root@A ~]vim  /etc/hosts
10.55.202.181 rabbitmqserver01 #第1台机器的 ip地址 主机名
10.55.202.182 rabbitmqserver02 #第2台机器的 ip地址 主机名
10.55.202.183 rabbitmqserver03 #第3台机器的 ip地址 主机名

1、安装好RabbitMQ

安装方法请按照上文描述

2、保证相同的Erlang Cookie

我这里是把rabbitmqserver01上的.erlang.cookie以scp的方式拷贝到另外两台机器。(如果mq没有启动过是没有erlang.cookie的)

[root@rabbitmqserver01 ~]# scp /var/lib/rabbitmq/.erlang.cookie root@rabbitmqserver02:/var/lib/rabbitmq
[root@rabbitmqserver01 ~]# scp /var/lib/rabbitmq/.erlang.cookie root@rabbitmqserver03:/var/lib/rabbitmq

3、 运行各个RabbitMQ节点

#systemctl restart rabbitmq-server.service
#rabbitmqctl stop
#rabbitmq-server -detached

4、运行成功后可以查看一下节点当前的集群状态,当然这个时候还没有组成集群。

[root@rabbitmqserver01 ~]# rabbitmqctl cluster_status
[root@rabbitmqserver02 ~]# rabbitmqctl cluster_status
[root@rabbitmqserver03 ~]# rabbitmqctl cluster_status

5、将节点连接成群

rabbitmqserver02:加入到集群rabbit@rabbitmqserver01

[root@rabbitmqserver02 ~]#rabbitmqctl stop_app
[root@rabbitmqserver02 ~]#rabbitmqctl join_cluster --ram rabbit@rabbitmqserver01
[root@rabbitmqserver02 ~]#rabbitmqctl start_app

rabbitmqserver03: 加入到集群rabbit@rabbitmqserver02

[root@rabbitmqserver03 ~]#rabbitmqctl stop_app
[root@rabbitmqserver03 ~]#rabbitmqctl join_cluster --ram rabbit@rabbitmqserver01
[root@rabbitmqserver03 ~]#rabbitmqctl start_app

A:不用加入自己

查看集群状态,我们可以在任意一台机器上查看,我们选择在client09上看

[root@A ~]# rabbitmqctl cluster_status

Cluster status of node rabbit@A
[{nodes,[{disc,[rabbit@rabbitmqserver01,rabbit@rabbitmqserver02,rabbit@rabbitmqserver03]}]},
{running_nodes,[rabbit@rabbitmqserver03,rabbit@rabbitmqserver02,rabbit@rabbitmqserver01]},
{cluster_name,<<"rabbit@rabbitmqserver01">>},
{partitions,[]},
{alarms,[{rabbit@rabbitmqserver03,[]},{rabbit@rabbitmqserver02,[]},{rabbit@rabbitmqserver01,[]}]}]

这边需要强调的是,三台机器中必须有一台是磁盘模式,可以允许三台都是磁盘模式。

rabbitmqctl join_cluster --ram rabbit@rabbitmqserver01  => --ram 表示是内存模式
rabbitmqctl join_cluster rabbit@rabbitmqserver01 => 表示是磁盘模式

如果要切换模式的话:

rabbitmqctl change_cluster_node_type {disc|ram}

可以看到,3个实例已经组成了集群:

如果想删除节点的话:

rabbitmqctl  -n rabbit@shtw-rabbitmqserver01 forget_cluster_node rabbit@shtw-rabbitmqserver03

Linux下RabbitMQ的集群的更多相关文章

  1. Linux下搭建tomcat集群全记录(转)

    本文将讲述如何在Linux下搭建tomcat集群,以及搭建过程中可能的遇到的问题和解决方法.为简单起见,本文演示搭建的集群只有两个tomact节点外加一个apache组成,三者将安装在同一机器上:ap ...

  2. linux下配置tomcat集群的负载均衡

    linux下配置tomcat集群的负载均衡 一.首先了解下与集群相关的几个概念集群:集群是一组协同工作的服务实体,用以提供比单一服务实体更具扩展性与可用性的服务平台.在客户端看来,一个集群就象是一个服 ...

  3. Linux下搭建tomcat集群全记录

    (转) Linux下搭建tomcat集群全记录 2011-10-12 10:23 6133人阅读 评论(1) 收藏 举报 tomcatlinuxapacheinterceptorsession集群 1 ...

  4. 【Oracle 集群】Linux下Oracle RAC集群搭建之Oracle DataBase安装(八)

    Oracle 11G RAC数据库安装(八) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总 ...

  5. 【Oracle 集群】Linux下Oracle RAC集群搭建之基本测试与使用(九)

    Oracle 11G RAC数据库安装(九) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总 ...

  6. Linux下安装zookeeper集群

    首先,准备三台Linux虚拟机 三台机器 centos01 :192.168.1.168(lxs001)   centos03 :192.168.1.178(lxs003)   centos03 :1 ...

  7. Linux下搭建mpi集群(ubuntu下用虚拟机测试)

    一 建立SSH连接(无密码登陆) 1 SSH连接的简单介绍 SSH 为 Secure Shell 的缩写,中文翻译为安全外壳协议,建立在应用层,是一种远程连接安全协议.传统的telnet,pop,ft ...

  8. Linux 下配置zookeeper集群

    我们首先准备三台服务器,IP地址分别如下(前提是要先安装JDK) 192.168.100.101 192.168.100.102 192.168.100.103 1.配置主机名到IP地址的映射(此步骤 ...

  9. 170711、Linux下搭建MySQL集群

    一.MySQL集群简介 1.什么是MySQL集群 MySQL集群是一个无共享的(shared-nothing).分布式节点架构的存储方案,其目的是提供容错性和高性能. 数据更新使用读已提交隔离级别(r ...

随机推荐

  1. 集合并卷积的三种求法(分治乘法,快速莫比乌斯变换(FMT),快速沃尔什变换(FWT))

    也许更好的阅读体验 本文主要内容是对武汉市第二中学吕凯风同学的论文<集合幂级数的性质与应用及其快速算法>的理解 定义 集合幂级数 为了更方便的研究集合的卷积,引入集合幂级数的概念 集合幂级 ...

  2. Educational Codeforces Round 65 (Div. 2)

    A.前n-10个有8即合法. #include<cstdio> #include<cstring> #include<iostream> #include<a ...

  3. 解决阿里云OSS The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint的办法

    以前有一个上海节点的存储包,一直使用正常.最近购买了一个全国的存储包,发现在上传文件的时候有这个问题. 尝试了很多办法,还提交了工单,都没有解决. 最后解决办法如下: 1.在阿里云OSS管理控制台下, ...

  4. sql server中:isnull(列名,0) 和isnull(列名,0)<>0 的区别

    1.isnull(参数1,参数2),判断参数1是否为NULL,如果是,返回参数2,否则返回参数1. 2.isnull(列名,0),isnull()函数是用来判断列名是否为null,如果为NUll,则返 ...

  5. ASP.NET Core中防跨站点请求伪造

    CSRF(Cross-site request forgery)利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的. 例子 在某个 ...

  6. git 丢弃本地代码

    git 丢弃本地代码 1.还未将变更加入到暂存区,即未执行git add 命令前可以使用git checkout 命令来撤销修改:git checkout -- rainbow.txt start.t ...

  7. 论文阅读之FaceNet: A Unified Embedding for Face Recognition and Clustering

    名称:FaceNet: A Unified Embedding for Face Recognition and Clustering 时间:2015.04.13 来源:CVPR 2015       ...

  8. JSON--stringify() 和 JSON--parse() 方法

    序列化:stringify()将JavaScript对象序列号为JSON字符串反序列化:parse()将JSON字符串解析为原生JavaScript值 序列化选项:JSON.stringify()除了 ...

  9. css常用代码大全

    css常用代码大全,html+css代码 html+css可以很方便的进行网页的排版布局,还能减少很多不必要的代码. 一.文本设置1.font-size: 字号参数 2.font-style: 字体格 ...

  10. jdk代理与cglib代理

    1. jdk静态代理 jdk静态代理主要使用硬编码实现.他通过对在代理类中持有委托类的引用,来打到在委托类方法执行前和执行后进行处理,实现简单,容易理解. 代码如下: 1.业务逻辑接口 package ...