在替换服务器上克隆RabbitMQ管理用户等

在替换服务器上克隆RabbitMQ管理用户等,rabbitmq,chef-infra,amqp,Rabbitmq,Chef Infra,Amqp,我们有两台易受攻击的AWS主机在集群中运行RabbitMQ实现。我们需要升级硬件,因此我们开发了一本厨师烹饪书来产生替换服务器 我们不希望手工重新创建的一件事是管理员用户、队列等 从旧主机到新主机的最好方法是什么?我相信是/var/lib/rabbitmq/mnesia目录中的所有内容 将文件从一台主机复制到另一台主机是否明智 是否有一种程序化的方法来实现这一点 是否可以将其编码到我们的厨师烹饪手册中?您完全可以通过命令行导出和导入配置: 不过,我不确定管理员用户 如果在新硬件上创建新的rabb

我们有两台易受攻击的AWS主机在集群中运行RabbitMQ实现。我们需要升级硬件,因此我们开发了一本厨师烹饪书来产生替换服务器

我们不希望手工重新创建的一件事是管理员用户、队列等

从旧主机到新主机的最好方法是什么?我相信是
/var/lib/rabbitmq/mnesia
目录中的所有内容

将文件从一台主机复制到另一台主机是否明智

是否有一种程序化的方法来实现这一点


是否可以将其编码到我们的厨师烹饪手册中?

您完全可以通过命令行导出和导入配置:


不过,我不确定管理员用户

如果在新硬件上创建新的rabbitmq节点,将获得该新节点中的所有用户。这很容易尝试:

  • 运行带有rabbitmq映像的docker容器(带有管理插件) 并创建一个用户
  • 运行另一个容器并将该节点添加到 第一组
  • 在第一个上杀死rabbitmq,或删除 docker容器,您将看到仍然有新的 在第二个(但现在是主)节点上创建用户
  • 我写docker是因为这样创建集群更快,但是如果你已经有了集群,你可以用它来测试

    对于队列和交换,我不想引用在rabbitmq文档页面中找到的几乎所有内容,但我只想说,您必须注意以下几点:

    • 排他队列,因为一旦客户端连接断开,它们就消失了
    • 队列镜像(如果你有任何设置,如果不是,如果不需要的话,考虑它是明智的)
    我会逐步进行迁移,等待队列清空,然后杀死旧硬件上的节点。这或许可以用大爆炸的方式实现,但似乎风险更大。如果您有一个正在运行的系统,请设置队列镜像,并尝试找到适当的时间进行手动同步,但要小心,这会对代理性能产生巨大影响

    此外,还有一点(我必须指出,我没有使用它,甚至没有探索它),但这可能是另一种方式,因为(引用链接形式):

    本质上,电铲是一个简单的泵。每铲:

    连接到源代理和目标代理,使用 来自队列的消息,将每条消息重新发布到目标 代理(默认情况下,使用原始exchange名称和 路由(U键)