我正在尝试永久增加 RabbitMQ 文件描述符限制。我已经将系统限制增加到 65535,并通过在/etc/security/limits.d/rabbitmq.conf文件中添加一个条目对 RabbitMQ 进程进行了相同的操作。
的输出ulimit -n是65536。
的输出su - rabbitmq -s /bin/sh -c 'ulimit -n'是65535。
的输出rabbitmqctl status | grep -A 4 limit是:
{vm_memory_limit,16900370432},
{disk_free_limit,16900370432},
{disk_free,1786935627776},
{file_descriptors,
[{total_limit,924},{total_used,5},{sockets_limit,829},{sockets_used,1}]},
{processes,[{limit,1048576},{used,204}]},
{run_queue,0},
{uptime,3}]
Run Code Online (Sandbox Code Playgroud)
如果我跑,rabbitmqctl eval 'file_handle_cache:set_limit(65000).'那么我得到:
{vm_memory_limit,16900370432},
{disk_free_limit,16900370432},
{disk_free,1786935721984},
{file_descriptors,
[{total_limit,65000},
{total_used,5},
{sockets_limit,58498},
{sockets_used,1}]},
{processes,[{limit,1048576},{used,204}]},
{run_queue,0},
{uptime,91}]
Run Code Online (Sandbox Code Playgroud)
有谁知道我怎样才能永久增加file_descriptors total_limit?每次我重新启动 RabbitMQ 时它都会回到 924。我不希望它改变,所以我想知道你们是否能告诉我在这里缺少什么:D
为了完整起见,请遵循我的完整/etc/rabbitmq/rabbitmq.config文件:
%% -*- mode: erlang -*-
%% ----------------------------------------------------------------------------
%% RabbitMQ Sample …Run Code Online (Sandbox Code Playgroud) 我正在尝试保护 RabbitMQ 的安装,但不确定如何保护 Erlang EPMD 端口。我只有一台机器在运行任何东西,所以我想让它只在环回设备上监听。根据文档,我添加了:
ERL_EPMD_ADDRESS=127.0.0.1
Run Code Online (Sandbox Code Playgroud)
to /etc/rabbitmq/rabbitmq-env.conf,但这没有效果,因为端口仍然显示nmap从远程系统打开。
有没有办法锁定我不会使用的这个端口?
我在带有 Erlang R15B01 的 CentOS 5.5 机器上运行 RabiitMQ。RabbitMQ 一直在运行,直到我升级到最新版本 (2.8.4)。
当我使用以下命令启动 RabbitMQ 时:
/etc/init.d/rabbitmq start
Run Code Online (Sandbox Code Playgroud)
在 RabbitMQ startup_log 我看到以下内容:
{error_logger,{{2012,7,11},{11,44,15}},"Cookie file /var/lib/rabbitmq/.erlang.cookie mus be accessible by owner only",[]}
Run Code Online (Sandbox Code Playgroud)
Erlang cookie 具有以下权限:
-rwxr-xr-x 1 rabbitmq rabbitmq 17 Jul 10 12:20 .erlang.cookie
Run Code Online (Sandbox Code Playgroud)
有没有其他人经历过这种情况?或者有人有我可以遵循的一些故障排除步骤吗?
非常感谢,Risteard
我已经开始使用 RabbitMQ。我有一台(windows)机器,我在上面安装了两个 RabbitMQ 节点作为服务 - 我为每个节点选择了节点名、端口和服务名称。服务正在正常运行(我看到它们在 netstat-a 中侦听)。
我还安装了带有“rabbitmq-plugins enable rabbitmq_management”的管理插件并重新启动了这两个服务。但是插件没有运行 - 我没有看到它在 netstat 中监听,我无法通过浏览器连接到管理控制台。
知道有什么问题吗?是否有任何日志可以查看正在发生的事情?
更新:当我做 rabbitmq-plugins list 时,我得到:
c:\RabbitMq\sbin>rabbitmq-plugins list
[e] amqp_client 3.0.1
[ ] cowboy 0.5.0-rmq3.0.1-git4b93c2d
[ ] eldap 3.0.1-gite309de4
[e] mochiweb 2.3.1-rmq3.0.1-gitd541e9a
[ ] rabbitmq_auth_backend_ldap 3.0.1
[ ] rabbitmq_auth_mechanism_ssl 3.0.1
[ ] rabbitmq_consistent_hash_exchange 3.0.1
[ ] rabbitmq_federation 3.0.1
[ ] rabbitmq_federation_management 3.0.1
[ ] rabbitmq_jsonrpc 3.0.1
[ ] rabbitmq_jsonrpc_channel 3.0.1
[ ] rabbitmq_jsonrpc_channel_examples 3.0.1
[E] rabbitmq_management 3.0.1
[e] rabbitmq_management_agent 3.0.1
[ ] rabbitmq_management_visualiser 3.0.1
[e] …Run Code Online (Sandbox Code Playgroud) 我正在设置一个 RabbitMQ 实例以在我的开发工作站上运行以进行测试。
我想使用配置(在我的情况下是关于流量控制的配置)。
我已经安装了erlang,rabbitmq-server-3.1.1,设置RABBITMQ_BASE到某个目录,设置RABBITMQ_CONFIG_FILE为c:/path/to/myconf(所以它引用c:\path\to\myconf.config)。
现在我打开我的 cmd 并执行 rabbitmq-service install。Web 管理器显示我的 RMQ 服务器已启动并正在运行。
但是disk_free_limit我设置的值不匹配。
我不知道是否没有读取配置文件,或者我的配置文件是否有错误并因此被忽略。
我的conf文件的内容:
[
{rabbit,
[
{disk_free_limit, 250000000}
]
}
].
Run Code Online (Sandbox Code Playgroud)
日志中的启动报告(它显示我的 conf 文件没有被读取):
=INFO REPORT==== 12-Jun-2013::17:06:44 ===
node : rabbit@DEV-WORKSTATION
home dir : C:\Windows
config file(s) : (none)
cookie hash : 2SazL+DgWDMqrHlr4w8R8A==
log : c:/rabbitmq_server-3.1.1/RabbitMQ/log/DEV-WORKSTATION.log
sasl log : c:/rabbitmq_server-3.1.1/RabbitMQ/log/rabbit@DEV-WORKSTATION-sasl.log
database dir : c:/rabbitmq_server-3.1.1/RabbitMQ/db/rabbit@DEV-WORKSTATION-mnesia
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助。
我已经开始在 EC2 linux 上运行 RabbitMQ。
我在默认设置下运行 RabbitMQ,所以我的 RabbitMQ 节点名称现在是 rabbit@{hostname} 并且主机名是默认的 EC2 主机名,ip-{my IP address}.
我想更改节点名称,如果我更改目录和 .pid 名称 in mnesia/and rabbitmq.conffile as rabbit@newhost,它会起作用吗?
我正在尝试使用 aws 容器服务设置一个 rabbitmq 集群。我需要/var/lib/rabbitmq/.erlang.cookie在所有节点上都相同。因此,对于我的所有 rabbitmq 容器,当它们运行时,我传入了一个RABBITMQ_ERLANG_COOKIE环境变量,根据此处的文档https://hub.docker.com/_/rabbitmq/应写入/var/lib/rabbitmq/.erlang.cookie.
当我检查正在运行的容器时,我可以看到存在环境变量RABBITMQ_ERLANG_COOKIE=QOKWQHQKXXTBIEAOPWKE,但是当cat /var/lib/rabbitmq/.erlang.cookie我得到不同的值时AYMNAPKRPCPJVPFYAJZX。
因此,所有rabbitmq 容器都不同.erlang.cookie,无法形成集群。
为什么没有设置来自环境变量的 cookie?我会在这里错过什么?
我正在使用 rabbitmq:3.6.9-alpine 图像。
在 Debian 10 上,service rabbitmq-server start需要 10 秒;service rabbitmq-server stop需要 5 秒。
这适用于负载极低且启动/停止速度比 RabbitMQ 性能或可靠性更重要的 Docker 开发环境。因此,停止并重新启动容器需要 15 秒。
我怎样才能让它更快?我添加log.default.level = debug了rabbitmq.conf以防万一它会告诉我它在启动过程中正在做什么,但它没有给我任何有用的东西。
我有一个带有一个 Linux 工作节点的 EKS 集群,它可以在一个区域内的任何可用区中实例化。我需要使用持久存储卷,这样即使节点死亡,我的数据也不会丢失。值得一提的是,我说的是RabbitMQ数据。
我尝试过使用 EBS 卷,但它有一个硬限制,即它绑定到单个可用区。如果节点死亡,然后实例化到不同的可用区,则无法挂载 EBS 卷。
到目前为止我有以下想法:
将单个 EBS 卷附加到工作节点。当工作节点在不同的可用区中重新启动时,创建EBS 快照,并使用它在正确的可用区中创建新的 EBS 卷。新的节点实例将挂载新的 EBS 卷。
每个可用区都有一个工作节点,并有一个专用的 EBS 卷。RabbitMQ 可以自动跨 EBS 卷复制数据。这样就无需使用 EBS 快照,如解决方案 1 中建议的那样。
拥有一个可连接到所有可用区的多个节点的 EFS 卷。
此外,我发现这篇文章解释了解决我的问题的更复杂的方法:
我为 Kubernetes 1.10/1.11 推荐的另一个选项是控制卷的创建位置以及 pod 的调度位置:
- 要在预先确定的区域中创建卷,您可以为要使用的每个区域创建自定义 StorageClass 对象(请参阅https://kubernetes.io/docs/concepts/storage/storage-classes/#aws-ebs)。
- 要指定调度具有 PV 的 pod 的区域,您可以使用affinity 或 nodeSelector: https: //kubernetes.io/docs/concepts/configuration/assign-pod-node/
- 如果您使用集群自动缩放,请记住,您可能需要为每个可用区单独的自动缩放组(请参阅kubernetes/autoscaler#501)您还可以在此处阅读有关此内容的一些内容:kubernetes/kubernetes#34583
您能帮我比较这些方法吗?比如在可扩展性、成本效率、可维护性方面……或者也许你能想到更好的?
有没有一种简单的方法可以从命令行验证 RabbitMQ 用户密码?简单地说,我的意思是:
没有启用rabbitmq_management插件
没有额外的依赖项,如 ruby/python/等。默认情况下,Linux 机器上通常不存在库。
rabbitmq ×10
amazon-ebs ×1
debian ×1
docker ×1
kubernetes ×1
service ×1
systemd ×1
ubuntu ×1
windows ×1