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单机到集群完整搭建相关推荐

  1. RabbitMQ单机到集群完整搭建(一)

    文章目录 **RabbitMQ 安装和使用** **一.安装依赖环境** **二.安装RabbitMQ** **三.启动和关闭** 四.开启Web管理插件 **五.防火墙添加端口** **多机多节点集 ...

  2. centos7 rabbitmq 单机部署 集群部署 HAProxy 负载均衡搭建

    准备工作 搭建 RabbitMQ Server 单机版 搭建 RabbitMQ Server 高可用集群 搭建 HAProxy 负载均衡 一.准备工作 节点 系统 版本 ip node1 centos ...

  3. ZooKeeper(一)linux上单机与集群的搭建

    环境: Centos 7.zookeeper-3.4.6.tar.gz 一.单机版的搭建过程 1,上传zookeeper安装包并解压 上传安装包到服务器上后使用 tar -zxvf zookeeper ...

  4. Redis单机和集群环境搭建

    一.安装单机版redis 1.可以自己去官网下载,当然也可以用课程提供的压缩包 # yum install gcc # wget http://downloads.sourceforge.net/tc ...

  5. RabbitMQ 高可用集群搭建

    RabbitMQ 高可用集群搭建 1 集群简介 1.1 集群架构 ​ 当单台 RabbitMQ 服务器的处理消息的能力达到瓶颈时,此时可以通过 RabbitMQ 集群来进行扩展,从而达到提升吞吐量的目 ...

  6. 【运维技术】Zookeeper单机以及集群搭建教程

    Zookeeper单机以及集群搭建教程 单机搭建 单机安装以及启动 安装zookeeper的前提是必须有java环境 # 选择目录进行下载安装 cd /app # 下载zk,可以去官方网站下载,自己上 ...

  7. zookeeper单机和集群搭建过程详细步骤

    文章目录: ▶ 单机环境搭建 ▶ 设置zookeeper为开机服务 ▶ 集群环境搭建 单机环境搭建 要求: 依赖Java环境 单机搭建过程: 进入到/opt目录下,创建zookeeper 文件夹 cd ...

  8. RabbitMQ高可用集群搭建

    RabbitMQ高可用集群搭建 摘要:实际生产应用中都会采用消息队列的集群方案,如果选择RabbitMQ那么有必要了解下它的集群方案原理一般来说,如果只是为了学习RabbitMQ或者验证业务工程的正确 ...

  9. Linux 安装并搭建 3.10.7 RabbmitMQ 集群之搭建RabbitMq服务器(一)

    原文链接:Linux 安装并搭建 3.10.7 RabbmitMQ 集群之搭建RabbitMq服务器(一) 关注公众号"超级IT人生"不走丢,查看最新技术文章 RabbitMQ的应 ...

最新文章

  1. Jmeter实现压力测试(多并发测试)
  2. UNREFERENCED_PARAMETER的作用
  3. 读书笔记_大话数据结构第九章_排序
  4. JavaScript实现Floyd-Warshall算法(附完整源码)
  5. [Redux/Mobx] 在redux中,什么是store?
  6. 世界上只有一种英雄主义,那就是看清生活的真相之后,依然热爱生活,加油小伙子...
  7. 一个类的java代码_求一段java代码,定义一个类
  8. python中!ls -r_光学现象的Python实现
  9. java lang ClassNotFoundException org apache jsp index jsp解决
  10. 【数据可视化】使用pyecharts绘制南丁格尔玫瑰图和水平堆叠条形图
  11. 算法:间隔重排序链表Reorder List
  12. 一个求整系数多项式的全部有理根的方法
  13. 计算机学院王乐君,自动化学院2019年研究生科技报告会安排-中国地质大学(武汉)自动化学院...
  14. 首届“中科杯”全国软件设计大赛获奖名单揭晓
  15. 循环群的子群必然还是循环群
  16. Linux系统下搭建DNS服务器——原理总结
  17. 图解图论介绍及应用(1):哥尼斯堡七桥
  18. xp系统计算机怎么连接到网络打印机,WinXP电脑如何添加网络打印机?WinXP添加网络打印机的步骤...
  19. 天池比赛-金融风控贷款违约预测
  20. 递推法 c语言,递推法

热门文章

  1. 32位QT连接64位MySQL数据库
  2. NOIOpenjudge 1.13--08特殊日历计算
  3. requests使用re爬取腾讯体育新闻
  4. 【无标题】graphsage--inductive representation learing on large graphs
  5. java时间代码_java获取当前时间的四种方法代码实例
  6. IDC发布2020年全球智能手机
  7. MySQL数据快速导出导入
  8. 【随记】Python:前端表格获取到的填写数据插入到数据库表格中数据类型问题
  9. 苹果手机隐藏很深的四个功能,个个都很实用,不提很少有人知道
  10. 第四章 第四节:子查询 (Subquery)