RabbitMQ集群配置

RabbitMQ的集群节点包括内存节点、磁盘节点。顾名思义内存节点就是将所有数据放在内存,磁盘节点将数据放在磁盘。如果在投递消息时,打开了消息的持久化,那么即使是内存节点,数据还是安全的放在磁盘。

普通模式:

对于queue来说,message data只存在于集群中的一个节点上,而message metadata则存在于集群中的所有节点。当message进入A节点的queue后,consumer从B节点拉去时,rabbitmq会临时在A、B之间进行消息传输,把A中的message data取出来发送给链接在B上的consumer。这样就存在A这个瓶颈,无论链接A还是B,出口总是在A。还有如果A节点故障后,在B节点无法取到A节点中还未消费的消息,如果做了消息持久化,则A节点恢复后,仍然可以被消费,但是如果没做消息持久化,即使A恢复了,消息也丢失了。

镜像模式:

该模式和集群模式的区别在于,message data会在镜像节点间主动同步,而不是在consumer取数据时临时拉取,当然由于在节点间主动同步数据,副作用也很明显,降低系统性能,一但大量消息进入,则同步的消息非常多。

1、实验环境

rabbitmq1	192.168.12.131
rabbitmq2	192.168.12.132
rabbitmq3	192.168.12.134

dis节点和ram节点的磁盘空间分配,根据实际占用情况

2、配置前先同步时间

[[email protected] ~]# ntpdate 192.168.12.176

3、修改hosts

[[email protected] ~]# cat /etc/hosts
192.168.12.131	rabbitmq1.com	rabbitmq1
192.168.12.132	rabbitmq2.com	rabbitmq2
192.168.12.134	rabbitmq3.com	rabbitmq3

4、安装erlang

[[email protected] ~]# yum install erlang(先安装epel源)

5、安装RabbitMQ

[[email protected] ~]# wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.1/rabbitmq-server-3.5.1-1.noarch.rpm
[[email protected] ~]# yum install rabbitmq-server-3.5.1-1.noarch.rpm

[[email protected] ~]# /etc/init.d/rabbitmq-server start
Starting rabbitmq-server: SUCCESS
rabbitmq-server.

6、安装插件管理界面

[[email protected] ~]# chmod 777 /etc/rabbitmq/
[[email protected] ~]# 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 [email protected] started 6 plugins.

[[email protected] rabbitmq]# service rabbitmq-server restart

然后就可以通过http://192.168.12.131:15672访问

通过http://192.168.12.131:15672/api/访问rabbitmq提供的API

注意:rabbitmq从3.3.0开始禁止guest/guest权限通过除localhost外的访问

我们可以添加一个管理员用户

7、集群配置(关闭防火墙和selinux)

有两种方式配置集群,命令行和配置文件形式(命令行配置优先于配置文件)

设置集群之前,确保两个节点之间能互相访问

[[email protected] rabbitmq]# rabbitmqctl status -n [email protected]
Status of node [email protected] ...
[{pid,14964},
 {running_applications,[{rabbit,"RabbitMQ","3.5.1"},
...

设置cookie

rabbitmq节点需要互相访问到的话,节点的cookie必须保持一致,cookie文件一般放在/var/lib/rabbitmq/.erlang.cookie

可以把其中一个节点的文件复制到其他节点即可。操作过程中,关闭节点服务器,完成后再打开。

rabbitmqctl stop_app     rabbitmqctl stop     scp

启动节点

[[email protected] rabbitmq]# rabbitmq-server -detached
[[email protected] rabbitmq]# rabbitmq-server -detached
[[email protected] rabbitmq]# rabbitmq-server -detached
分别在三台主机上执行rabbitmqctl start_app

检查节点状态(3个节点出现类似信息)

[[email protected] rabbitmq]# rabbitmqctl cluster_status
Cluster status of node [email protected] ...
[{nodes,[{disc,[[email protected]]}]},
 {running_nodes,[[email protected]]},
 {cluster_name,<<"[email protected]">>},
 {partitions,[]}]

在节点2和节点3上执行如下操作:

[[email protected] rabbitmq]# rabbitmqctl stop_app
Stopping node [email protected] ...

[[email protected] rabbitmq]# rabbitmqctl join_cluster [email protected]
Clustering node [email protected] with [email protected] ...

[[email protected] rabbitmq]# rabbitmqctl start_app
Starting node [email protected] ...

完成后3个节点都可以看到相同的cluster信息

[[email protected] rabbitmq]# rabbitmqctl cluster_status
Cluster status of node [email protected] ...
[{nodes,[{disc,[[email protected],[email protected],[email protected]]}]},
 {running_nodes,[[email protected],[email protected],[email protected]]},
 {cluster_name,<<"[email protected]">>},
 {partitions,[]}]

到此为止,一个普通的集群配置完毕

节点操作

将一个节点退出集群:

[[email protected] rabbitmq]# rabbitmqctl stop_app
Stopping node [email protected] ...done.

[[email protected] rabbitmq]# rabbitmqctl reset
Resetting node [email protected] ...done.

[[email protected] rabbitmq]# rabbitmqctl start_app
Starting node [email protected] ...done

更改节点模式(将disc改为ram)

[[email protected] rabbitmq]# rabbitmqctl stop_app
Stopping node [email protected] ...done.

[[email protected] rabbitmq]# rabbitmqctl change_cluster_node_type ram
Turning [email protected]bbitmq3 into a ram node ...

[[email protected] rabbitmq]# rabbitmqctl start_app
Starting node [email protected] ...done.
时间: 2024-08-03 03:06:03

RabbitMQ集群配置的相关文章

CentOS+rabbitMQ集群配置

1.实验环境 rabbitmq-node1.com192.168.1.112 rabbitmq-node2.com192.168.1.113 rabbitmq-node3.com192.168.1.128 2.配置前检查同步时间 #ntpdate pool.ntp.org 3.注意一定要修改hosts #cat /etc/hosts 192.168.1.112   rabbitmq-node1.com rabbitmq-node1 192.168.1.113   rabbitmq-node2.c

Ubuntu 下 rabbitmq集群配置

1,执行在host文件中配置主名字 192.168.1.21 <span style="font-family: Arial, Helvetica, sans-serif;">platform-api1</span> 192.168.1.22 <span style="font-family: Arial, Helvetica, sans-serif;">platform-api2</span> 2,分别启动21,22

在CentOS7上部署Rabbitmq集群配置

概述 RabbitMQ是目前流行的开源消息队列系统.MQ(消息队列)是一种应用程序对应用程序的通信方法. RabbitMQ的结构图如图所示: 实现步骤 在一个集群里,有三台服务器,其中一台使用磁盘模式,另两台使用内存模式.两台内存模式的节点无疑速度更快,因此通过客户端连接访问它们.但是客户端不可能分别连接两个内存节点,肯定是通过前端反向代理去轮询分发请求如果担心前端反向代理服务器故障,可以通过Keepalived软件做一个高可用架构.而磁盘模式的节点,由于磁盘IO相对较慢,因此仅作数据备份使用.

RabbitMQ集群配置与HA

1.安装RabbitMQ 1)下载和安装erlang 下载erlang wget http://www.rabbitmq.com/releases/erlang/erlang-18.1-1.el6.x86_64.rpm 安装erlang,root用户使用rpm安装 rpm -ihv erlang-18.1-1.el6.x86_64.rpm 2)下载和安装RabbitMQ 下载RabbitMQ wget https://github.com/rabbitmq/rabbitmq-server/rel

RabbitMq 集群配置

1. RabbitMQ 所需的附属安装包 1.1  openGL安装 执行命令: [[email protected] local]# yum install mesa-libGL-devel mesa-libGLU-devel freeglut-devel gcc glibc-devel make ncurses-devel openssl-devel autoconf xmlto libtool automake -y  1.2  erlang 安装   下载 erlang  http://

Windows环境下 RabbitMQ集群配置

一.在集群机器上安装erlang环境.安装rabbitmq; 二. 假设,192.168.10.111的节点名称为 [email protected],192.168.10.112的节点名称为 [email protected] 1.分别在两台机器的rabbitmq数据.日志文件所在路径下(本文为C:\Users\Administrator\AppData\Roaming\RabbitMQ),创建集群配置文件rabbitmq.config. rabbitmq.config是一个标准的erlang

OpenStack RabbitMQ 集群

      OpenStack RabbitMQ集群 管理手册 目  录 第1章 引言... 1 1.1 目的... 1 1.2 说明... 1 1.3 MQ.. 1 1.4 概念... 1 1.5 MQ 特点... 2 1.6 工作流程... 2 1.7 系统环境... 3 第2章 RabbitMQ 部署... 4 2.1 系统环境基本配置... 4 2.2RabbitMA 配置... 4 2.3RabbitMQ 集群配置... 6 第3章 RabbitMQ集群验证... 9 3.1Nova

RabbitMq 集群搭建

? ? 实验环境: 操作系统为 Centos 7.2 IP hostName 192.168.190.132 node132 192.168.190.139 node139 192.168.190.140 node140 ? ? RabbitMQ相关端口 ? ? 4369 (epmd) 5672, 5671 (AMQP 0-9-1 and 1.0 without and with TLS) 25672. This port used by Erlang distribution for inte

Rabbitmq集群部署手册

一.Rabbitmq集群部署手册 1.环境介绍 系统环境:Red HatEnterprise Linux Server release 6.2 (Santiago) 内核版本:Linux zxt-02.com2.6.32-220.el6.x86_64 #1 SMP Wed Nov 9 08:03:13 EST 2011 x86_64 x86_64 x86_64GNU/Linux 软件版本:otp_src_17.3:rabbitmq-server-3.2.4:Python 2.6.6:simple