任何建议如何基于自动缩放规则从RabbitMQ集群中删除死节点,其中节点可以上升或下降,或者如果您使用的是竞价型实例?
当节点发生故障时,RabbitMQ不会自动将其从复制列表中删除,我可以在管理UI中看到
Node not running
。 br /> 我设法通过Ansible和userdata自动将一个扩展实例加入集群。
#1 楼
考虑使用Rabbitmq / rabbitmq-autocluster插件:RabbitMQ插件,该插件使用多种对等发现机制自动将节点群集:
领事,
etcd2
DNS A记录
AWS EC2标签
AWS Autoscaling组
有一个要进行此设置,可以插入一些相当的配置以进行设置,包括设置IAM策略以及将EC2标签添加到要加入群集的实例中。
如果要使用AWS Autoscaling Groups,则可以将以下内容添加到您的
rabbitmq.config
中:[
{rabbit, [ ... ]},
{autocluster, [
{backend, aws},
{aws_autoscaling, true},
{aws_ec2_region, "us-west-2"}
]}
].
如果不使用AWS Autoscaling组,您仍然可以使用EC2实例上的标签来获得所需的结果:
综上所述,我强烈建议您使用HashiCorp的Consul作为服务发现机制,从长远来看,在解耦系统各部分方面,您将获得更大的灵活性。来自e其他。
评论
感谢您提供详细的说明和图表,因此AFAIK Rabbitmq / rabbitmq-autocluster插件将知道在节点关闭后也可以从复制列表中删除该节点,如果再问一件事,我想从2节点开始群集,建议您使用策略`rabbitmqctl set_policy ha-all“”'{“ ha-mode”:“ all”,“ ha-sync-mode”:“ automatic “}'`?还是应该在另一个问题中发布它?
–柏林
17-3-25在22:06
可能还有另一个问题,因为注释中的格式并不是那么容易使用。我一直建议客户在采用云时使用大量的小型实例,而不是相反的实例。这是因为在云中预计会出现故障,如果您有2节点群集,而1发生故障,则损失了50%的容量,而如果您有3节点群集,而1发生了故障,则损失仅33%。
–Richard Slater
17 Mar 26 '17在8:47
我已经使用Rabbitmq / rabbitmq-autocluster插件配置了集群,并且运行良好,但是当节点出现故障RabbitMQ不会将其从复制列表中删除时,为什么会这样?
–柏林
17年4月1日在15:13
您是否启用了集群清理配置选项?
–Richard Slater
17年4月1日在16:18
谢谢,找到了它https://github.com/aweber/rabbitmq-autocluster/wiki/General-Settings,我会尝试的。
–柏林
17年4月1日在22:50
评论
@ Pierre.Vriens,我只更改了一个问题,谢谢。谢谢!您没有破坏我希望的其他4个(或大约)问题。也许将它们保留为后续问题,以至于它们仍然有意义?
是的,这些问题仍然有意义,但这是最重要的。我稍后再发表另一个问题:)谢谢!
@柏林我画了一张图表,代表了我认为您正在描述的内容,如果您要表达的是其他意思,请告诉我,我会适应的。
嘿@ Pierre.Vriens-我不在乎我有几分钟的时间想澄清我的假设,从理论上讲,我可以将其添加到答案中,我很可能会做到这一点。