我有一个双节点RabbitMQ 3.6.1群集(在AWS的CentOS 6.8上),似乎每隔30分钟重新启动一次。 我只是通过两台机器上的日志( /var/log/rabbitmq/rabbit@<hostname>.log )来获取所发生的事件的时间表。 我把它们重新安排在这个列表中: 19:22:10 UTC – 10.101.100.173: Stopping RabbitMQ – > Stopped RabbitMQ application 19:22:10 UTC – 10.101.101.48: Statistics database started 19:22:10 UTC – 10.101.100.173:RabbitMQ重新开始启动 19:22:10 UTC – 10.101.101.48:注意10.101.100.173 关机 ,然后loggingKeep [email protected] listeners: the node is already back 19:22:50 UTC – 10.101.100.173:RabbitMQ完成启动,logging消息开始“服务器启动完成,6个插件启动”。 19:22:50 UTC – 10.101.101.48:注意10.101.100.173已经启动 19:22:54 UTC – 10.101.101.48: Stopping […]
我想在Ubuntu 10.04上卸载RabbitMQ,并发出以下命令: sudo apt-get –purge autoremove rabbitmq-server 它卸载了所有依赖这样的erlang库,但是无法删除rabbitmq-server本身。 当我重复上面的命令时,我得到: (Reading database … 26297 files and directories currently installed.) Removing rabbitmq-server … * Stopping message broker rabbitmq-server * message broker already stopped [ OK ] invoke-rc.d: initscript rabbitmq-server, action "stop" failed. dpkg: error processing rabbitmq-server (–purge): subprocess installed pre-removal script returned error exit status 3 * […]
如何正确格式化json消息并通过syslog-ng将它们发送到amqp? json格式应该看起来像这样。 {"log":"This is the error message…", "date":"xxx", "source":"xxx"} 我的问题是,消息并不总是一个有效的JSONstring。 例如 "log":"This is a "serious" error message." 我将如何去转义消息? 我的syslog-ngconfiguration看起来像这样。 destination d_amqp { amqp( vhost("/") host("127.0.0.1") port(5672) username("guest") # required option, no default password("guest") # required option, no default exchange("syslog") exchange_type("header") routing_key("my-routing-key") body("\{\"log\":\"${MSG}\"\}") persistent(yes) value-pairs( scope("selected-macros" "nv-pairs" "sdata") ) ); }; 这只是一个例子,因为我现在没有真正的configuration。
我开始将我的应用程序迁移到Docker容器:我使用Ngnix,supervisord,gunicorn,python烧瓶,芹菜,花,lighttpd,RabbitMQ和Postgresql。 在我原来的虚拟机中,我将所有configuration保存在/ usr / local / src / application / conf /中settings.py我定义了我的: SQLALCHEMY_DATABASE_URI 在celeryconfig.py中我定义: BROKER_URL 我将创build5个容器: Ngnix负载均衡器 Flask API 芹菜 的RabbitMQ Lighttpd的 我正在使用docker-compose和卷。 由于现在我所有的IP地址都是本地主机(127.0.0.1) 什么是我的每个容器访问一个共同的configurationbuild议? 卷? 我怎么知道哪个IP地址分配给每个容器,所以我可以定义我的设置? 例如,当RabbitMQ启动什么IP我应该configuration在BROKER_URL? 由于我的Docker应用程序仍然会指向我的git repo,我可以将它指向我的主机文件夹,我应该在这里使用卷吗?
我在我的网站上有奇怪的,非常奇怪的CPU负载高峰。 正常加载2-3个左右,当我有这个峰值时,大约是100-150个峰值,可能是在任何时候。 不取决于我正常的加载情况(例如上午6点),峰值2-3-5分钟 CPU负载影响networkingstream量和nginx请求的数量。 这一次我没有很多Web服务器的请求。 服务器是与另一台服务器上的nginx,php-fpm,redis,rabbit-mq,mysql分开的web服务器。 我真的需要build议,我怎么知道这个来源。 当我知道源,我会消除它。 我会很感激你的build议。 来自zabbix监控的图表:
我正在尝试发布一个消息给rabbitmq。 这工作在生产环境env与相同的代码,所以我怀疑这是一个configuration问题。 rbqueue = RabbitMQClientQueue('cn-dip-v3', host = rabbitmq_config['host'], username = rabbitmq_config['user'], password = rabbitmq_config['password']) channel = rbqueue.connection.channel() args = {"x-max-priority": 10} channel.queue_declare(queue='cn-dip-v3', durable=True, arguments=args) result = channel.queue_declare(exclusive=True) callback_queue = result.method.queue msgBody = json.dumps({"ohad":123}) # may happen that sendResponseToDal is True but there is no sendResponseToDal method on server side data = {"body":msgBody,"queue_response" : False} if […]
我有一个2台机器的兔子集群,我需要迁移到新的物理硬件。 我通过将2个新服务器join群集来执行迁移。 一旦所有的连接都移走了,我从集群中删除了旧的服务器。 我没有意识到,我已经在旧的服务器上宣布了几个持久队列,现在显示为closures,我无法删除它们。 当我尝试删除队列(通过pipe理工具以及代码),我得到以下错误 The AMQP operation was interrupted: AMQP close-reason, initiated by Peer, code=404, text="NOT_FOUND – home node 'rabbit@rabbit-1' of durable queue 'udq_1' in vhost '/' is down or inaccessible", classId=50, methodId=30, cause= 自从退役后,我无法将旧的服务器恢复到在线状态。 有没有办法可以删除这些队列,而不必重置整个群集?
我目前正在设置一个RabbitMQ集群,要求集群内的所有通信都要encryption。 我按照https://www.rabbitmq.com/clustering-ssl.html上的指南 – 使用cert和key创build了一个文件,并将SSL参数作为环境variables传递给rabbitmq-server: RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS='-pa /usr/lib/erlang/lib/ssl-7.1/ebin -proto_dist inet_tls -ssl_dist_opt server_certfile /etc/ssl/certs/rabbit.pem' RABBITMQ_CTL_ERL_ARGS='-pa /usr/lib/erlang/lib/ssl-7.1/ebin -proto_dist inet_tls -ssl_dist_opt server_certfile /etc/ssl/certs/rabbit.pem' 服务器启动正常,并启用TLS侦听,但我不能通过rabbitmqctl发出任何命令: # rabbitmqctl status Status of node rabbit@rabbit01 … Error: unable to connect to node rabbit@rabbit01: nodedown DIAGNOSTICS =========== attempted to contact: [rabbit@rabbit01] rabbit@rabbit01: * connected to epmd (port 4369) on rabbit01 * epmd reports node 'rabbit' […]
我正在分析rabbitMQ内存问题。 有时,当大部分队列为空时,服务器将耗尽内存,并且很less有消息处于待处理状态。 我可以从这个内存状态快照中学到什么? 特别是二进制引用代表什么?
我们正面临以下问题:如何在具有持久数据的Docker-Swarm中运行RabbitMQ。 目前我们有以下设置: Docker-Swarm 3节点 GlusterFS作为所有节点之间的复制文件系统 RabbitMQ与领事Image:gavinmroy / alpine-rabbitmq-autocluster 这大部分时间工作正常..但现在我们必须使用持久队列来坚持数据。 我们试图使用–hostnames或设置RABBITMQ_NODENAME,比我们得到一个像“rabbit @ CONTAINERID”这样的每个启动节点的子目录的问题是:当容器重新启动时,一个新的文件夹被用来保存数据(新的ContainerID) ..任何build议如何得到一个工作设置,使用Docker Swarmfunction?