0、首先按照http://www.cnblogs.com/zhjh256/p/5922562.html在至少两个节点安装好(不建议单机,没什么意义)

1、先了解rabbitmq集群架构,http://www.cnblogs.com/zhjh256/p/6368288.html

2、vi /etc/hosts 在两个节点分别添加别名,互ping对方,确保通。确保防火墙没有开或者相应的端口开放

3、设置erlang集群通信用的cookie,通常每种集群都有一种机制,可能是共享磁盘比如rac或者session比如tomcat亦或是token比如分布式系统

RabbitMQ节点之间和命令行工具 (e.g. rabbitmqctl)是使用Cookie互通的,Cookie是一组随机的数字+字母的字符串。当RabbitMQ服务器启动的时候,Erlang VM会自动创建一个随机内容的Cookie文件。如果是通过rpm安装RabbitMQ的话,Erlang Cookie 文件在/var/lib/rabbitmq/.erlang.cookie。如果是通过源码或者二进制解压安装的RabbitMQ,Erlang Cookie文件$HOME/.erlang.cookie。确保组成集群的每个erlang节点的cookie相同。

[root@dev3 ~]# scp .erlang.cookie devel2:/root/
The authenticity of host 'devel2 (172.18.30.192)' can't be established.
RSA key fingerprint is e3:76:d5:eb:d3:7d:86:43:de:bc:5d:31:cb:21:0d:d2.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'devel2,172.18.30.192' (RSA) to the list of known hosts.
root@devel2's password:
.erlang.cookie 100% 20 0.0KB/s 00:00
[root@dev3 ~]# cat .erlang.cookie
YQSISAMKQWVOZMRQZJDV

[root@dev3 ~]# chmod 400 .erlang.cookie

# 必须确保.erlang.cookie的权限位400,否则启动的时候会报“{error_logger,{{2017,2,27},{20,11,25}},"Cookie file /root/.erlang.cookie must be accessible by owner only",[]}”

[root@devel2 ~]# chmod 400 .erlang.cookie

4、后台模式启动rabbitmq

[root@dev3 ~]# rabbitmq-server -detached
Warning: PID file not written; -detached was passed.

[root@devel2 ~]# rabbitmq-server -detached
Warning: PID file not written; -detached was passed.
[root@devel2 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@devel2 ...
[{nodes,[{disc,[rabbit@devel2]}]},
{running_nodes,[rabbit@devel2]},
{cluster_name,<<"rabbit@devel2">>},
{partitions,[]}]
[root@devel2 ~]# rabbitmqctl stop_app
Stopping node rabbit@devel2 ...

[root@devel2 ~]# rabbitmqctl join_cluster rabbit@dev3
Clustering node rabbit@devel2 with rabbit@dev3 ...
[root@devel2 ~]# rabbitmqctl start_app
Starting node rabbit@devel2 ...
[root@devel2 ~]# rabbitmqctl cluster_status  ##默认都是disk模式,如果要ram模式,则加上--ram选项
Cluster status of node rabbit@devel2 ...
[{nodes,[{disc,[rabbit@dev3,rabbit@devel2]}]},
{running_nodes,[rabbit@dev3,rabbit@devel2]},
{cluster_name,<<"rabbit@dev3">>},
{partitions,[]}]

5、启用控制台插件

[root@devel2 ~]# rabbitmq-plugins list
Configured: E = explicitly enabled; e = implicitly enabled
| Status: * = running on rabbit@devel2
|/
[ ] amqp_client 3.5.7
[ ] cowboy 0.5.0-rmq3.5.7-git4b93c2d
[ ] mochiweb 2.7.0-rmq3.5.7-git680dba8
[ ] rabbitmq_amqp1_0 3.5.7
[ ] rabbitmq_auth_backend_ldap 3.5.7
[ ] rabbitmq_auth_mechanism_ssl 3.5.7
[ ] rabbitmq_consistent_hash_exchange 3.5.7
[ ] rabbitmq_federation 3.5.7
[ ] rabbitmq_federation_management 3.5.7
[ ] rabbitmq_management 3.5.7
[ ] rabbitmq_management_agent 3.5.7
[ ] rabbitmq_management_visualiser 3.5.7
[ ] rabbitmq_mqtt 3.5.7
[ ] rabbitmq_shovel 3.5.7
[ ] rabbitmq_shovel_management 3.5.7
[ ] rabbitmq_stomp 3.5.7
[ ] rabbitmq_test 3.5.7
[ ] rabbitmq_tracing 3.5.7
[ ] rabbitmq_web_dispatch 3.5.7
[ ] rabbitmq_web_stomp 3.5.7
[ ] rabbitmq_web_stomp_examples 3.5.7
[ ] sockjs 0.3.4-rmq3.5.7-git3132eb9
[ ] webmachine 1.10.3-rmq3.5.7-gite9359c7
[root@devel2 ~]# 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@devel2... started 6 plugins.

6、创建用户。默认情况下,内置的guest只能通过localhost访问,通常我们都是在linux服务器上安装rabbitmq,在本地客户端操作,所以需要创建管理用户。

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

[root@devel2 ~]# rabbitmqctl set_permissions -p / admin '.*' '.*' '.*'  ##仅仅设置权限是不足以登录服务器进行管理的,还需要为用户分配user_tag,简单理解就是角色
Setting permissions for user "admin" in vhost "/" ...

当前有如下tag:

[root@devel2 ~]# rabbitmqctl set_user_tags admin administrator
Setting tags for user "admin" to [administrator] ...
[root@devel2 ~]# rabbitmqctl add_user monitor monitor
Creating user "monitor" ...
[root@devel2 ~]# rabbitmqctl set_user_tags monitor monitoring
Setting tags for user "monitor" to [monitoring] ...

7、登录控制台查看状态

每个节点都需要启用manage插件才能显示统计信息。

8、设置mirror,一般来说应该在设计阶段或者开发早期根据应用模块或者子系统规划exchange/queue的命名规范,这样便于从维护的角度进行统一处理,而不是将MQ作为一个临时补充。

比如,设置sys开头的队列复制到所有节点:

[root@dev3 ~]# rabbitmqctl set_policy -p / ha-allqueue "^sys" '{"ha-mode":"all"}'
Setting policy "ha-allqueue" for pattern "^sys" to "{\"ha-mode\":\"all\"}" with priority "0" ...

9、测试某节点宕机。

[root@dev3 ~]# kill -9 19496

宕机期间消费消息/并生成新的消息:

重启宕机的节点:

[root@dev3 ~]# rabbitmq-server -detached  #因为已经是cluster的一部分,所以就不需要重新join了,启动的时候会自动join。否则会出错如下:

[root@dev3 ~]# rabbitmqctl join_cluster rabbit@devel2
Clustering node rabbit@dev3 with rabbit@devel2 ...
{"init terminating in do_boot",{function_clause,[{rabbit_ctl_misc,print_cmd_result,[join_cluster,already_member],[]},{rabbit_cli,main,3,[]},{init,start_it,1,[]},{init,start_em,1,[]}]}}Crash dump is being written to: erl_crash.dump...done
init terminating in do_boot ()

启动后,可以发现有些queue没有同步,需要人工进行同步。

同步后可见消息都是正确的,已经消费的会删掉,新增的会拷贝过去。

10、如果某些时候因为过去时间较长、消息较多,不想同步,而是作为新节点重新join,怎么办?

可以在目标节点执行

rabbitmqctl reset

然后重新执行加入节点的步骤即可。

11、rabbitmq集群日常维护的注意事项和故障恢复可参考rabbitmq集群故障恢复详解。

转载于:https://www.cnblogs.com/zhjh256/p/6473574.html

rabbitmq集群安装与配置(故障恢复)相关推荐

  1. RabbitMQ集群安装配置+HAproxy+Keepalived高可用

    RabbitMQ集群安装配置+HAproxy+Keepalived高可用 转自:https://www.linuxidc.com/Linux/2016-10/136492.htm rabbitmq 集 ...

  2. rabbitmq集群部署及配置

    rabbitmq集群部署及配置 文章目录 rabbitmq集群部署及配置 前言 一.原理介绍 二.部署方案 1.环境介绍 2.部署过程 小结 前言 消息中间件rabbitmq,一般以集群方式部署,主要 ...

  3. RabbitMQ集群安装

    RabbitMQ集群安装 在预读次教程前,请仔细阅读**<RabbitMQ单机版安装>** 集群节点说明,本次安装的集群包含3个节点, Rabbit01(11.1.202.207). Ra ...

  4. 基于zookeeper(集群)+LevelDB的ActiveMq高可用集群安装、配置、测试

    Linux 环境 zookeeper集群安装.配置.测试https://blog.csdn.net/weixin_40816738/article/details/100576259 MQ集群部署规划 ...

  5. Hadoop集群安装及其配置(三台虚拟机)

    Hadoop集群安装及其配置(三台虚拟机) 利安装配置前准备--安装虚拟机 利用cat查看配置文件 修改主机名称 配置IP映射 配置网卡设备的mac地址 Xshell的安装与配置 ssh的配置 JDK ...

  6. MongoDB的集群安装搭建配置

    1. MongoDB介绍 1.1.MongoDB 简介 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.具有以下特点: 面向集合文档型存储,易于存储对象类型的数据, 以 ...

  7. RabbitMQ 集群部署及配置

    文章目录 一.rabbitmq简述 Rabbitmq 有 3 种模式,但集群模式是 2 种 二.环境准备及软件安装 修改 hosts 文件 (3 台) 三.账号配置 四.启动 rabbitmq 内置 ...

  8. KafKa集群安装、配置

    一.事前准备 1.kafka官网:http://kafka.apache.org/downloads. 2.选择使用版本下载. 3.kafka集群环境准备:(linux) 192.168.145.12 ...

  9. Hadoop集群安装与配置

    转载自Hadoop集群安装配置教程_Hadoop2.6.0_Ubuntu/CentOS 本教程讲述如何配置 Hadoop 集群,默认读者已经掌握了 Hadoop 的单机伪分布式配置,否则请先查看Had ...

最新文章

  1. c枚举类型enum例题_一篇文章让你详细了解Java中Enum枚举类的使用
  2. Python之路【第八篇】python实现线程池
  3. golang红包算法
  4. STM32的ADC采集的引脚汇总
  5. CSS3学习笔记-技术提示
  6. 简单的C#字符串数组转字符串方法
  7. 通过Spannable对象设置textview的样式
  8. PHP 错误与异常 笔记与总结(6)将错误日志保存在系统日志中
  9. linux之安装Apache服务
  10. 使用pyenv和virtualenv搭建python虚拟环境
  11. [AndroidO] [RK3399] -- CH341驱动移植
  12. 王垠受邀面试阿里P9,被P10面跪后网上怒发文,惨打325的P10赵海平回应了
  13. 笔记本电脑微信视频对方却听不到声音
  14. html文本框拖动全选,html文本框常见操作技巧
  15. HOJ 1568 Fibonacci(对数,数列通项公式)
  16. 区块链安全分析:安全是重中之重,需要各方企业共同守护 | 新加坡Meetup
  17. 汉锐4K广播专业会议摄像机
  18. 到底什么是Web2.0
  19. 京峰linux课程目录,京峰教育 Linux编程Shell从入门到精通视频教程
  20. DC-DC(直流-直流)变换器

热门文章

  1. 境外服务器停机:原因、影响以及如何预防
  2. 项目经理如何成功地分配任务?| 每天成就更大成功
  3. AIO-3399J重新安装Ubuntu系统-刷新固件
  4. 使用汽车VIN码识别的好处有哪些
  5. 为什么我Redis中key惊现“乱码”?
  6. eclipes代码提示及防空格自动补全
  7. linux 本地项目文件挂载到虚拟机上面,不用在本地编辑后再上传到虚拟机上,实现高效率开发
  8. 关于open file limit问题解决
  9. 【渝粤题库】陕西师范大学200601 英语报刊阅读
  10. html图标 白块,桌面图标变成白块了?不用怕,1分钟就搞定!