MST

星途 面试题库

面试题:消息队列之RabbitMQ集群搭建基础

请描述在Linux环境下搭建RabbitMQ双节点集群的基本步骤,包括节点间如何通信以及相关配置文件的关键参数。
35.9万 热度难度
后端开发消息队列

知识考点

AI 面试

面试题答案

一键面试

1. 安装RabbitMQ

在两台Linux机器(假设为node1和node2)上都安装RabbitMQ,可通过包管理器(如yum或apt - get)安装:

# CentOS/RHEL系统
sudo yum install rabbitmq-server

# Ubuntu系统
sudo apt - get install rabbitmq-server

2. 配置主机名和hosts文件

在两台机器上分别配置主机名,例如在node1上:

sudo hostnamectl set - hostname node1

在node2上:

sudo hostnamectl set - hostname node2

在两台机器的/etc/hosts文件中添加对方的主机名和IP映射,例如:

192.168.1.10 node1
192.168.1.11 node2

3. 启动RabbitMQ并加入集群

  • 在node1上(作为主节点): 启动RabbitMQ:
sudo systemctl start rabbitmq - server

设置第一个节点为磁盘节点(默认):

sudo rabbitmqctl stop_app
sudo rabbitmqctl reset
sudo rabbitmqctl start_app
  • 在node2上: 启动RabbitMQ:
sudo systemctl start rabbitmq - server

停止应用:

sudo rabbitmqctl stop_app

重置节点:

sudo rabbitmqctl reset

加入node1所在的集群,假设node1的主机名为node1:

sudo rabbitmqctl join_cluster rabbit@node1

启动应用:

sudo rabbitmqctl start_app

4. 节点间通信

  • 通信协议:RabbitMQ节点间使用Erlang的分布式通信机制进行通信。默认情况下,RabbitMQ使用4369端口进行epmd(Erlang Port Mapper Daemon)通信,用于节点发现和连接建立;使用25672端口进行Erlang节点间的实际数据通信。

5. 关键配置文件参数

RabbitMQ的主要配置文件为/etc/rabbitmq/rabbitmq.conf(不同版本路径可能略有不同)。

  • cluster_formation: 用于配置集群形成的相关参数,例如:
cluster_formation.peer_discovery_backend = rabbit_peer_discovery_classic_config
cluster_formation.classic_config.nodes.1 = rabbit@node1
cluster_formation.classic_config.nodes.2 = rabbit@node2
  • disk_free_limit: 设置磁盘空间限制,当可用磁盘空间低于此限制时,RabbitMQ会采取相应措施(如限制消息接收),例如:
disk_free_limit.absolute = 50MB
  • listeners.tcp.default: 设置RabbitMQ监听的TCP端口,默认为5672:
listeners.tcp.default = 5672