RabbitMQ cluster

环境准备

 

主机版本

Linux control-ha-3 4.4.0-45-generic #66-Ubuntu SMP Wed Oct19 14:12:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

Erlang版本号

Erlang/OTP 18 [erts-7.3] [source] [64-bit][async-threads:10] [hipe] [kernel-poll:false]

Eshell V7.3  (abortwith ^G)

rabbitmq版本

Version: 3.5.7-1

Depends: adduser, erlang-nox (>= 1:13.b.3) | esl-erlang,logrotate, init-system-helpers (>= 1.18~)

安装erlang

# apt-get installerlang

常用命令

1      查看所有队列信息

# rabbitmqctl list_queues

2      关闭应用

# rabbitmqctl stop_app

3      启动应用,和上述关闭命令配合使用,达到清空队列的目的

# rabbitmqctl start_app

4      清除所有队列

# rabbitmqctl reset

5      更多用法及参数,可以执行如下命令查看

# rabbitmqctl

6      首先关闭

# rabbitmqctlstop_app

7      还原:

# rabbitmqctlreset

8      启动:

# rabbitmqctlstart_app

9      添加用户:

# rabbitmqctladd_user dftc [email protected]

10    设置权限:

# rabbitmqctlset_permissions -p / dftc ".*" ".*" ".*"

11    查看用户:

# rabbitmqctllist_users

control1, control 2, control 3以及其相关配置

搭载了RabbitMQ服务的Ubuntu服务器。

1.      Control1具体网络配置如下:


Ip  address


192.168.163.141


net mask


255.255.255.0


gateway


192.168.163.2


Dns


114.114.114.114

2.      Control2具体网络配置如下:


Ip  address


192.168.163.142


net mask


255.255.255.0


gateway


192.168.163.2


Dns


114.114.114.114

3.      Control3具体网络配置如下:


Ip  address


192.168.163.143


net mask


255.255.255.0


gateway


192.168.163.2


Dns


114.114.114.114

RabbitMQ单节点配置流程

1.     配置3台台可以接入公网的CentOS,然后在各机器中按序执行一下命令:

# apt-getinstall erlang -y

# wgethttps://github.com/rabbitmq/rabbitmq-server/releases/download/rabbitmq_v3_6_5/rabbitmq-server_3.6.5-1_all.deb

# rabbitmq-server

# rabbitmq-pluginsenable rabbitmq_management

2.     在每个节点配置/etc/hosts中最后增加下面内容:

#vi  /etc/hosts

192.168.163.141 control1

192.168.163.142 control2

192.168.163.143 control3

输入erl确认erlang已经正确安装

当出现以上信息时表示安装完成。然后输入’halt().’退出即可。

然后在配置Erlang环境变量,vi /etc/profile文件,增加下面的环境变量:

#seterlang environment

exportPATH=$PATH:/opt/erlang/bin

3.     重启三台机器

#reboot

4.     构建起erlang的集群环境

Rabbitmq的集群是依赖于erlang的集群来工作的。Erlang的集群中各节点是通过一个magic cookie来实现的,这个cookie存放在 /var/lib/rabbitmq/.erlang.cookie 中,所以必须保证各节点cookie保持一致,否则节点之间就无法通信。

使用以下命令将Control1中的/var/lib/rabbitmq/.erlang.cookie 复制到其他节点。在Control1节点运行以下命令:

#  scp /var/lib/rabbitmq/.erlang.cookie  [email protected]: /var/lib/rabbitmq/.erlang.cookie

#  scp /var/lib/rabbitmq/.erlang.cookie  [email protected]: /var/lib/rabbitmq/.erlang.cookie

由于文件是400的权限,所以在Control2以及Control3节点运行以下命令:

保证权限属主属组完全一致

#  chmod 400/var/lib/rabbitmq/.erlang.cookie

#  chown rabbitmq.rabbitmq/var/lib/rabbitmq/.erlang.cookie

完成后运行rabbitmqctl stop 然后 rabbitmq-server 重启服务

#  rabbitmqctl stop

#  /sbin/service rabbitmq-server  restart

在Control1节点增加用户,并且为用户赋予权限

#  rabbitmqctl add_user dftc [email protected](测试环境使用[email protected])

#  rabbitmqctl set_user_tags dftc administrator

#  rabbitmqctl set_permissions -p /  dftc ‘.*‘‘.*‘ ‘.*‘

通过http://192.168.163.141:15672 用户名为:dftc 密码为:[email protected](测试环境使用[email protected])连入第一台配置成功的RabbitMQ服务器。其他节点暂不配置

Iptables打开对应端口,尤其注意4369和25672,没有打开的时候,添加集群会报错并提示打开

#rabbitmq cluster

-A INPUT -p tcp -m state --state NEW -m tcp --dport 4369 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 5672 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 15672 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 25672 -j ACCEPT

RabbitMQ集群搭建

1.     RabbitMQ相关的配置

使用 -detached 参数,在各节点中运行以下命令:

#  rabbitmqctl stop

#  rabbitmq-server –detached

组成集群,在control2与control3中分别运行以下命令:

#  rabbitmqctl stop_app

#  rabbitmqctl join_cluster [email protected](跟据实际主机名确定)

#  rabbitmqctl start_app

可选步骤:在已经可用的Control1的web页面,配置

注:红框内的内容在没配置之前是没有的。

时间: 2025-01-15 15:22:19

RabbitMQ cluster的相关文章

RabbitMQ概念及环境搭建(三)RabbitMQ cluster

测试环境:VMS00781 VMS00782 VMS00386 (centos5.8) 1.先在三台机器上分别安装RabbitMQ Server 2.读取其中一个节点的cookie,并复制到其他节点(节点间通过cookie确定相互是否可通信) 两者之一均可: sudo vim /var/lib/rabbitmq/.erlang.cookie sudo vim $HOME/.erlang.cookie 3.逐个启动节点 sudo service rabbitmq-server start 4.查看

[置顶] RabbitMQ概念及环境搭建(三)RabbitMQ cluster

http://blog.csdn.net/zyz511919766/article/details/41896747 测试环境:VMS00781 VMS00782 VMS00386 (centos5.8)1.先在三台机器上分别安装RabbitMQ Server 2.读取其中一个节点的cookie,并复制到其他节点(节点间通过cookie确定相互是否可通信)两者之一均可:sudo vim /var/lib/rabbitmq/.erlang.cookiesudo vim $HOME/.erlang.

rabbit-mq cluster安装

Centos6.5 安装 RabbitMQ3.6.5 一.安装编译工具 yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel 二.安装Erlang 1 下载erlang http://erlang.org/download/otp_src_19.0.tar.gz 2 解压 tar xvf otp_src_19.0.tar.gz cd otp_src_19.0 3 配置 '--prefix'指定的安装

openstack rabbitmq cluster

rabbitmqctl cluster_status 11.2 Run the followingcommands on each node except the first one: rabbitmqctl stop_app rabbitmqctl join_cluster [email protected] rabbitmqctl start_app 11.3 first node exec: rabbitmqctl set_policy ha-all '^(?!amq\.).*' '{"h

rabbitmq重装之后无法加入原有cluster的bug解析

背景: 一台controller node,一台compute1节点 两台机器的host文件均已经进行hostname解析 两节点本已经加入了同一rabbitmq cluster 但controller node因为服务原因,还原至裸机状态,在yum安装rabbitmq-server.service之后,存在compute1节点无法加入到controller rabbitmq cluster的异常 相关异常如下 [[email protected] ~]# rabbitmqctl join_cl

RabbitMQ 高可用集群搭建及电商平台使用经验总结

面向EDA(事件驱动架构)的方式来设计你的消息 AMQP routing key的设计 RabbitMQ cluster搭建 Mirror queue policy设置 两个不错的RabbitMQ plugin 大型应用插件(Sharding.Rederation) Queue镜像失败手动同步 各集群配置同步方式(RabbitMQ export\import) 客户端连接方式(尽量采用AMQP组来动态链接) RabbitMQ 产线二次产品化封装(消息补偿.发送消息持久化.异常处理.监控页面.重复

Rabbitmq 性能测试

背景: 线上环境,出了一起事故,初步定位是rabbitmq server. 通过抓包发现,是有多个应用使用同一台rabbitmq server.并且多个应用使用rabbitmq的方式也不一样.发现有以下两种方式: 1. 每次produce 一条消息,开闭channel一次 2. 每次produce 一条消息,开闭connection一次,开闭channel一次. 这种使用方法是我们怀疑的一个点,除此之外还有怀疑的点有: 1. rabbitmq cluster的配置问题 2. rabbitmq s

RabbitMQ介绍5 - 集群

RabbitMQ内建集群机制,利用Erlang提供的开放电信平台(OTP,Open telecom Platform)通信框架,使得集群很容易进行横向扩展,提高系统吞吐量.这里只讨论集群的概念.原理,关于如何创建集群见官方介绍: http://www.rabbitmq.com/clustering.html 内存节点和磁盘节点 RabbitMQ将队列.exchange.绑定.vhost的配置信息(也就是创建时提供的信息)称为元数据(集群状态时,集群节点地址.节点与其它元数据的关系也是元数据),简

rabbitmq HA

Highly Available Queues By default, queues within a RabbitMQ cluster are located on a single node (the node on which they were first declared). This is in contrast to exchanges and bindings, which can always be considered to be on all nodes. Queues c