在 Amazon EC2 上运行 RabbitMQ
概述
在 EC2 上使用 RabbitMQ 与在其他平台上运行非常相似。但是,EC2 的某些方面需要考虑。它们主要与主机名及其解析有关。
本指南演示了手动(CLI 驱动)RabbitMQ 集群。 适用于 AWS 的对等发现插件(RabbitMQ 3.7.0 或更高版本)更适合自动化。
AMI
RabbitMQ 在最新版本的 Ubuntu、Debian 和 CentOS AMI 上运行良好,只要安装了兼容版本的 Erlang/OTP。
选择实例类型
RabbitMQ 可以在每种实例类型上运行,但有一些注意事项值得牢记
- 使用 64 位实例。
- 根据工作负载和设置,RabbitMQ 可能需要大量的内存。确保您的主机具有适当的 RAM 量,并且始终启用至少几个 GB 的交换空间。可以使用PerfTest 模拟工作负载。有关节点内存使用情况的推理,提供单独的指南。
- 一般情况下,RabbitMQ 会利用系统中的所有 CPU 内核,前提是工作负载使用多个队列。应该考虑其他因素(例如磁盘和网络 I/O 吞吐量)。
- 监控 RabbitMQ 节点以及在真实或模拟工作负载上使用它的应用程序将有助于评估特定实例类型是否适合。
操作系统
虽然 RabbitMQ 在大多数主要 Linux 发行版中都经过了测试,但 Ubuntu 对 Amazon EC2 的支持似乎最强,因此本指南将使用该发行版。
Ubuntu 云镜像提供对专门设计用于公共云的 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 集群的相关主题