AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 692056
Accepted
Garreth McDaid
Garreth McDaid
Asked: 2015-05-15 07:05:02 +0800 CST2015-05-15 07:05:02 +0800 CST 2015-05-15 07:05:02 +0800 CST

RabbitMQ 集群的自动配置

  • 772

RabbitMQ 集群文档

https://www.rabbitmq.com/clustering.html

描述了一个过程,您可以通过该过程为集群部署配置文件,以便在您的 rabbitmq 节点 boot.eg 时自动创建集群

[{rabbit,
  [{cluster_nodes, {['rabbit@rabbit1', 'rabbit@rabbit2', 'rabbit@rabbit3'], ram}}]}].

您在 /etc/rabbitmq/rabbitmq.config 的 3 个节点中的每一个上应用此文件,然后在每个节点上启动 rabbitmq,显然会形成一个集群。

这似乎不太好用,例如

如果你启动 rabbit2,而 rabbit3 还没有启动,服务将不会在 rabbit2 上启动,因为它正在尝试使用 rabbit3 创建一个集群。

同样,如果您只在rabbit1上应用配置,并预先启动rabbit2和rabbit3,则rabbit1将仅与rabbit2形成一个集群,根据文档(我不明白为什么):

RabbitMQ will try to cluster to each node provided, and stop after it can cluster with one of them.

这似乎可行的唯一方法是,如果您在所有 3 个节点上应用配置文件,并让它们在完全相同的时间启动。我正在尝试使用 Ansible 部署它,它按顺序创建节点,所以这不起作用。

我在这里想念什么?

ansible
  • 2 2 个回答
  • 6758 Views

2 个回答

  • Voted
  1. Jakov Sosic
    2015-05-15T13:44:51+08:002015-05-15T13:44:51+08:00

    我还使用 Puppet 部署 RabbitMQ 集群,实际上您不必同时启动所有节点。

    我通常做的,到目前为止为我工作的是:

    • 安装 RabbitMQ(RPM 或 DEB)
    • 在每个节点上设置主机文件,以包含所有三个节点的条目。例子:

    .

    192.168.1.11    dev-c1n01-rabbitmq.example.com  dev-c1n01-rabbitmq
    192.168.1.12    dev-c1n02-rabbitmq.example.com  dev-c1n02-rabbitmq
    192.168.1.13    dev-c1n03-rabbitmq.example.com  dev-c1n03-rabbitmq
    

    我们聚集在一起的节点(因为我不想依赖可用的 DNS)* 部署 rabbitmq.config

    .

    [
      {rabbit, [
        {cluster_nodes, {['rabbit@dev-c1n01-rabbitmq', 'rabbit@dev-c1n02-rabbitmq', 'rabbit@dev-c1n03-rabbitmq'], disc}},
        {cluster_partition_handling, pause_minority},
        {disk_free_limit, 2147483648},
        {heartbeat, 0},
        {tcp_listen_options, [binary, {backlog, 1024}, {nodelay, true}, {keepalive, true} ]},
        {vm_memory_high_watermark, 0.6},
        {default_user, <<"admin">>},
        {default_pass, <<"somedefaultpass">>}
      ]},
      {kernel, [
    
      ]}
    ,
      {rabbitmq_management, [
        {listener, [
          {port, 15672}
        ]}
      ]}
    ].
    % EOF
    
    • 部署 erlang.cookie

    要创建 erlang cookie,我通常使用http://passwordsgenerator.net/并将其设置为创建 20 个仅与大写字符一致的字符串。然后,将此字符串放入 /var/lib/rabbitmq/.erlang.cookie,如下所示:

    echo -n 'LCQLSHVOPZFHRUXMMAPF' > /var/lib/rabbitmq/.erlang.cookie
    
    • 启动节点(顺序无关紧要,只要它们具有相同的 erlang.cookie 和 rabbitmq.config)

    这应该适合你。在 3.2、3.3 和 3.5 版本上测试。

    • 3
  2. Best Answer
    Garreth McDaid
    2015-05-16T02:40:12+08:002015-05-16T02:40:12+08:00

    我在这方面取得了一些进展。

    该问题似乎与在 rabbitmq.config 文件中使用ram节点而不是磁盘节点的选择有关。从文档中:

    RAM 节点是一个高级用例;在设置您的第一个集群时,您根本不应该使用它们。您应该有足够的磁盘节点来处理您的冗余需求,然后在必要时添加额外的 RAM 节点以进行扩展。

    只包含 RAM 节点的集群是脆弱的;如果集群停止,您将无法再次启动它并且将丢失所有数据。RabbitMQ 在许多情况下会阻止创建仅 RAM 节点的集群,但它不能绝对阻止它。

    当我将配置文件更改为使用“disc”而不是“ram”时,集群创建更加稳定。

    [{rabbit,
        [{cluster_nodes, {['rabbit@rabbit1', 'rabbit@rabbit2', 'rabbit@rabbit3'],disc}}]}].
    
    • 0

相关问题

  • Ansible 剧本,使用选项 --disabled-login 创建用户

  • ansible playbook,操作系统不同的用户

  • ansible:为什么文件模块会跳过?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve