CentOS7环境RabbitMQ集群配置管理(转载)
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
原文出处:
CentOS7环境RabbitMQ集群配置管理(转载)的更多相关文章
- CentOS7环境RabbitMQ集群配置管理
CentOS7系统内核版本:3.10.0-514.26.2.el7.x86_64 一.对应主机host地址(三台主机host文件要保持一致) 10.100.2.10 v01-app-rabbitmq0 ...
- CentOS7安装RabbitMQ集群
实验环境 RabbitMQ 集群 server1.example.com IP: 10.10.10.11 Node: diskserver2.example.com IP: 10.1 ...
- Springboot 1.5.x 集成基于Centos7的RabbitMQ集群安装及配置
RabbitMQ简介 RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件). RabbitMQ是一套开源(MPL)的消息队列服务软件,是由LShift提供的一 ...
- CentOS7安装rabbitmq集群(二进制)
一.RabbiMQ简介 RabbiMQ是用Erang开发的,集群非常方便,因为Erlang天生就是一门分布式语言,但其本身并不支持负载均衡. RabbiMQ模式 RabbitMQ模式大概分为以下三种: ...
- CentOS7 搭建RabbitMQ集群 后台管理 历史消费记录查看
简介 通过 Erlang 的分布式特性(通过 magic cookie 认证节点)进行 RabbitMQ 集群,各 RabbitMQ 服务为对等节点,即每个节点都提供服务给客户端连接,进行消息发送与接 ...
- 集群架构和CentOS7安装RabbitMQ集群(单机版)
1. 集群架构 1.1 四种内部元数据 队列元数据.交换器元数据.绑定元数据.vhost元数据. 单一节点中:会将数据存储到内存,同时将持久化元数据保存到硬盘. 集群中: 存储到磁盘上.内存中. 集群 ...
- 在Windows中单机环境下创建RabbitMQ集群
本文根据:http://www.360doc.com/content/15/0312/17/20874412_454622619.shtml整理而来 RabbitMQ具有很好的消息传递性能,同时又是开 ...
- centos7 rabbitmq集群搭建+高可用
环境 [root@node1 ~]# cat /etc/redhat-release CentOS Linux release (Core) [root@node1 ~]# uname -r -.el ...
- openstack controller ha测试环境搭建记录(五)——配置rabbitmq集群
配置rabbitmq集群的步骤非常简单,因为其本身含集群功能,参考openstack官网文档:http://docs.openstack.org/ha-guide/controller-ha-rabb ...
随机推荐
- Vue CLI 3 中文文档
翻译文档 文档翻译全貌 前言 之前写了一篇Vue CLI 3.x 版本的简单体验,当时文档还不全,具体的使用方法并不是很清楚,大概是2月7号,收到Vue CLI 3接近Beta版的提示,作者尤雨溪也讲 ...
- vue中的slot理解和使用
最近被vue 搞得一塌糊涂,理解的比较慢,工作进度进度要求太快,需求理解不明,造成了很大的压力. 在理解Vue中的Slot的时候看了网上的相关内容,看了半天没看到明白说的是什么,然后自己就安装了vue ...
- POJ 3762 The Bonus Salary!
The Bonus Salary! Time Limit: 2000ms Memory Limit: 65536KB This problem will be judged on PKU. Origi ...
- (23)Spring Boot启动加载数据CommandLineRunner【从零开始学Spring Boot】
[Spring Boot 系列博客] )前言[从零开始学Spring Boot] : http://412887952-qq-com.iteye.com/blog/2291496 )spring bo ...
- [bzoj1500][NOI2005]维修数列_非旋转Treap
维修数列 bzoj-1500 NOI-2005 题目大意:给定n个数,m个操作,支持:在指定位置插入一段数:删除一个数:区间修改:区间翻转.查询:区间和:全局最大子序列. 注释:$1\le n_{ma ...
- 互联网服务器的实现过程需要考虑哪些安全问题 & 加解密及哈希知识点
http://www.cnblogs.com/charlesblc/p/6341265.html 其中的一篇. 参考 https://zhuanlan.zhihu.com/p/20336461?ref ...
- UVA - 348Optimal Array Multiplication Sequence(递推)
id=19208">题目:Optimal Array Multiplication Sequence 题目大意:给出N个矩阵相乘.求这些矩阵相乘乘法次数最少的顺序. 解题思路:矩阵相乘 ...
- ruby for in 循环中改变i的值无效
ruby for in 循环中改变i的值无效 for j in 1..5 puts "#{j}hehe" j = j + 2 #break end 在循环中,使用j = j + 2 ...
- Openstack针对nova,cinder,glance使用ceph的虚拟机创建机制优化
今天在开源中国社区看到有例如以下一个问题: 已经成功把ceph作为cinder和 glance的后端,可是假设作为nova的后端,虚拟机启动速度非常慢,网上查了一下是由于openstack创建虚 ...
- SVNserver搭建和使用(二)
上一篇介绍了VisualSVN Server和TortoiseSVN的下载,安装,汉化.这篇介绍一下怎样使用VisualSVN Server建立版本号库,以及TortoiseSVN的使用. 首先打开V ...