帮助我理解一些东西。 我已经看了几个企业应用程序体系结构,我注意到其中有几个使用了Message Queue服务,比如ActiveMQ或者RabbitMQ。 我对消息排队服务器有什么样的表面层次的知识,但是我不明白为什么我会select使用一种应用程序基础结构,而不是使用像HAProxy这样的标准负载平衡技术。 两者的真正区别是什么? 两者似乎都将stream量和/或消息路由到订阅队列或池的节点。 这些每个都有利/弊吗?
RabbitMQ在closures所有节点后启动集群的一般规则是首先启动在closures过程中最后停止的节点,然后启动其余的节点。 可以说,closures进程是由一些不保存状态的外部脚本启动的,因此我不知道哪个节点最后停止了,当我想启动它们时。 RabbitMQ是否提供了一些方法来确定哪个节点最后被closures? 我在/var/lib/rabbitmq/mnesia/<node>find了一个名为nodes_running_at_shutdown的文件,这个文件似乎包含closures期间运行的节点的信息。 基于这一点,我发现最后一个节点只有一个节点(本身),而且我实际上证实了这一点,但是我找不到该文件的任何文档,所以我不确定这个解决scheme是不是'没有一些angular落的情况下(除了明显的缺点,它是无证的,可以随时改变)。 有没有推荐的方法来找出最后停止的节点? 编辑:我的问题是更多关于我们是否可以从RabbitMQ本身检索状态,没有外部工具,将持续状态之间的停止和启动过程。
我没有设置一个rabbitmq铲amqps。 同一把铲子在amqp上工作得很好。 我的(编辑)uri: amqps://un:[email protected]:5679?cacertfile=/etc/ssl/certs/example.com.cacert.crt&certfile=/etc/ssl/certs/example.com.crt&keyfile=/etc/ssl/private/example.com.key&verify=verify_peer stunnel日志中的错误: SSL_accept: 14094410: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure 和铲状态是 {{badmatch,{error,{tls_alert,“handshake failure”}}} 通过openssl从shell中连接工程: openssl s_client -connect myhost.example.com:5679 -cert /etc/ssl/certs/example.com.crt -key /etc/ssl/private/example.com.key -CAfile /etc/ssl/certs/example.com.cacert.crt 回报 Negotiated TLSv1/SSLv3 ciphersuite: ECDHE-RSA-AES256-GCM-SHA384 (256-bit encryption) 我的rabbitmq.config: [ {kernel, [ ]}, {ssl, [{versions, ['tlsv1.2', 'tlsv1.1' ]}]}, {rabbit, [ {ssl_listeners, [5671]}, {ssl_options, [{cacertfile,"/etc/ssl/certs/example.com.cacert.crt"}, {certfile,"/etc/ssl/certs/example.com.crt"}, {keyfile,"/etc/ssl/private/example.com.key"}, {versions, ['tlsv1.2', 'tlsv1.1']}, {depth, […]
使用为Consulconfiguration的rabbitmq-autocluster ,我可以启动2个正确注册到Consul的RMQ实例。 我可以通过查看Consul的网页graphics用户界面来查看“rabbitmq”服务button上的“2通过”。 但是, rabbitmqctl cluster_status并不表示RMQ实例已聚集。 下面你可以看到一个关于不能连接到rabbit@node1 ,但是没有任何东西被configuration成这个名字。 这是根本还是我的问题? 我是否需要设置RMQ Docker容器主机名才能使其工作? 我认为rabbitmq-autocluster允许一个集群设置,而不需要混淆主机名( /etc/hosts或DNS),因为Consul会处理所有这些。 这是错的吗? RMQ和Consul都在Docker容器中运行,像这样运行: 集装箱: RMQ 1 docker run –name rmq1 -d \ -e AUTOCLUSTER_TYPE=consul \ -e CONSUL_SCHEME=http \ -e CONSUL_HOST=192.168.99.100 \ -e CONSUL_PORT=8500 \ -e CONSUL_SERVICE=rabbitmq \ -e CLUSTER_NAME=rmqcluster \ -l consul \ -p 4369:4369 \ -p 5672:5672 \ -p 15672:15672 \ -p […]
我在一个kubernetes集群上使用了一个RabbitMQ实例。 RabbitMQ吊舱可以访问RAM的15Go,并设置10Go的高水位。 经过几个小时的使用(和几个队列存储了60百万个持久消息),RabbitMQ的UI显示使用4GB(10GB高水位),但rabbitMQ pod使用了近12GB的RAM。 没有比RabbitMQ运行在这个吊舱。 在pod上运行ps命令显示命令/usr/lib/erlang/erts-8.3/bin/beam.smp -W w -A 64 -P 1048576 -t 5000000 -st正在使用几乎10GB的内存: root@rabbitmq-0:/# ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND rabbitmq 1 0.0 0.0 4340 152 ? Ss Apr25 0:00 /bin/sh -e /usr rabbitmq 131 0.0 0.0 11492 116 ? S Apr25 0:00 /usr/lib/erlang rabbitmq 266 […]
我试图确保安装了RabbitMQ,但不知道如何保护Erlang EPMD端口。 我只有一台机器运行任何东西,所以我只想让它只听回环设备。 根据文档 ,我补充道: ERL_EPMD_ADDRESS=127.0.0.1 到/etc/rabbitmq/rabbitmq-env.conf ,但是这个没有任何作用,因为端口仍然在远程系统的nmap显示为打开。 有没有办法locking这个端口,我不会使用?
我想知道自动缩放我的Web应用程序体系结构的可能选项。 我在架构师有web app(Tomcat),中间件(RabbitMQ),数据库(MongoDB),工人(独立的Java应用程序)。 现在我正在尝试基于CPU利用率进行扩展。 我可以自动扩展我的networking应用程序和工作人员,但我正面临着缩放rabbitmq的问题,因为我不知道如何传递负载到新instantinated rabbtimq服务器。 例如,我有2个Tomcat服务器正在运行。 只要我的RabbitMQ实例的CPU利用率大于80%,AWS就会添加一个新的RabbitMQ服务器。 但是我的Tomcat服务器不知道添加了一个新的RabbitMQ实例,所以他们一直只提到原来的RabbitMQ服务器,而不是新创build的那个。 我能做什么? 当兔子CPU利用率boost时,我应该自动缩放整个架构吗? 还是应该放弃完全自动扩展RabbitMQ的想法,并在部署的初始阶段创build所需的实例? 还有其他的select吗?
我已经开始使用RabbitMQ。 我有一个(Windows)机器,我在其上安装了两个RabbitMQ节点作为服务 – 我已经select了每个节点的名称,端口和服务名称。 服务正常运行(我看到他们正在监听一个netstat-a)。 我还安装了pipe理插件“rabbitmq-plugins enable rabbitmq_management”,并重新启动了这两个服务。 但是插件没有运行 – 我没有看到它在一个netstat监听,我不能通过浏览器连接到pipe理控制台。 任何想法可能是错的? 有什么日志可以看到什么是goind? 更新 :当我做rabbitmq插件列表我得到: 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时遇到了一些问题。 我有一个RabbitMQ服务器和许多ec2实例,连接并消费来自这个服务器的消息。 问题是,有时当我需要终止一个ec2实例,它与RabbitMQ服务器的连接没有closures。 正因为如此,我们开始看到从未回到就绪状态的消息。 我现在所做的就是使用rabbitmqctl来删除这个连接,并且/或者使用我写的python脚本来杀死任何空闲超过X天的连接。 我已经尝试使用heatrbeat [1] RabbitMQ选项,但问题仍然存在。 我想做的是自动closures任何“死”(闲置很长时间)的连接。 这是我设置在客户端,而不是服务器端? RabbitMQ是3.3.4,我们在客户端使用py-amqp [2]。 [1] https://www.rabbitmq.com/configure.html [2] https://github.com/celery/py-amqp
我在一台Windows服务器上安装了RabbitMQ,我试图在另一台服务器上设置它。 我做了一个Export然后从旧服务器Import definitions ,但它似乎缺less一个项目…. 在RabbitMQpipe理网页的“概览”选项卡上,有一个Web context -> Context section 。 在我的旧服务器上,我有“RabbitMQpipe理”和“redirect到端口XXXX”的条目。 在新的服务器上,我只有“RabbitMQpipe理”。 我如何去添加“redirect到端口XXXX”上下文条目? 我似乎没有select在UI中添加或编辑上下文。