分布式rabbitmq集群部署

分布式rabbitmq集群部署
本次部署使用的三台centos服务器
安装的erlang 版本为 21.0.4
安装的rabbitmq版本为3.7.8-rc.2
在三台服务器中分别安装rabbitmq-server
rabbitmq通信是建立在erlang环境中 所以需要先安装erlang环境

因为国外的erlang官方地址中中国不能直接访问,所以我们使用第三方包
https://github.com/rabbitmq/erlang-rpm 安装说明地址

修改系统repo包文件
修改repo
# In /etc/yum.repos.d/rabbitmq-erlang.repo
[rabbitmq-erlang]
name=rabbitmq-erlang
baseurl=https://dl.bintray.com/rabbitmq/rpm/erlang/21/el/7
gpgcheck=1
gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
repo_gpgcheck=0
enabled=1

输入 yum install erlang

安装socat
输入 yum install socat

安装 rabbitmq-server
安装官方文档 http://www.rabbitmq.com/install-rpm.html
rpm -Uvh https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.8-rc.2/rabbitmq-server-3.7.8.rc.2-1.el7.noarch.rpm

安装好之后
启动 rabbitmq 守护程序
chkconfig rabbitmq-server on

启动 rabbitmq-server
输入 systemctl start rabbitmq-server.service
查看 rabbitmq-server 状态
systemctl status rabbitmq-server.service

开启rabbitmq web控制台插件
rabbitmq-plugins enable rabbitmq_management

在fireewall开放如下端口
4369 25672 15672 5672
15672 为web控制台程序所需端口
4369/25672为rabbitmq分布式集群通信所需接口
5672 为应用程序访问rabbitmq所需端口

查看firewall所有端口
firewall-cmd --zone=public --list-ports

添加端口

firewall-cmd --zone=public --add-port=4369/tcp --permanent

重写加载firewall

firewall-cmd --reload

然后添加一个rabbitmq管理员用户
rabbitmqctl add_user username user_pwd

添加用户到管理员用户组

rabbitmqctl set_user_tags username administrator

设置该用户具有远程访问权限

rabbitmqctl set_permissions -p ‘/‘ rabbit1_admin ‘.‘ ‘.‘ ‘.‘

在本地登录rabbitmq管理控制台

现在一个rabbitmq-server已经搭建好了

然后依照以上方法 在另外两个服务器搭建好rabbitmq-server后

开始将这三台搭建好一个rabbitmq-server集群
rabbitmq搭建集群有几种方式
具体可以参考官方文档

官方文档地址

首先需要保证三台服务器能够通过服务名互相访问

因为需要通过服务名相互访问 所以三台服务器名不能相同 如果相同可以在 /etc/hostname文件修改
如下
vi /etc/hostname
按下insert键 编辑
将里面内容删除 填入你想设置的服务名
建议修改为 rabbitmq1
ctrl+c 输入:wq 保存 不保存 输入:q!
修改后重启

重启rabbitmq-server
然后可以看见rabbitmq-server node名字已经改为 [email protected] hostname=你刚修改的文字
如果主机名设置过长 重启rabbitmq-server回报异常错误信息 服务状态是 status=69
可以通过将主机名重新该段 或者修改 rabbitmq-server配置文件

在修改 /etc/localhosts文件
vi /etc/localhosts
在末尾加上如下内容
173.16.12.110 rabbitmq1
173.16.12.93 rabbitmq2
173.16.12.92 rabbitmq3
分别是三台服务器地址 以及服务器名

在另外两台服务器上按如上操作分别配置
配置后可以通过 ping 服务器名 尝试能否访问 如 ping rabbitmq1
RabbitMQ节点和CLI工具(例如rabbitmqctl)使用cookie来确定是否允许它们相互通信。
要使两个节点能够通信,它们必须具有相同的共享密钥,
称为Erlang cookie。cookie只是一串字母数字字符,最大为255个字符。
它通常存储在本地文件中。该文件必须只能由所有者访问(具有600或类似的UNIX权限)。

我们需要保证三台服务器的 .erlang.cookie一致
通常情况下 .erlang.cookie文件在
/var/lib/rabbitmq/.erlang.cookie

也可以通过find命令查找
find / -name .erlang.cookie
.erlang.cookie文件默认不允许修改
所以我们需要先修改文件权限
chmod 777 .erlang.cookie
将内容修改为rabbitmq1 rabbitmq2 rabbitmq3一致后

需要将.erlang.cookie权限改回400
chmod 400 .erlang.cookie
否则rabbitmq-server会报 status=1错误

加入集群官方文档 https://www.rabbitmq.com/clustering.html 文档
现在开始 将rabbitmq2加入到rabbitmq1中
将rabbitmq2加入到rabbitmq1中
先停止 rabbitmq2
执行 rabbitmqctl stop_app
停止成功后 执行加入集群命令
rabbitmqctl join_cluster [email protected]

加入成功后重启启动
rabbitmqctl start_app

然后我们再用命令查看现在rabbitmq1和rabbitmq2的信息
rabbitmqctl cluster_status
可以看见 当前集群是包含了rabbitmq1于rabbitmq2

将rabbitmq3加入到rabbitmq2中
如法炮制
rabbitmqctl stop_app
rabbitmqctl join_cluster [email protected]
rabbitmqctl start_app

我们也可以登录到rabbitmq-server web控制台插件中查看集群信息
如下图所示

rabbitmq集群其中一台停止后 当它重新启动后会自动加入到集群中

rabbitmq所需端口使用功能描述
https://www.rabbitmq.com/clustering.html#selinux-ports

Port Access
SELinux, and similar mechanisms may prevent RabbitMQ from binding to a port. When that happens, RabbitMQ will fail to start. Firewalls can prevent nodes and CLI tools from communicating with each other. Make sure the following ports can be opened:

4369: epmd, a peer discovery service used by RabbitMQ nodes and CLI tools
5672, 5671: used by AMQP 0-9-1 and 1.0 clients without and with TLS
25672: used for inter-node and CLI tools communication (Erlang distribution server port) and is allocated from a dynamic range (limited to a single port by default, computed as AMQP port + 20000). Unless external connections on these ports are really necessary (e.g. the cluster uses federation or CLI tools are used on machines outside the subnet), these ports should not be publicly exposed. See networking guide for details.
35672-35682: used by CLI tools (Erlang distribution client ports) for communication with nodes and is allocated from a dynamic range (computed as server distribution port + 10000 through server distribution port + 10010). See networking guide for details.
15672: HTTP API clients, management UI and rabbitmqadmin (only if the management plugin is enabled)
61613, 61614: STOMP clients without and with TLS (only if the STOMP plugin is enabled)
1883, 8883: (MQTT clients without and with TLS, if the MQTT plugin is enabled
15674: STOMP-over-WebSockets clients (only if the Web STOMP plugin is enabled)
15675: MQTT-over-WebSockets clients (only if the Web MQTT plugin is enabled)
It is possible to configure RabbitMQ to use different ports and specific network interfaces.

原文地址:https://www.cnblogs.com/ddiuehu/p/9412910.html

时间: 2024-11-06 15:29:01

分布式rabbitmq集群部署的相关文章

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

Rabbitmq集群部署Haproxy

安装前的说明: 1.为了配合做rabbitmq的负载均衡,本次的安装包是安装的低版本1.5.8版本,下载包的地址:https://src.fedoraproject.org/repo/pkgs/haproxy/2.按照上两篇博客,先把rabbitmq集群装好:单机版Rabbitmq部署:http://blog.51cto.com/10950710/2135676Rabbitmq集群部署:http://blog.51cto.com/10950710/2135717 安装步骤: 1.将haproxy

私有云Rabbitmq 集群部署

默认openstack使用rabbitmq做信息队列,如果想要是云高可用,那么需要对每个涉及的组件都进行高可用配置,本文介绍如何使用rabbitmq 做高可用 高可用方法 通过 Erlang 的分布式特性(通过 magic cookie 认证节点)进行 RabbitMQ 集群,各 RabbitMQ 服务为对等节点,即每个节点都提供服务给客户端连接,进行消息发送与接收. 这些节点通过 RabbitMQ HA 队列(镜像队列)进行消息队列结构复制.本方案中搭建 3 个节点,并且都是磁盘节点(所有节点

RabbitMQ集群部署和高可用

RabbitMQ 安装和使用 1.安装依赖环境 在 http://www.rabbitmq.com/which-erlang.html 页面查看安装rabbitmq需要安装erlang对应的版本 在 https://github.com/rabbitmq/erlang-rpm/releases 页面找到需要下载的erlang版本,`erlang-*.centos.x86_64.rpm`就是centos版本的. 复制下载地址后,使用wget命令下载,wget -P /home/download h

Linux CentOS6.5下RabbitMQ集群部署配置

一.服务器与主机名列表 环境:2台Linux主机,主机名和IP如下,rabbitmq执行用户为rabbitmq,所属组为rabbitmq 172.16.192.145   ecs003 172.16.192.146   ecs004 二.在个节点服务器上做好hosts解析 #cat>>/etc/hosts< 172.16.192.145   ecs003 172.16.192.146   ecs004 EOF 三.在各节点安装Rabbitmq 1.安装epel源和rabbit-relan

RabbitMQ集群部署

环境: ip z主机名 c操作系统 10.0.0.1 test1 Centos7.2 10.0.0.2 test2 Centos7.2 10.0.0.3 test3 Centos7.2 一.安装依赖环境. yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget 二.防火墙.主机与ip间的映射. 1. 关闭或设置防火墙 systemctl stop firewalld.service syste

rocketmq集群部署(多master多slave异步)

一.最近公司在做队列的技术选型,经过调研,决定使用rocketmq作为整个架构的队列层,我们之前的公司是用RabbitMQ,集群部署参考我之前的文章:RabbitMQ集群部署:rocketmq集群由NameServer和Broker两种角色组成,NameServer是无状态的可以横向部署多台达到消除单点的目的:Broker分多master.多master多slave同步.多master多slave异步这三种部署方案,一般生产环境都使用的是多master多slave异步这种方案,关于这三种方案的优

部署RabbitMQ集群

部署 RabbitMQ Cluster 消息中间件简介 ? 消息中间件也可以称消息队列,是指用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成.通过提供消息传递和消息队列模型,可以在分布式环境下扩展进程的通信.当下主流的消息中间件有RabbitMQ.Kafka.ActiveMQ.RocketMQ等.其能在不同平台之间进行通信,常用来屏蔽各种平台协议之间的特性,实现应用程序之间的协同.优点在于能够在客户端和服务器之间进行同步和异步的连接,并且在任何时刻都可以将消

solr 集群(SolrCloud 分布式集群部署步骤)

SolrCloud 分布式集群部署步骤 安装软件包准备 apache-tomcat-7.0.54 jdk1.7 solr-4.8.1 zookeeper-3.4.5 注:以上软件都是基于 Linux 环境的 64位 软件,以上软件请到各自的官网下载. 服务器准备 为搭建这个集群,准备三台服务器,分别为 192.168.0.2 -- master 角色192.168.0.3 -- slave 角色192.168.0.4 -- slave 角色 搭建基础环境 安装 jdk1.7 - 这个大家都会安装