您如何设置 celery(和 rabbit)以便它们可以通过 EC2 实例进行通信?
Rabbit 在用户 rabbitmq 上的实例上运行。我需要从实例之外的其他计算机向实例发送消息,在这种情况下,我正在使用计算机进行测试。
我已经将 celery 配置为在本地安装 rabbit 的计算机上工作。
此外,我遵循这些设置来生成咒语:
http://docs.celeryq.org/en/latest/configuration.html#broker-settings
这是一个红帽实例。
您如何设置 celery(和 rabbit)以便它们可以通过 EC2 实例进行通信?
Rabbit 在用户 rabbitmq 上的实例上运行。我需要从实例之外的其他计算机向实例发送消息,在这种情况下,我正在使用计算机进行测试。
我已经将 celery 配置为在本地安装 rabbit 的计算机上工作。
此外,我遵循这些设置来生成咒语:
http://docs.celeryq.org/en/latest/configuration.html#broker-settings
这是一个红帽实例。
这里的问题是兔子不接受 EC2 实例上的消息。
要确定这是否是您的错误,请在 rabbit@rabbit.log(位于 /var/log/rabbbitmq)启动/重新启动 rabbit 后查看日志,您应该会看到类似以下的错误:
=INFO REPORT==== 18-Jun-2012::21:41:05 ===
Disk free space limit now exceeded. Free bytes:5404372992 Limit:7836254208
要更正此问题,您需要将 /etc/rabbitmq/rabbitmq.config 中的值更改为:
[{rabbit, [{disk_free_limit, {mem_relative, 0.5}}]}].
请注意,句号最后很重要。
mem_relative 的实际值需要根据您的需要和实际拥有的内存量进行调整。
确保您的 EC2 安全组规则包含正确的端口,例如:
22 tcp 0.0.0.0/0
5672 tcp 0.0.0.0/0
11211 tcp 0.0.0.0/0
55672 tcp 0.0.0.0/0