rabbitmq 集群

搭建rabbitmq+HA 高可用集群

一.环境

centos6.5     192.168.9.27     rabbitmq1

centos6.5 192.168.9.28        rabbitmq2

centos6.5 192.168.9.29        rabbitmq3

二.每台服务器搭建单点rabbitmq 服务,见本博客地址:http://www.cnblogs.com/lzcys8868/p/7506251.html

端口说明:15672是管理界面用的;25672是集群之间使用的端口;4369是erlang进程用来做node连接的。

http://192.168.9.27:15672    usename=admin  passwd=admin

http://192.168.9.28:15672    username=admin  passwd=admin

http://192.168.9.29:15672

三. 保证上面的三个节点可用,将三个节点连接起来形成高可用cluser。这样我们就可以让我们的exchange,queue在这两个节点之间复制,形成高可用的queue。

1》.erlang.cookie 这个文件是erlang用来发现 和互相连接的基础。将三个节点中的.erlang.cookie设置成一样,这是erlang的约定,一样的 .cookie hash key 他认为是合法和正确的

[[email protected] sbin]# find / -name .erlang.cookie -type f

/root/.erlang.cookie

[[email protected] ~]# scp 192.168.9.27:/root/.erlang.cookie /root

[email protected]‘s password:

.erlang.cookie

[[email protected] ~]# scp 192.168.9.27:/root/.erlang.cookie /root

[email protected]‘s password:

.erlang.cookie

[[email protected] ~]# chmod u+w .erlang.cookie   //三台服务器上都加上权限

[[email protected] ~]# ls -ld .erlang.cookie

-rw-------. 1 root root 20 3月   8 00:00 .erlang.cookie

2》保证三台服务器hosts 相同,erlang会通过hosts文件发现节点

[[email protected] ~]# cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.9.27  rabbitmq1

192.168.9.28  rabbitmq2

192.168.9.29  rabbitmq3

3》将rabbitmq2,rabbitmq3与rabbitmq1组成集群 。rabbitmq2和rabbitmq3会默认连接在一起

[[email protected] sbin]# ./rabbitmqctl stop_app

Stopping node [email protected] ...

注:[rabbitmq-discuss] Error: unable to connect to node ‘[email protected]‘: nodedown.。如果执行 ./rabbitmqctl stop_app命令时报此错误,是“.erlang.cookie”的问题,从新复制同一台上的cookie。杀掉 5672    15672   4369 端口的进程,然后再执行 ./rabbitmq-server --detached &  从新启动rabbitmq,再次执行  ./rabbitmqctl stop_app 命令

[[email protected] sbin]# ./rabbitmqctl join_cluster [email protected]    //rabbitmq2与rabbitmq1 组成集群

Clustering node [email protected] with [email protected] ...

[[email protected] sbin]# ./rabbitmqctl start_app

Starting node [email protected] ...

RabbitMQ 3.6.5. Copyright (C) 2007-2016 Pivotal Software, Inc.

##  ##      Licensed under the MPL.  See http://www.rabbitmq.com/

##  ##

##########  Logs: /usr/local/rabbitmq/var/log/rabbitmq/[email protected]

######  ##        /usr/local/rabbitmq/var/log/rabbitmq/[email protected]

##########

Starting broker...

completed with 6 plugins.

[[email protected] sbin]# ./rabbitmqctl stop_app

Stopping node [email protected] ...

[[email protected] sbin]# ./rabbitmqctl join_cluster [email protected]    //rabbitmq3与rabbitmq1组成集群

Clustering node [email protected] with [email protected] ...

[[email protected] sbin]# ./rabbitmqctl start_app

Starting node [email protected] ...

RabbitMQ 3.6.5. Copyright (C) 2007-2016 Pivotal Software, Inc.

##  ##      Licensed under the MPL.  See http://www.rabbitmq.com/

##  ##

##########  Logs: /usr/local/rabbitmq/var/log/rabbitmq/[email protected]

######  ##        /usr/local/rabbitmq/var/log/rabbitmq/[email protected]

##########

Starting broker...

completed with 6 plugins.

4》集群验证:三个节点都是可用的

http://192.168.9.27:15672

四.默认情况下节点占用的memory 是总内存的40%,可以根据自己的用途研究rabbitmq的配置项。为了提高性能,不需要三个节点都是disc 的节点,所以我们需要启动一个节点为RAM模式。

[[email protected] sbin]# ./rabbitmqctl  change_cluster_node_type ram   //改变rabbitmq3的节点模式为ram

Turning [email protected] into a ram node ...

Error:  Mnesia is still running on node [email protected]

Please stop the node with rabbitmqctl stop_app first.

根据提示操作:

[[email protected] sbin]# ./rabbitmqctl stop_app

Stopping node [email protected] ...

[[email protected] sbin]# ./rabbitmqctl change_cluster_node_type ram

Turning [email protected] into a ram node ...

[[email protected] sbin]# ./rabbitmqctl start_app

Starting node [email protected] ...

RabbitMQ 3.6.5. Copyright (C) 2007-2016 Pivotal Software, Inc.

##  ##      Licensed under the MPL.  See http://www.rabbitmq.com/

##  ##

##########  Logs: /usr/local/rabbitmq/var/log/rabbitmq/[email protected]

######  ##        /usr/local/rabbitmq/var/log/rabbitmq/[email protected]

##########

Starting broker...

completed with 6 plugins.

注:节点rabbitmq3的类型 已经是RAM了。可以把节点rabbitmq2节点类型也做修改

五.设置镜像队列策略

我们需要设置exchange,queue 高可用策略,这样才能真的做到高可用。现在是物理上的机器或者说是虚拟节点是高可用的,但是里面的对象需要我们进行配置策略。

三台服务器上都执行:

[[email protected] sbin]# rabbitmqctl set_policy ha-all "^" ‘{"ha-mode":"all"}‘

注:exchange 里有 ha-all

时间: 2024-08-07 00:13:12

rabbitmq 集群的相关文章

rabbitMQ 集群的配置

参考文档:http://blog.csdn.net/woogeyu/article/details/51119101 环境说明 在两个不同的主机上创建两个节点主机IP,主机名如下 10.176.0.13 node1 10.176.0.19 node2 1.分别在两个主机上安装rabbitMQ(一个主机一个rabbitMQ),注意语言环境erlang和rabbitMQ的版本必须一致 2.集群的配置 RabbitMQ集群中所有节点都是平等的,没有绝对的主次之分,每一个节点的配置信息都会在集群中进行同

RabbitMQ集群创建

环境: OS:CentOS6.75 RabbitMQ Vervison :3.6.5 节点: node1 : mq01  172.16.42.128 node2:  mq02  172.16.42.135 配置: 1.两台机器上都安装RabbitMQ 这里的安装包括socat.Erlang.rabbitmq-server包的安装,已经环境变量和config文件的配置,请参考RabbitMQ安装,先不要急着创建用户.虚拟主机和配置权限.这些等集群创建好了再做 2.配置hosts文件 mq01 [[

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

centos7.3 rabbitmq集群

RabbitMQ集群概述 通过 Erlang 的分布式特性(通过 magic cookie 认证节点)进行 RabbitMQ 集群,各 RabbitMQ 服务为对等节点,即每个节点都提供服务给客户端连接,进行消息发送与接收. 这些节点通过 RabbitMQ HA 队列(镜像队列)进行消息队列结构复制.本方案中搭建 3 个节点,并且都是磁盘节点(所有节点状态保持一致,节点完全对等),只要有任何一个节点能够工作,RabbitMQ 集群对外就能提供服务. 安装 Erlang.RabbitMQ http

基于Kubernetes(k8s)的RabbitMQ 集群

目前,有很多种基于Kubernetes搭建RabbitMQ集群的解决方案.今天笔者今天将要讨论我们在Fuel CCP项目当中所采用的方式.这种方式加以转变也适用于搭建RabbitMQ集群的一般方法.所以如果你想要设计自己的解决方案,你应该收集一些更符合你定制化需求的文章. 命名你的集群 在Kubernetes内部运行RabbitMQ集群会遇到一系列有意思的问题.最先会遇到的问题是为了使各个节点之间互相可见,我们应该如何命名各个节点.以下是一些符合规范的不同的命名方法: [email protec

高可用RabbitMQ集群安装配置

RabbitMQ集群安装配置+HAproxy+Keepalived高可用 rabbitmq 集群 消息队列 RabbitMQ简介 RabbitMQ是流行的开源消息队列系统,用erlang语言开发.RabbitMQ是AMQP(高级消息队列协议)的标准实现. AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计.消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然.AMQP的主

RabbitMQ集群、镜像部署配置

1   RABBITMQ简介及安装 RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python.Ruby..NET.Java.JMS.C.PHP.ActionScript.XMPP.STOMP等,支持AJAX.用于在分布式系统中存储转发消息,在易用性.扩展性.高可用性等方面表现不俗. AMQP,即Advanced message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计.消息中间件主要用

RabbitMQ集群搭建

rabbitmq集群是通过erlang的分布式特性进行rabbitmq集群,各个rabbitmq的服务为相应的节点,每个节点都提供给客户端连接,进行消息的发送与接收. 环境:CentOS 6.8 64位 服务器:192.168.179.128 wangwq01 192.168.179.129 wangwq02 192.168.179.130 wangwq03 1. 主机域名解析 rabbitmq各节点之间通信使用域名,所以集群成员中所有主机名都要可解析,这里使用修改hosts文件来实现解析. 2

RabbitMQ集群

一.前言 线上的 RabbitMQ用的是单节点,前段时间由于机器内存不足,发生了OOM,业务受到了影响,故打算换成 RabbitMQ集群.RabbitMQ模式有三种,分别是:单一模式.普通模式.镜像模式,镜像模式才是RabbitMQ真正的HA方案,关于更详细的简绍,请移步到官网:http://www.rabbitmq.com/ha.html ,下面是关于RabbitMQ集群的部署过程: 二.环境 erlang版本: erlang-19.0.4-1.el7.centos.x86_64 rabbit

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