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

 

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

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

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

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

1.erlang安装:  

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

2.rabbitMQ安装:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
下载地址:https://dl.bintray.com/rabbitmq/rabbitmq-server-rpm/
 
[root@v01-app-rabbitmq01 opt]# wget https://dl.bintray.com/rabbitmq/rabbitmq-server-rpm/rabbitmq-server-3.6.12-1.el6.noarch.rpm
[root@v01-app-rabbitmq01 opt]# rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
[root@v01-app-rabbitmq01 opt]# rpm -ivh rabbitmq-server-3.6.12-1.el6.noarch.rpm
错误:依赖检测失败:
        socat 被 rabbitmq-server-3.6.12-1.el6.noarch 需要
解决报错:
 
[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源直接安装试试.
[root@v01-app-rabbitmq01 opt]# yum makecache -y
[root@v01-app-rabbitmq01 opt]# yum install socat -y
[root@v01-app-rabbitmq01 opt]# rpm -ivh rabbitmq-server-3.6.12-1.el6.noarch.rpm
准备中...                          ################################# [100%]
正在升级/安装...
   1:rabbitmq-server-3.6.12-1.el6     ################################# [100%]

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

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

4.安装管理插件:

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

4.添加到集群:

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

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

5.3台都查看集群状态

1
rabbitmqctl cluster_status

6.账号管理

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

7.访问WEB地址:10.100.2.10:15672

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

从集群中移除节点:

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

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

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

修改节点类型:

1
2
3
rabbitmqctl stop_app
rabbitmqctl change_cluster_node_type disc
rabbitmqctl start_app

日志文件:

1
2
/var/log/rabbitmq/rabbit@v01-app-rabbitmq01.log
/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 即复制到所有节点,包含新增节点,策略正则表达式为 “^” 表示所有匹配所有队列名称。

实例:

rabbitmqctl set_policy ha-all "^ha\." '{"ha-mode":"all"}'

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

virtual_host管理

新建virtual_host: rabbitmqctl add_vhost  xxx
撤销virtual_host: rabbitmqctl delete_vhost xxx

删除队列:

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

原文出处:

https://www.cnblogs.com/saneri/p/7798251.html

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

  1. CentOS7环境RabbitMQ集群配置管理

    CentOS7系统内核版本:3.10.0-514.26.2.el7.x86_64 一.对应主机host地址(三台主机host文件要保持一致) 10.100.2.10 v01-app-rabbitmq0 ...

  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. 1. 构建第一个SpringBoot工程

    1.File -  New - Module 2.选项的是Spring Initializr(官方的构建插件,需要联网) ,一定要选择jdk 3.填写项目基本信息 Group:组织ID,一般分为多个段 ...

  2. Vue.js教程—1.介绍和安装

    Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架.Vue 只关注视图层, 采用自底向上增量开发的设计.Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定 ...

  3. Redis命令操作简介及五种value数据类型

    转自:https://blog.csdn.net/ty4315/article/details/52050721 Redis是使用键值存储数据,key必须是字符串value支持五种数据类型,最新版本又 ...

  4. 洛谷 P1535 游荡的奶牛

    P1535 游荡的奶牛 题目描述 Searching for the very best grass, the cows are travelling about the pasture which ...

  5. J - Assign the task

    J - Assign the task HDU - 3974 思路:一眼秒思路<(* ̄▽ ̄*)/ dfs序+线段树. 通过dfs序把树上问题转化成线段上的问题.然后用线段树解决.    错因:都 ...

  6. php模拟并发

    原文: http://blog.csdn.net/zhang_xinglong/article/details/16339867 ----------------------------------- ...

  7. SQL Server 运行计划操作符具体解释(2)——串联(Concatenation )

    本文接上文:SQL Server 运行计划操作符具体解释(1)--断言(Assert) 前言: 依据计划.本文開始讲述另外一个操作符串联(Concatenation).读者能够依据这个词(中英文均可) ...

  8. int*与(int*)的差别

    晚上被问到一个C++的问题: int **pa=new int* [5]; int *pb=new (int*)[5]; 上面两行代码的差别是什么? 分析与实验结果例如以下: (1)第一行代码能够在V ...

  9. Linux命令(九)——系统监视和进程控制

    与windows系统一样,linux系统中也有很多进程在同时运行,每个进程都有一个识别码PID,它是进程的唯一识别标志. 一.进程的类型 1.系统进程 在操作系统启动后,系统环境平台运行所加载的进程, ...

  10. 每天五个java相关面试题(8)--spring篇

    首先呢,假设有从事前端开发的大神或者准备从事前端开发的小伙伴无意看到我这篇博客看到这段文字欢迎加我的QQ:[ 845415745 ].即将走入社会的菜鸟大学生有关于前端开发的职业问题想请教或者一起探讨 ...