【问题标题】:How to sync new rabbitmq nodes with a current cluser?如何将新的 rabbitmq 节点与当前集群同步?
【发布时间】:2014-08-15 04:22:57
【问题描述】:

目前有一个由 3 个 rabbitmq 节点组成的集群,每个节点都位于不同的 aws 区域中。我已经能够对它们进行聚类并证明这是有效的。

我遇到的挑战是使用自动缩放并将新节点自动连接到集群。据我了解,所有其他节点都必须相互了解,并且在它们的 /etc/hosts 文件中拥有对方的 IP。

有没有办法只搜索集群名称并告诉节点连接?

我尝试在 ELB 后面设置节点并将它们指向 ELB 而不是 IP;然而,这并没有奏效。

【问题讨论】:

  • 如果您使用亚马逊VPC,您的目标会更容易,我认为更正确,因为您可以减少TCP开放端口并且您的RMQ实例受到更多保护。在您的情况下,您可以考虑使用亚马逊 SQS 将新 IP 广播到其他服务器,然后更改主机文件。
  • @Gas 好像有点傻,基本上是用amazons mq给我们的mq发消息

标签: amazon-web-services rabbitmq load-balancing autoscaling


【解决方案1】:

对于其他尝试这个的人,我所做的工作是安装aws-cli。之后,我编写了一个脚本来根据我拥有的三个不同的 elb(每个节点一个)更改 /etc/hosts 文件

脚本首先通过运行这个命令找到elb后面的ec2实例

aws elb describe-instance-health --load-balancer-name <NAME OF YOUR ELB>

然后脚本通过运行这个命令获取elb后面的ec2的ip

aws ec2 describe-instances --instance-ids <THE VALUE RETURNED FROM ABOVE> --query 'Reservations[*].Instances[*].PrivateIpAddress' --output text

我们正在做的技巧是在一个脚本中运行它,它单独遍历每个 elb,每个节点前面只有一个 elb。这允许节点关闭,自动调用备份,我们可以知道新的 ip,而不必担心手动编辑文件。

因此,我们只是运行每一个并告诉它将输出保存到 /etc/hosts 文件。

希望对某人有所帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 2019-01-15
    • 1970-01-01
    相关资源
    最近更新 更多