在 Amazon EC2 上运行 RabbitMQ
概述
本指南假设您熟悉通用的 集群指南 以及关于 集群对等发现 的指南。
在 EC2 上使用 RabbitMQ 与在其他平台上运行它非常相似。但是,EC2 有一些需要考虑的特定方面。它们主要与主机名及其解析有关。
本指南演示手动(CLI 驱动)RabbitMQ 集群。 AWS 的对等发现插件(RabbitMQ 3.7.0 或更高版本)是更适合自动化的选项。
AMI
只要安装了 兼容版本的 Erlang/OTP,RabbitMQ 在最新的 Ubuntu、Debian 和 CentOS AMI 上都能正常工作。
选择实例类型
RabbitMQ 将在所有实例类型上运行,但有几点需要考虑
- 使用 64 位实例。
- 根据工作负载和设置,RabbitMQ 可能需要大量内存。请确保您的主机拥有 适量的 RAM,并始终启用至少几 GB 的交换空间。可以使用 PerfTest 模拟工作负载。有一篇关于 理解节点内存使用情况 的独立指南。
- 只要工作负载使用 多个队列,RabbitMQ 通常会利用系统中的所有 CPU 核心。还应考虑其他因素(例如,磁盘和网络 I/O 吞吐量)。
- 对 RabbitMQ 节点以及使用它的应用程序进行 监控,无论是实际工作负载还是模拟工作负载,都有助于评估特定实例类型的适用性。
操作系统
虽然 RabbitMQ 已在大多数主流 Linux 发行版上进行了测试,但 Ubuntu 对 Amazon EC2 的支持似乎最强,因此本指南将使用此发行版。
Ubuntu Cloud Images 提供了专门设计用于公共云的 Ubuntu 镜像(构建)。
安装
请参阅以下发行版的安装指南
可以使用各种部署工具来自动化 RabbitMQ 的部署。
是一些流行的选项。
EBS 卷上的持久化存储
在 Linux 上,RabbitMQ 将使用以下目录作为其节点数据目录
/var/lib/rabbitmq/用于存储消息或队列等持久化数据/var/log/rabbitmq/用于存储日志
有关详细信息,请参阅 文件和目录位置。
这些目录可以是到专用存储卷的符号链接。在执行符号链接之前必须停止节点。
sudo service rabbitmq-server stop
如果可能,我们建议在安装 RabbitMQ 之前执行符号链接和其他存储准备步骤。
请注意,EBS 卷具有 IOPS 限制,这可能会影响吞吐量和 RabbitMQ 操作。如果 EBS 卷达到限制,磁盘写入会变慢。RabbitMQ 消息存储压缩(磁盘数据垃圾回收)也可能跟不上磁盘写入速度,这意味着磁盘将在消息被消耗和确认后更快地被填满,而无法回收磁盘空间。这最终会导致 资源警报 和发布者节流。请确保限制值较高,并设置 I/O 操作速率监控。
深入阅读
其他几篇指南涵盖了在公共云中运行 RabbitMQ 集群高度相关的主题