gpt4 book ai didi

amazon-ec2 - 从 RabbitMQ 服务器迁移数据

转载 作者:行者123 更新时间:2023-12-03 16:51:55 24 4
gpt4 key购买 nike

我们在 AWS 上托管了 RabbitMQ 服务器,最近我们收到通知,该实例将处于维护状态,并且将在几个小时内暂时不可用。由于它是生产服务器,我们希望避免用户停机,目前正在考虑将 RabbitMQ 迁移到另一台服务器而不会丢失数据的策略。看起来有两种选择:

  1. 尝试连接来自不同机器的其他节点并复制数据给他们。
  2. 在新机器上安装 rabbit 并复制 mnesia 文件从旧服务器到新服务器。打开新服务器,关闭旧服务器一。例如。可以在 AWS 上做图像快照,可以简化流程。

我无法在不清理数据的情况下找到实现 (1) 的方法,因此该选项看起来不可行。至于 (2) 它看起来非常手动和令人毛骨悚然。是否还有其他数据迁移策略,或者我在这里遗漏了什么?

最佳答案

我设法为第一个选项设置流程,通过设置 RabbitMQ 集群在不停机的情况下复制数据。为此,我遵循了 manual ,但调整了两件事以使其适用于我的堆栈:

  1. AWS 中的 RabbitMQ 集群不使用 IP 地址作为 fqdn 短名称,因此要使集群机器相互看到,您需要编辑/etc/hosts 文件并重新排列集群机器的“字符串”名称:

vi /etc/hosts

文件应该是这样的:


127.0.0.1 本地主机
10.242.86.191 ip-10-242-86-191
::1 ip6-localhost ip6-环回
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-所有节点
ff02::2 ip6-所有路由器
ff02::3 ip6-allhosts

  1. 设置集群后,您需要按照所述设置复制 here但重要的事实是默认情况下不会复制队列。因此,您需要像这样设置队列复制策略:

rabbitmqctl set_policy policy_name "queue_pattern" '{"ha-mode":"all", "ha-sync-mode":"automatic"}' -p your_vhost

顺便说一下,文档中没有提到 -p your_vhost 参数 - 如果您使用任何参数,请小心指定 vhost。

在设置队列中的所有内容并通过 mnesia 同步后,这使我能够在不停机的情况下关闭第一台集群机器,并在维护后打开而不会丢失数据。

关于amazon-ec2 - 从 RabbitMQ 服务器迁移数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42773358/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com