在 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 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 集群高度相关的主题