我已经在 Debian Linux Squeeze 机器上安装了 RabbitMQ,我希望它只收听 localhost 接口。我已经添加了
RABBITMQ_NODE_IP_ADDRESS=127.0.0.1
Run Code Online (Sandbox Code Playgroud)
到我的/etc/rabbitmq/rabbitmq.conf文件,这使它在侦听amqp端口 (5672)时仅绑定到 localhost 接口。但是,在侦听端口 epmd (4369) 和 43380 时,它仍然绑定到所有接口:
# lsof -n -a -i -urabbitmq
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
epmd 7353 rabbitmq 3u IPv4 1177662 0t0 TCP *:epmd (LISTEN)
epmd 7353 rabbitmq 5u IPv4 1177714 0t0 TCP 127.0.0.1:epmd->127.0.0.1:50877 (ESTABLISHED)
beam.smp 7365 rabbitmq 10u IPv4 1177711 0t0 TCP *:43380 (LISTEN)
beam.smp 7365 rabbitmq 11u IPv4 1177713 0t0 TCP 127.0.0.1:50877->127.0.0.1:epmd (ESTABLISHED)
beam.smp 7365 rabbitmq …Run Code Online (Sandbox Code Playgroud) ubuntu@hostname:~$ sudo service rabbitmq-server start
* Starting message broker rabbitmq-server [ OK ]
ubuntu@hostname:~$ sudo service rabbitmq-server stop
* Stopping message broker rabbitmq-server * message broker already stopped
[ OK ]
ubuntu@hostname:~$ sudo service rabbitmq-server status
Status of node 'rabbit@hostname' ...
Error: unable to connect to node 'rabbit@hostname': nodedown
DIAGNOSTICS
===========
attempted to contact: ['rabbit@hostname']
rabbit@hostname:
* connected to epmd (port 4369) on hostname
* epmd reports: node 'rabbit' not running at all
no other nodes on hostname
* suggestion: …Run Code Online (Sandbox Code Playgroud) 我在 EC2 上运行 django/celery,rabbitmq 作为代理。我使用的机器出现故障,所以我启动了另一个实例。但是自从切换到新机器后,我一直无法让 celery 工作。
编辑:我在下面包含了很多日志,以防万一我误诊了问题。但我 85% 确定问题在于 rabbitmq-server 在“启动数据库”阶段无法启动。
node : rabbit@ip-10-212-66-181
app descriptor: /usr/lib/rabbitmq/lib/rabbitmq_server-1.7.2/sbin/../ebin/rabbit.app
home dir : /var/lib/rabbitmq
cookie hash : 5+uQ077En5bpvle3HJCQMg==
log : /var/log/rabbitmq/rabbit.log
sasl log : /var/log/rabbitmq/rabbit-sasl.log
database dir : /var/lib/rabbitmq/mnesia/rabbit
starting internal event notification system ...done
starting logging server ...done
starting database ...Erlang has closed
Run Code Online (Sandbox Code Playgroud)
关于如何进一步诊断/解决这个问题的任何想法?
这是我尝试运行 celery 时发生的情况:
$ python manage.py celeryd -l info
/opt/bitnami/python/lib/python2.6/site-packages/django_celery-2.4.2-py2.6.egg/djcelery/loaders.py:86: UserWarning: Using settings.DEBUG leads to a memory leak, never use this setting in production environments!
warnings.warn("Using settings.DEBUG …Run Code Online (Sandbox Code Playgroud) 如果有人能指出rabbitmq(“平均”硬件,fwiw)的一些合理比例数字/限制的方向,或者发布您对其性能的经验,我将不胜感激。我试图了解队列数量、队列上的订阅者数量、扇出队列上有数百或数千个侦听器的性能影响、任何人在高容量环境中运行兔子的任何硬数字。
通读文档和RabbitMQ in Action 后,创建 RabbitMQ 集群似乎很简单,但升级或修补现有的 RabbitMQ 集群似乎需要重新启动整个集群。
有没有一种方法可以将集群、铲、联合和负载平衡结合起来,在不丢失队列或消息的情况下进行滚动升级,或者我是否错过了一些更明显的东西?
我一直在尝试将我的 LetsEncrypt 生成的证书安装到我的 rabbitmq 服务器中,但没有成功。
为了在不必解决权限问题的情况下进行测试,我复制了 pem 文件
/etc/letsencrypt/live/<domain>/
Run Code Online (Sandbox Code Playgroud)
到我的主目录。我还将 cacert.pem 文件从我在以下位置找到的位置复制到我的主目录:
/home/<user>/.local/share/letsencrypt/lib/python2.7/site-packages/requests/cacert.pem
Run Code Online (Sandbox Code Playgroud)
我决定首先尝试通过编辑 rabbitmq.config 来在管理插件之上安装证书以添加
{rabbitmq_management,
[%% Pre-Load schema definitions from the following JSON file. See
%% http://www.rabbitmq.com/management.html#load-definitions
%%
%% {load_definitions, "/path/to/schema.json"},
%% Log all requests to the management HTTP API to a file.
%%
%% {http_log_dir, "/path/to/access.log"},
%% Change the port on which the HTTP listener listens,
%% specifying an interface for the web server to bind to.
%% Also set the listener to use SSL and provide …Run Code Online (Sandbox Code Playgroud) 我已经在 Ubuntu 上安装了 RabbitMQ,但我只想在需要时手动启动它,而不是在启动时自动加载它。
我尝试rabbitmq-server在 ubuntu-server 12.04 上安装但失败了。
然后我按照http://www.rabbitmq.com/install-debian.html 中的指南添加 apt 源列表
但是重新安装还是出现如下错误:
$ sudo aptitude install rabbitmq-server
...
Setting up rabbitmq-server (2.8.7-1) ...
* Starting message broker rabbitmq-server
* FAILED - check /var/log/rabbitmq/startup_\{log, _err\}
...fail!
invoke-rc.d: initscript rabbitmq-server, action "start" failed.
dpkg: error processing rabbitmq-server (--configure):
subprocess installed post-installation script returned error exit status 1
No apport report written because MaxReports is reached already
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place
Errors were encountered while …Run Code Online (Sandbox Code Playgroud) 帮助我理解一些东西。我查看了几个企业应用程序架构,我注意到其中几个使用 Message Queue 服务,例如 ActiveMQ 或 RabbitMQ。我对消息队列服务器的作用有表面上的了解,但我真的不明白为什么我会选择构建一个使用它的应用程序基础设施,而不是标准的负载平衡技术,如 HAProxy 等。
两者之间的真正区别是什么?两者似乎都将流量和/或消息路由到订阅队列或池的节点。这些都有优点/缺点吗?
我们使用 RabbitMQ 作为消息队列,使用 Celery 作为任务队列,我正在尝试围绕队列进行处理。
有人可以向我解释任务队列和消息队列之间的操作差异吗?
到目前为止,我知道消息队列将用于实际数据,如文本消息或日志片段。它被放置在消息队列中,以便工作人员可以收集它并对其进行处理,例如解析、存储等。
任务队列部分让我感到困惑,不知道为什么、何时或会做什么?
我认为工作人员(AKA 任务?)会不断轮询消息队列以获取要做的事情,那么为什么会有任务队列呢?
rabbitmq ×10
ubuntu ×3
activemq ×1
cluster ×1
lets-encrypt ×1
linux ×1
middleware ×1
performance ×1
ssl ×1