rabbitmq单机到集群完整搭建
RabbitMQ 安装和使用
一、安装依赖环境
二、安装RabbitMQ
三、启动和关闭
四、开启Web管理插件
五、防火墙添加端口
多机多节点集群部署
一、 环境准备
二、修改配置文件
三、防火墙添加端口
四、启动RabbitMQ
单机多节点部署
一、环境准备
二、启动RabbitMQ
三、防火墙添加端口
镜像队列模式集群
RabbitMQ 安装和使用
一、安装依赖环境
1.在 http://www.rabbitmq.com/which-erlang.html 页面查看安装rabbitmq需要安装erlang对应的版本
2.在 https://github.com/rabbitmq/erlang-rpm/releases 页面找到需要下载的erlang版本,erlang-*.centos.x86_64.rpm就是centos版本的。
3.复制下载地址后,使用wget命令下载
wget -P /home/download https://github.com/rabbitmq/erlang-rpm/releases/download/v21.2.3/erlang-21.2.3-1.el7.centos.x86_64.rpm
4.安装 Erlang
sudo rpm -Uvh /home/download/erlang-21.2.3-1.el7.centos.x86_64.rpm
5.安装 socat
sudo yum install -y socat
二、安装RabbitMQ
1.在官方下载页面找到CentOS7版本的下载链接,下载rpm安装包
wget -P /home/download https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.9/rabbitmq-server-3.7.9-1.el7.noarch.rpm
提示:可以在https://github.com/rabbitmq/rabbitmq-server/tags下载历史版本
2.安装RabbitMQ
sudo rpm -Uvh /home/download/rabbitmq-server-3.7.9-1.el7.noarch.rpm
三、启动和关闭
•启动服务
sudo systemctl start rabbitmq-server
•查看状态
sudo systemctl status rabbitmq-server
•停止服务
sudo systemctl stop rabbitmq-server
•设置开机启动
sudo systemctl enable rabbitmq-server
四、开启Web管理插件
1.开启插件
rabbitmq-plugins enable rabbitmq_management
说明:rabbitmq有一个默认的guest用户,但只能通过localhost访问,所以需要添加一个能够远程访问的用户。
2.添加用户
rabbitmqctl add_user admin admin
3.为用户分配操作权限
rabbitmqctl set_user_tags admin administrator
4.为用户分配资源权限
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
五、防火墙添加端口
•RabbitMQ 服务启动后,还不能进行外部通信,需要将端口添加都防火墙
1.添加端口
sudo firewall-cmd --zone=public --add-port=4369/tcp --permanentsudo firewall-cmd --zone=public --add-port=5672/tcp --permanentsudo firewall-cmd --zone=public --add-port=25672/tcp --permanentsudo firewall-cmd --zone=public --add-port=15672/tcp --permanent
2.重启防火墙
sudo firewall-cmd --reload
多机多节点集群部署
一、 环境准备
•准备三台安装好RabbitMQ 的机器,安装方法见 安装步骤
◦10.10.1.41
◦10.10.1.42
◦10.10.1.43
提示:如果使用虚拟机,可以在一台VM上安装好RabbitMQ后,创建快照,从快照创建链接克隆,会节省很多磁盘空间
二、修改配置文件
- 1.修改10.10.1.41机器上的/etc/hosts文件
sudo vim /etc/hosts
- 2.添加IP和节点名
10.10.1.41 node1
10.10.1.42 node2
10.10.1.43 node3
- 3.将10.10.1.41上的hosts文件复制到另外两台机器上
sudo scp /etc/hosts root@node2:/etc/
sudo scp /etc/hosts root@node3:/etc/
说明:命令中的root是目标机器的用户名,命令执行后,可能会提示需要输入密码,输入对应用户的密码就行了
- 4.将10.10.1.41上的/var/lib/rabbitmq/.erlang.cookie文件复制到另外两台机器上
scp /var/lib/rabbitmq/.erlang.cookie root@node2:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie root@node3:/var/lib/rabbitmq/
提示:如果是通过克隆的VM,可以省略这一步
三、防火墙添加端口
•给每台机器的防火墙添加端口
– 1.添加端口
sudo firewall-cmd --zone=public --add-port=4369/tcp --permanentsudo firewall-cmd --zone=public --add-port=5672/tcp --permanentsudo firewall-cmd --zone=public --add-port=25672/tcp --permanentsudo firewall-cmd --zone=public --add-port=15672/tcp --permanent
– 2.重启防火墙
sudo firewall-cmd --reload
四、启动RabbitMQ
1.启动每台机器的RabbitMQ
sudo systemctl start rabbitmq-server
或者
rabbitmq-server -detached
2.将10.10.1.42加入到集群
停止RabbitMQ 应用
rabbitmqctl stop_app
重置RabbitMQ 设置
rabbitmqctl reset
加入到集群
rabbitmqctl join_cluster rabbit@node1 --ram
启动RabbitMQ 应用
rabbitmqctl start_app
3.查看集群状态,看到running_nodes,[rabbit@node1,rabbit@node2]表示节点启动成功
rabbitmqctl cluster_status
提示:在管理界面可以更直观的看到集群信息
4.将10.10.1.43加入到集群
停止 RabbitMQ 应用
rabbitmqctl stop_app
重置 RabbitMQ 设置
rabbitmqctl reset
节点加入到集群
rabbitmqctl join_cluster rabbit@node1 --ram
启动 RabbitMQ 应用
rabbitmqctl start_app
5.重复地3步,查看集群状态
单机多节点部署
一、环境准备
•准备一台已经安装好RabbitMQ 的机器,安装方法见 安装步骤 ◦10.10.1.41
二、启动RabbitMQ
1.在启动前,先修改RabbitMQ 的默认节点名(非必要),在/etc/rabbitmq/rabbitmq-env.conf增加以下内容
1
RabbitMQ 默认节点名,默认是rabbit
2
3
NODENAME=rabbit1
2.RabbitMQ 默认是使用服务的启动的,单机多节点时需要改为手动启动,先停止运行中的RabbitMQ 服务
1
sudo systemctl stop rabbitmq-server
3.启动第一个节点
1
rabbitmq-server -detached
4.启动第二个节点
1
RABBITMQ_NODE_PORT=5673 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15673}]" RABBITMQ_NODENAME=rabbit2 rabbitmq-server -detached
5.启动第三个节点
1
RABBITMQ_NODE_PORT=5674 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15674}]" RABBITMQ_NODENAME=rabbit3 rabbitmq-server -detached
6.将rabbit2加入到集群
1
停止 rabbit2 的应用
2
3
rabbitmqctl -n rabbit2 stop_app
4
5
重置 rabbit2 的设置
6
7
rabbitmqctl -n rabbit2 reset
8
9
rabbit2 节点加入到 rabbit1的集群中
10
11
rabbitmqctl -n rabbit2 join_cluster rabbit1 --ram
12
13
启动 rabbit2 节点
14
15
rabbitmqctl -n rabbit2 start_app
7.将rabbit3加入到集群
1
停止 rabbit3 的应用
2
3
rabbitmqctl -n rabbit3 stop_app
4
5
重置 rabbit3 的设置
6
7
rabbitmqctl -n rabbit3 reset
8
9
rabbit3 节点加入到 rabbit1的集群中
10
11
rabbitmqctl -n rabbit3 join_cluster rabbit1 --ram
12
13
启动 rabbit3 节点
14
15
rabbitmqctl -n rabbit3 start_app
8.查看集群状态,看到{running_nodes,[rabbit3@node1,rabbit2@node1,rabbit1@node1]}说明节点已启动成功。
1
rabbitmqctl cluster_status
提示:在管理界面可以更直观的看到集群信息
三、防火墙添加端口
•需要将每个节点的端口都添加到防火墙
1.添加端口
1
sudo firewall-cmd --zone=public --add-port=4369/tcp --permanent
2
sudo firewall-cmd --zone=public --add-port=5672/tcp --permanent
3
sudo firewall-cmd --zone=public --add-port=25672/tcp --permanent
4
sudo firewall-cmd --zone=public --add-port=15672/tcp --permanent
5
sudo firewall-cmd --zone=public --add-port=5673/tcp --permanent
6
sudo firewall-cmd --zone=public --add-port=25673/tcp --permanent
7
sudo firewall-cmd --zone=public --add-port=15673/tcp --permanent
8
sudo firewall-cmd --zone=public --add-port=5674/tcp --permanent
9
sudo firewall-cmd --zone=public --add-port=25674/tcp --permanent
10
sudo firewall-cmd --zone=public --add-port=15674/tcp --permanent
2.重启防火墙
1
sudo firewall-cmd --reload
镜像队列模式集群
•镜像队列属于RabbitMQ 的高可用方案,见:https://www.rabbitmq.com/ha.html#mirroring-arguments
•通过前面的步骤搭建的集群属于普通模式集群,是通过共享元数据实现集群
•开启镜像队列模式需要在管理页面添加策略,添加方式:
a.进入管理页面 -> Admin -> Policies(在页面右侧)-> Add / update a policy
b.在表单中填入:
1
name: ha-all
2
Pattern: ^
3
Apply to: Queues
4
Priority: 0
5
Definition: ha-mode = all
参数说明
name: 策略名称,如果使用已有的名称,保存后将会修改原来的信息
Apply to:策略应用到什么对象上
Pattern:策略应用到对象时,对象名称的匹配规则(正则表达式)
Priority:优先级,数值越大,优先级越高,相同优先级取最后一个
Definition:策略定义的类容,对于镜像队列的配置来说,只需要包含3个部分: ha-mode 、ha-params 和 ha-sync-mode。其中,ha-sync-mode是同步的方式,自动还是手动,默认是自动。ha-mode 和 ha-params 组合使用。组合方式如下:
ha-mode
ha-params
说明
all (empty) 队列镜像到集群类所有节点
exactly count 队列镜像到集群内指定数量的节点。如果集群内节点数少于此值,队列将会镜像到所有节点。如果大于此值,而且一个包含镜像的节点停止,则新的镜像不会在其它节点创建。
nodes nodename 队列镜像到指定节点,指定的节点不在集群中不会报错。当队列申明时,如果指定的节点不在线,则队列会被创建在客户端所连接的节点上。
•镜像队列模式相比较普通模式,镜像模式会占用更多的带宽来进行同步,所以镜像队列的吞吐量会低于普通模式
•但普通模式不能实现高可用,某个节点挂了后,这个节点上的消息将无法被消费,需要等待节点启动后才能被消费。
rabbitmq单机到集群完整搭建相关推荐
- RabbitMQ单机到集群完整搭建(一)
文章目录 **RabbitMQ 安装和使用** **一.安装依赖环境** **二.安装RabbitMQ** **三.启动和关闭** 四.开启Web管理插件 **五.防火墙添加端口** **多机多节点集 ...
- centos7 rabbitmq 单机部署 集群部署 HAProxy 负载均衡搭建
准备工作 搭建 RabbitMQ Server 单机版 搭建 RabbitMQ Server 高可用集群 搭建 HAProxy 负载均衡 一.准备工作 节点 系统 版本 ip node1 centos ...
- ZooKeeper(一)linux上单机与集群的搭建
环境: Centos 7.zookeeper-3.4.6.tar.gz 一.单机版的搭建过程 1,上传zookeeper安装包并解压 上传安装包到服务器上后使用 tar -zxvf zookeeper ...
- Redis单机和集群环境搭建
一.安装单机版redis 1.可以自己去官网下载,当然也可以用课程提供的压缩包 # yum install gcc # wget http://downloads.sourceforge.net/tc ...
- RabbitMQ 高可用集群搭建
RabbitMQ 高可用集群搭建 1 集群简介 1.1 集群架构 当单台 RabbitMQ 服务器的处理消息的能力达到瓶颈时,此时可以通过 RabbitMQ 集群来进行扩展,从而达到提升吞吐量的目 ...
- 【运维技术】Zookeeper单机以及集群搭建教程
Zookeeper单机以及集群搭建教程 单机搭建 单机安装以及启动 安装zookeeper的前提是必须有java环境 # 选择目录进行下载安装 cd /app # 下载zk,可以去官方网站下载,自己上 ...
- zookeeper单机和集群搭建过程详细步骤
文章目录: ▶ 单机环境搭建 ▶ 设置zookeeper为开机服务 ▶ 集群环境搭建 单机环境搭建 要求: 依赖Java环境 单机搭建过程: 进入到/opt目录下,创建zookeeper 文件夹 cd ...
- RabbitMQ高可用集群搭建
RabbitMQ高可用集群搭建 摘要:实际生产应用中都会采用消息队列的集群方案,如果选择RabbitMQ那么有必要了解下它的集群方案原理一般来说,如果只是为了学习RabbitMQ或者验证业务工程的正确 ...
- Linux 安装并搭建 3.10.7 RabbmitMQ 集群之搭建RabbitMq服务器(一)
原文链接:Linux 安装并搭建 3.10.7 RabbmitMQ 集群之搭建RabbitMq服务器(一) 关注公众号"超级IT人生"不走丢,查看最新技术文章 RabbitMQ的应 ...
最新文章
- Jmeter实现压力测试(多并发测试)
- UNREFERENCED_PARAMETER的作用
- 读书笔记_大话数据结构第九章_排序
- JavaScript实现Floyd-Warshall算法(附完整源码)
- [Redux/Mobx] 在redux中,什么是store?
- 世界上只有一种英雄主义,那就是看清生活的真相之后,依然热爱生活,加油小伙子...
- 一个类的java代码_求一段java代码,定义一个类
- python中!ls -r_光学现象的Python实现
- java lang ClassNotFoundException org apache jsp index jsp解决
- 【数据可视化】使用pyecharts绘制南丁格尔玫瑰图和水平堆叠条形图
- 算法:间隔重排序链表Reorder List
- 一个求整系数多项式的全部有理根的方法
- 计算机学院王乐君,自动化学院2019年研究生科技报告会安排-中国地质大学(武汉)自动化学院...
- 首届“中科杯”全国软件设计大赛获奖名单揭晓
- 循环群的子群必然还是循环群
- Linux系统下搭建DNS服务器——原理总结
- 图解图论介绍及应用(1):哥尼斯堡七桥
- xp系统计算机怎么连接到网络打印机,WinXP电脑如何添加网络打印机?WinXP添加网络打印机的步骤...
- 天池比赛-金融风控贷款违约预测
- 递推法 c语言,递推法
热门文章
- 32位QT连接64位MySQL数据库
- NOIOpenjudge 1.13--08特殊日历计算
- requests使用re爬取腾讯体育新闻
- 【无标题】graphsage--inductive representation learing on large graphs
- java时间代码_java获取当前时间的四种方法代码实例
- IDC发布2020年全球智能手机
- MySQL数据快速导出导入
- 【随记】Python:前端表格获取到的填写数据插入到数据库表格中数据类型问题
- 苹果手机隐藏很深的四个功能,个个都很实用,不提很少有人知道
- 第四章 第四节:子查询 (Subquery)