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

时间:2016-03-25 18:18:55

标签: rabbitmq chef amqp

我们有几个运行在集群中的RabbitMQ实现的硬件AWS主机。我们需要升级硬件,因此我们开发了一个Chef cookbook来生成替换服务器。

我们宁愿不手动重新创建的一件事是管理员用户,队列等等。

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

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

是否有程序化方法来执行此操作?

可以编入我们的厨师食谱吗?

2 个答案:

答案 0 :(得分:0)

您绝对可以通过命令行导出和导入配置:https://www.rabbitmq.com/management-cli.html

但是,我不确定管理员用户。

答案 1 :(得分:0)

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

  1. 运行带有rabbitmq图像的docker容器(带管理插件) 并创建用户
  2. 运行另一个容器并将该节点添加到 第一个集群
  3. 在第一个上杀死rabbitmq,或删除 docker容器,你会发现你还有新的容器 在第二个(但现在是主节点)节点上创建用户
  4. 我写了docker,因为以这种方式创建群集的速度更快,但是如果你已经有了一个群集,你可以根据需要使用它进行测试。

    对于队列和交换,我不想引用high availability的rabbitmq文档页面中的几乎所有内容,但我只想说你必须注意以下内容:< / p>

    • 独占队列,因为一旦客户端连接消失,它们就消失了
    • 队列镜像(如果你有任何设置,如果没有,那么考虑它是明智的,如果不是必要的话)

    我会逐渐进行迁移,等待队列清空,然后杀死旧硬件上的节点。它可能以大爆炸的方式行事,但似乎风险更大。如果你有一个正在运行的系统,那么设置队列镜像并尝试找到适当的时间来进行手动同步 - 但要小心,这会对代理性能产生巨大影响。

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

      

    实质上,铲子是一种简单的泵。每把铲子:

         

    连接到源代理和目标代理,消耗   来自队列的消息,将每条消息重新发布到目标   经纪人(默认使用原始交易所名称和   routing_key)。