CentOS7系统内核版本:3.10.0-514.26.2.el7.x86_64

一、对应主机host地址(三台主机host文件要保持一致)

  1. 10.100.2.10 v01-app-rabbitmq01
  2. 10.100.2.11 v01-app-rabbitmq02
  3. 10.100.2.12 v01-app-rabbitmq03

二、3台主机都安装相同的软件:

1.erlang安装:  

  1. 下载地址:
  2. http://www.rabbitmq.com/releases/erlang/
  3.  
  4. [root@v01-app-rabbitmq01 opt]# wget http://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el6.x86_64.rpm
  5. [root@v01-app-rabbitmq01 opt]# rpm -ivh erlang-19.0.4-1.el6.x86_64.rpm
  6. 准备中... ################################# [100%]
  7. 正在升级/安装...
  8. 1:erlang-19.0.4-1.el6 ################################# [100%]
  9. [root@v01-app-rabbitmq01 opt]#

2.rabbitMQ安装:

  1. 下载地址:https://dl.bintray.com/rabbitmq/rabbitmq-server-rpm/
  2.  
  3. [root@v01-app-rabbitmq01 opt]# wget https://dl.bintray.com/rabbitmq/rabbitmq-server-rpm/rabbitmq-server-3.6.12-1.el6.noarch.rpm
  4. [root@v01-app-rabbitmq01 opt]# rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
  5. [root@v01-app-rabbitmq01 opt]# rpm -ivh rabbitmq-server-3.6.12-1.el6.noarch.rpm
  6. 错误:依赖检测失败:
  7. socat rabbitmq-server-3.6.12-1.el6.noarch 需要
  8. 解决报错:
  9.  
  10. [root@v01-app-rabbitmq01 opt]# wget no-cache http://www.convirture.com/repos/definitions/rhel/6.x/convirt.repo -O /etc/yum.repos.d/convirt.repo #如果下载yum源有问题,可以不适用yum源直接安装试试.
  11. [root@v01-app-rabbitmq01 opt]# yum makecache -y
  12. [root@v01-app-rabbitmq01 opt]# yum install socat -y
  13. [root@v01-app-rabbitmq01 opt]# rpm -ivh rabbitmq-server-3.6.12-1.el6.noarch.rpm
  14. 准备中... ################################# [100%]
  15. 正在升级/安装...
  16. 1:rabbitmq-server-3.6.12-1.el6 ################################# [100%]

3.启动服务和查看状态:  

  1. service rabbitmq-server start
  2. service rabbitmq-server status
  3.  
  4. #CentOS7推荐使用如下方法:
  5. systemctl start rabbitmq-server.service
  6. systemctl status rabbitmq-server.service

4.安装管理插件:

  1. web管理插件
  2. rabbitmq-plugins list #查看插件列表
  3. rabbitmq-plugins enable rabbitmq_management
  4.  
  5. 日志跟踪插件
  6. rabbitmq-plugins enable rabbitmq_tracing #rabbitmq启用trace插件
  7. rabbitmqctl trace_on #打开trace的开关
  8. rabbitmqctl trace_on -p test #打开trace的开关(test为需要日志追踪的vhost)
  9. rabbitmqctl trace_off #关闭trace的开关
  10. 安装rabbitmq_delayed_message_exchange(延时队列)
  11.  
  12. 默认插件目录:
  13. cd /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.12/plugins
  14. wget https://dl.bintray.com/rabbitmq/community-plugins/rabbitmq_delayed_message_exchange-0.0.1.ez
  15.  
  16. rabbitmq-plugins enable rabbitmq_delayed_message_exchange
  17. The following plugins have been enabled:
  18. rabbitmq_delayed_message_exchange
  19.  
  20. Applying plugin configuration to v01-app-rabbit@localhost... started 1 plugin.

至此3台上面的rabbitmq都已安装完成,并且启动正常,现在开始配置集群服务。

三、普通集群配置

1.说明:

Rabbitmq的集群是依附于erlang的集群来工作的,所以必须先构建起erlang的集群镜像。Erlang的集群中各节点是经由过程一个magic cookie来实现的,这个cookie存放在 $home/.erlang.cookie 中,我的是用rpm安装的,所以.erlang.cookie就放在/var/lib/rabbitmq中

2.复制cookie内容
erlang.cookie是erlang实现分布式的必要文件,erlang分布式的每个节点上要保持相同的.erlang.cookie文件,同时保证文件的权限是400,不然节点之间就无法通信。

打开文件然后需要先把其中的一台服务器的.erlang.cookie中的内容复制到别的机器上,最好是复制内容,因为文件权限不对的话会出现问题,在最后退出保存的时候使用wq!用!来进行强制保存即可.

也可是直接使用scp传过去,记得文件权限和用户属主属组如scp .erlang.cookie root@10.100.2.12:/tmp

3.erlang.cookie复制完成后,逐个重启节点服务:

  1. systemctl restart rabbitmq-server.service
  2. systemctl status rabbitmq-server.service

4.添加到集群:

将rabbit@v01-app-rabbitmq01作为集群主节点,在节点rabbitmq02和节点rabbitmq03上面分别执行如下命令,以加入集群中.

  1. rabbitmqctl stop_app
  2. rabbitmqctl reset
  3. rabbitmqctl join_cluster rabbit@v01-app-rabbitmq01
  4. rabbitmqctl start_app

5.3台都查看集群状态

  1. rabbitmqctl cluster_status

6.账号管理

  1. 添加账号:
  2. rabbitmqctl add_user admin admin
  3. 添加 权限tag
  4. rabbitmqctl set_user_tags admin administrator
  5.  
  6. 删除用户(删除guest用户)
  7. [root@v01-app-rabbitmq01 rabbitmq]# rabbitmqctl delete_user guest
  8. Deleting user "guest"
  9.  
  10. 修改用户的密码
  11. rabbitmqctl change_password Username Newpassword
  12.  
  13. [root@v01-app-rabbitmq01 ~]# rabbitmqctl change_password admin 0GM1aol4z8GeSZY99
  14. Changing password for user "admin"
  15.  
  16. 查看当前用户列表
  17. rabbitmqctl list_users
  18. Listing users
  19. admin [administrator]

7.访问WEB地址:10.100.2.10:15672

至此rabbitmq普通集群模式创建完成.

从集群中移除节点:

  1. [root@v01-app-rabbitmq02 rabbitmq]# rabbitmqctl stop_app
  2. Stopping rabbit application on node 'rabbit@v01-app-rabbitmq02'
  3. [root@v01-app-rabbitmq02 rabbitmq]# rabbitmqctl reset
  4. Resetting node 'rabbit@v01-app-rabbitmq02'
  5. [root@v01-app-rabbitmq02 rabbitmq]# rabbitmqctl start_app
  6. Starting node 'rabbit@v01-app-rabbitmq02'

改变集群节点类型
加入集群时指定节点类型:

  1. rabbitmqctl stop_app
  2. rabbitmqctl join_cluster --ram rabbit@v01-app-rabbitmq01
  3. rabbitmqctl start_app
  4.  
  5. --ram 指定内存节点类型,--disc指定磁盘节点类型

修改节点类型:

  1. rabbitmqctl stop_app
  2. rabbitmqctl change_cluster_node_type disc
  3. rabbitmqctl start_app

日志文件:

  1. /var/log/rabbitmq/rabbit@v01-app-rabbitmq01.log
  2. /var/log/rabbitmq/rabbit@v01-app-rabbitmq01-sasl.log  

集群镜像模式配置:

上面配置RabbitMQ默认集群模式,但并不保证队列的高可用性,尽管交换机、绑定这些可以复制到集群里的任何一个节点,但是队列内容不会复制,虽然该模式解决一部分节点压力,但队列节点宕机直接导致该队列无法使用,只能等待重启,所以要想在队列节点宕机或故障也能正常使用,就要复制队列内容到集群里的每个节点,需要创建镜像队列。

我们看看如何镜像模式来解决复制的问题,从而提高可用性.

使用Rabbit镜像功能,需要基于rabbitmq策略来实现,策略是用来控制和修改群集范围的某个vhost队列行为和Exchange行为

下面我们使用web端创建一个完整的镜像队列:

1.点击admin菜单-->右侧的Virtual Hosts选项- Add a new virtual host

2.点击admin菜单-->右侧的Policies选项-->左侧最下下边的Add / update a policy

如果有多个队列应用ha-all策略,patten就写成正则的,如下

添加一个queues队列

添加后刷新就可以看到策略已经应用了

命令行配置集群镜像模式:

使用Rabbit镜像功能,需要基于rabbitmq策略来实现,政策是用来控制和修改群集范围的某个vhost队列行为和Exchange行为

在cluster中任意节点启用策略,策略会自动同步到集群节点

  1. # rabbitmqctl set_policy -p hrsystem ha-allqueue"^" '{"ha-mode":"all"}'

这行命令在vhost名称为hrsystem创建了一个策略,策略名称为ha-allqueue, 策略模式为 all 即复制到所有节点,包含新增节点,策略正则表达式为 “^” 表示所有匹配所有队列名称。

实例:

  1. rabbitmqctl set_policy ha-all "^ha\." '{"ha-mode":"all"}'
  2.  
  3. rabbitmqctl set_policy ha-all "^SMS_BUSINESS_NOW\." '{"ha-mode":"all","ha-sync-mode":"automatic"}'

virtual_host管理

  1. 新建virtual_host: rabbitmqctl add_vhost xxx
  2. 撤销virtual_host: rabbitmqctl delete_vhost xxx

删除队列:

  1. rabbitmqctl -p /activity purge_queue activity_register

参考文档:
rabbitmq——用户管理
http://www.cnblogs.com/AloneSword/p/4200051.html
http://blog.csdn.net/njys1/article/details/53001728

集群高可用配置:
http://88250.b3log.org/rabbitmq-clustering-ha
http://www.cnblogs.com/flat_peach/archive/2013/04/07/3004008.html
http://www.cnblogs.com/wangiqngpei557/p/6158094.html

在WEB端创建镜像队列:
https://jingyan.baidu.com/article/e73e26c0c3841b24adb6a7b9.html

CentOS7环境RabbitMQ集群配置管理的更多相关文章

  1. CentOS7环境RabbitMQ集群配置管理(转载)

    CentOS7环境RabbitMQ集群配置管理(转载)   CentOS7系统内核版本:3.10.0-514.26.2.el7.x86_64 一.对应主机host地址(三台主机host文件要保持一致) ...

  2. CentOS7安装RabbitMQ集群

    实验环境 RabbitMQ 集群 server1.example.com    IP: 10.10.10.11    Node: diskserver2.example.com    IP: 10.1 ...

  3. Springboot 1.5.x 集成基于Centos7的RabbitMQ集群安装及配置

    RabbitMQ简介 RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件). RabbitMQ是一套开源(MPL)的消息队列服务软件,是由LShift提供的一 ...

  4. CentOS7安装rabbitmq集群(二进制)

    一.RabbiMQ简介 RabbiMQ是用Erang开发的,集群非常方便,因为Erlang天生就是一门分布式语言,但其本身并不支持负载均衡. RabbiMQ模式 RabbitMQ模式大概分为以下三种: ...

  5. CentOS7 搭建RabbitMQ集群 后台管理 历史消费记录查看

    简介 通过 Erlang 的分布式特性(通过 magic cookie 认证节点)进行 RabbitMQ 集群,各 RabbitMQ 服务为对等节点,即每个节点都提供服务给客户端连接,进行消息发送与接 ...

  6. 集群架构和CentOS7安装RabbitMQ集群(单机版)

    1. 集群架构 1.1 四种内部元数据 队列元数据.交换器元数据.绑定元数据.vhost元数据. 单一节点中:会将数据存储到内存,同时将持久化元数据保存到硬盘. 集群中: 存储到磁盘上.内存中. 集群 ...

  7. 在Windows中单机环境下创建RabbitMQ集群

    本文根据:http://www.360doc.com/content/15/0312/17/20874412_454622619.shtml整理而来 RabbitMQ具有很好的消息传递性能,同时又是开 ...

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

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

  9. openstack controller ha测试环境搭建记录(五)——配置rabbitmq集群

    配置rabbitmq集群的步骤非常简单,因为其本身含集群功能,参考openstack官网文档:http://docs.openstack.org/ha-guide/controller-ha-rabb ...

随机推荐

  1. flex布局知识点(阮一峰博客)

    任何一个容器都可以指定为flex布局: 行内元素也可以使用flex布局: 设为flex布局以后,子元素的float,clear,vertical-align属性都将失效: flex容器的属性: fle ...

  2. openfire维持在线状态,监听消息

    public static void testLoginStatus()throws XMPPException,InterruptedException { AccountManager accou ...

  3. Spring Boot项目配置RabbitMQ集群

    //具体参看了配置的源码 org.springframework.boot.autoconfigure.amqp.RabbitProperties //RabbitMQ单机 spring:   rab ...

  4. 关于Python中深拷贝与浅拷贝的理解(一)---概念

    import copy a = [1, 2, 3, 4, ['a', 'b']] #原始对象 b = a #赋值,传对象的引用 c = copy.copy(a) #对象拷贝,浅拷贝 d = copy. ...

  5. 5. 支持向量机(SVM)软间隔

    1. 感知机原理(Perceptron) 2. 感知机(Perceptron)基本形式和对偶形式实现 3. 支持向量机(SVM)拉格朗日对偶性(KKT) 4. 支持向量机(SVM)原理 5. 支持向量 ...

  6. myeclipse之SSH整合图文详解

    首先搭建开发环境 打开MyEclipse,新建一个web project ,然后右击项目执行如下步骤: 开启服务器无错误即搭建成功,整合后项目目录: 另附上SSH所必须的开发包:

  7. Java springboot项目的jar发布方式

    做springboot的都知道,发布方式不是war发布了,是jar发布,启动jar就可以直接运行,并且环境都是集成的. 首先,先将项目打包成jar,这里假设你的eclipse已经安装了maven插件. ...

  8. WPF打包工具

    找到一款相当不错的WPF项目的打包工具:advanced installer 工具简单易用,有破/解版,还可以把项目依赖库一起打到一个包中. 用法参考: https://www.cnblogs.com ...

  9. 编写.info文件

    概述 drupal用.info文件来存储主题和模块的metadata. 对于模块来说,.info文件用于: 为Drupal站点管理界面解析信息: 为模块的激活和卸载提供标准和需求: 提醒drupal一 ...

  10. 提高Java代码质量的Eclipse插件之Checkstyle的使用具体解释

    CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发者遵守某些编码规范的工具.它可以自己主动化代码规范检查过程.从而使得开发者从这项重要可是枯燥的任务中解脱出来. Ch ...