首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rabbitmq实例正在崩溃。

Rabbitmq实例正在崩溃。
EN

Stack Overflow用户
提问于 2022-07-05 02:42:00
回答 1查看 343关注 0票数 1

我使用docker-compose.yml文件在一个主机上旋转3个RabbitMQ实例。在mac上运行docker时,当我运行docker-compose up时,我看到erlang与集群中的实例不匹配。如果你需要其他信息,请告诉我。

代码语言:javascript
运行
复制
version: '3'

services:

  rabbitmq1:
    image: rabbitmq:3.8.34-management
    hostname: rabbitmq1
    environment:
      - RABBITMQ_ERLANG_COOKIE=12345
      - RABBITMQ_DEFAULT_USER=guest
      - RABBITMQ_DEFAULT_PASS=guest
      - RABBITMQ_DEFAULT_VHOST=/

  rabbitmq2:
    image: rabbitmq:3.8.34-management
    hostname: rabbitmq2
    depends_on:
      - rabbitmq1
    environment:
      - RABBITMQ_ERLANG_COOKIE=12345
      - RABBITMQ_DEFAULT_USER=guest
      - RABBITMQ_DEFAULT_PASS=guest
      - RABBITMQ_DEFAULT_VHOST=/
    volumes:
      - ./cluster-entrypoint.sh:/usr/local/bin/cluster-entrypoint.sh
    entrypoint: /usr/local/bin/cluster-entrypoint.sh

  rabbitmq3:
    image: rabbitmq:3.8.34-management
    hostname: rabbitmq3
    depends_on:
      - rabbitmq1
    environment:
      - RABBITMQ_ERLANG_COOKIE=12345
      - RABBITMQ_DEFAULT_USER=guest
      - RABBITMQ_DEFAULT_PASS=guest
      - RABBITMQ_DEFAULT_VHOST=/
    volumes:
      - ./cluster-entrypoint.sh:/usr/local/bin/cluster-entrypoint.sh
    entrypoint: /usr/local/bin/cluster-entrypoint.sh
    
  haproxy:
    image: haproxy:1.7
    volumes:
      - ./haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro
    depends_on:
      - rabbitmq1
      - rabbitmq2
      - rabbitmq3
    ports:
      - 15672:15672
      - 5672:5672

下面是我的集群-entrypoint.sh文件

代码语言:javascript
运行
复制
#!/bin/bash

set -e

# Start RMQ from entry point.
# This will ensure that environment variables passed
# will be honored
/usr/local/bin/docker-entrypoint.sh rabbitmq-server -detached

# Do the cluster dance
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@rabbitmq1

# Stop the entire RMQ server. This is done so that we
# can attach to it again, but without the -detached flag
# making it run in the forground
rabbitmqctl stop

# Wait a while for the app to really stop
sleep 2s

# Start it
rabbitmq-server

抱歉原木太多了。我使用了RabbitMQ:3.8.34映像,集群中所有实例的erlang都不同,RabbitMQ1启动但其他实例没有启动。

以下是日志:

代码语言:javascript
运行
复制
haproxy_1    | <7>haproxy-systemd-wrapper: executing /usr/local/sbin/haproxy -p /run/haproxy.pid -db -f /usr/local/etc/haproxy/haproxy.cfg -Ds 
rabbitmq1_1  | 
rabbitmq1_1  | warning: /var/lib/rabbitmq/.erlang.cookie contents do not match RABBITMQ_ERLANG_COOKIE
rabbitmq1_1  | 
rabbitmq1_1  | WARNING: '/var/lib/rabbitmq/.erlang.cookie' was populated from '$RABBITMQ_ERLANG_COOKIE', which will no longer happen in 3.9 and later! (https://github.com/docker-library/rabbitmq/pull/424)
rabbitmq2_1  | 
rabbitmq2_1  | warning: /var/lib/rabbitmq/.erlang.cookie contents do not match RABBITMQ_ERLANG_COOKIE
rabbitmq2_1  | 
rabbitmq2_1  | WARNING: '/var/lib/rabbitmq/.erlang.cookie' was populated from '$RABBITMQ_ERLANG_COOKIE', which will no longer happen in 3.9 and later! (https://github.com/docker-library/rabbitmq/pull/424)
rabbitmq3_1  | 
rabbitmq3_1  | warning: /var/lib/rabbitmq/.erlang.cookie contents do not match RABBITMQ_ERLANG_COOKIE
rabbitmq3_1  | 
rabbitmq3_1  | WARNING: '/var/lib/rabbitmq/.erlang.cookie' was populated from '$RABBITMQ_ERLANG_COOKIE', which will no longer happen in 3.9 and later! (https://github.com/docker-library/rabbitmq/pull/424)
rabbitmq1_1  | WARNING: 'docker-entrypoint.sh' generated/modified the RabbitMQ configuration file, which will no longer happen in 3.9 and later! (https://github.com/docker-library/rabbitmq/pull/424)
rabbitmq1_1  | 
rabbitmq1_1  | Generated end result, for reference:
rabbitmq1_1  | ------------------------------------
rabbitmq1_1  | loopback_users.guest = false
rabbitmq1_1  | listeners.tcp.default = 5672
rabbitmq1_1  | default_pass = guest
rabbitmq1_1  | default_user = guest
rabbitmq1_1  | default_vhost = /
rabbitmq1_1  | management.tcp.port = 15672
rabbitmq1_1  | ------------------------------------
rabbitmq3_1  | WARNING: 'docker-entrypoint.sh' generated/modified the RabbitMQ configuration file, which will no longer happen in 3.9 and later! (https://github.com/docker-library/rabbitmq/pull/424)
rabbitmq3_1  | 
rabbitmq3_1  | Generated end result, for reference:
rabbitmq3_1  | ------------------------------------
rabbitmq3_1  | loopback_users.guest = false
rabbitmq3_1  | listeners.tcp.default = 5672
rabbitmq3_1  | default_pass = guest
rabbitmq3_1  | default_user = guest
rabbitmq3_1  | default_vhost = /
rabbitmq3_1  | management.tcp.port = 15672
rabbitmq3_1  | ------------------------------------
rabbitmq2_1  | WARNING: 'docker-entrypoint.sh' generated/modified the RabbitMQ configuration file, which will no longer happen in 3.9 and later! (https://github.com/docker-library/rabbitmq/pull/424)
rabbitmq2_1  | 
rabbitmq2_1  | Generated end result, for reference:
rabbitmq2_1  | ------------------------------------
rabbitmq2_1  | loopback_users.guest = false
rabbitmq2_1  | listeners.tcp.default = 5672
rabbitmq2_1  | default_pass = guest
rabbitmq2_1  | default_user = guest
rabbitmq2_1  | default_vhost = /
rabbitmq2_1  | management.tcp.port = 15672
rabbitmq2_1  | ------------------------------------
rabbitmq3_1  | RABBITMQ_ERLANG_COOKIE env variable support is deprecated and will be REMOVED in a future version. Use the $HOME/.erlang.cookie file or the --erlang-cookie switch instead.
rabbitmq3_1  | Stopping rabbit application on node rabbit@rabbitmq3 ...
rabbitmq3_1  | Error: unable to perform an operation on node 'rabbit@rabbitmq3'. Please see diagnostics information and suggestions below.
rabbitmq3_1  | 
rabbitmq3_1  | Most common reasons for this are:
rabbitmq3_1  | 
rabbitmq3_1  |  * Target node is unreachable (e.g. due to hostname resolution, TCP connection or firewall issues)
rabbitmq3_1  |  * CLI tool fails to authenticate with the server (e.g. due to CLI tool's Erlang cookie not matching that of the server)
rabbitmq3_1  |  * Target node is not running
rabbitmq3_1  | 
rabbitmq3_1  | In addition to the diagnostics info below:
rabbitmq3_1  | 
rabbitmq3_1  |  * See the CLI, clustering and networking guides on https://rabbitmq.com/documentation.html to learn more
rabbitmq3_1  |  * Consult server logs on node rabbit@rabbitmq3
rabbitmq3_1  |  * If target node is configured to use long node names, don't forget to use --longnames with CLI tools
rabbitmq3_1  | 
rabbitmq3_1  | DIAGNOSTICS
rabbitmq3_1  | ===========
rabbitmq3_1  | 
rabbitmq3_1  | attempted to contact: [rabbit@rabbitmq3]
rabbitmq3_1  | 
rabbitmq3_1  | rabbit@rabbitmq3:
rabbitmq3_1  |   * connected to epmd (port 4369) on rabbitmq3
rabbitmq3_1  |   * epmd reports: node 'rabbit' not running at all
rabbitmq3_1  |                   no other nodes on rabbitmq3
rabbitmq3_1  |   * suggestion: start the node
rabbitmq3_1  | 
rabbitmq3_1  | Current node details:
rabbitmq3_1  |  * node name: 'rabbitmqcli-797-rabbit@rabbitmq3'
rabbitmq3_1  |  * effective user's home directory: /var/lib/rabbitmq
rabbitmq3_1  |  * Erlang cookie hash: gnzLDuqKcGxMNKFokfhOew==
rabbitmq3_1  | 
docker-rabbitmq-cluster_rabbitmq3_1 exited with code 69
rabbitmq2_1  | RABBITMQ_ERLANG_COOKIE env variable support is deprecated and will be REMOVED in a future version. Use the $HOME/.erlang.cookie file or the --erlang-cookie switch instead.
rabbitmq2_1  | Stopping rabbit application on node rabbit@rabbitmq2 ...
rabbitmq2_1  | Error: unable to perform an operation on node 'rabbit@rabbitmq2'. Please see diagnostics information and suggestions below.
rabbitmq2_1  | 
rabbitmq2_1  | Most common reasons for this are:
rabbitmq2_1  | 
rabbitmq2_1  |  * Target node is unreachable (e.g. due to hostname resolution, TCP connection or firewall issues)
rabbitmq2_1  |  * CLI tool fails to authenticate with the server (e.g. due to CLI tool's Erlang cookie not matching that of the server)
rabbitmq2_1  |  * Target node is not running
rabbitmq2_1  | 
rabbitmq2_1  | In addition to the diagnostics info below:
rabbitmq2_1  | 
rabbitmq2_1  |  * See the CLI, clustering and networking guides on https://rabbitmq.com/documentation.html to learn more
rabbitmq2_1  |  * Consult server logs on node rabbit@rabbitmq2
rabbitmq2_1  |  * If target node is configured to use long node names, don't forget to use --longnames with CLI tools
rabbitmq2_1  | 
rabbitmq2_1  | DIAGNOSTICS
rabbitmq2_1  | ===========
rabbitmq2_1  | 
rabbitmq2_1  | attempted to contact: [rabbit@rabbitmq2]
rabbitmq2_1  | 
rabbitmq2_1  | rabbit@rabbitmq2:
rabbitmq2_1  |   * connected to epmd (port 4369) on rabbitmq2
rabbitmq2_1  |   * epmd reports: node 'rabbit' not running at all
rabbitmq2_1  |                   no other nodes on rabbitmq2
rabbitmq2_1  |   * suggestion: start the node
rabbitmq2_1  | 
rabbitmq2_1  | Current node details:
rabbitmq2_1  |  * node name: 'rabbitmqcli-568-rabbit@rabbitmq2'
rabbitmq2_1  |  * effective user's home directory: /var/lib/rabbitmq
rabbitmq2_1  |  * Erlang cookie hash: gnzLDuqKcGxMNKFokfhOew==
rabbitmq2_1  | 
docker-rabbitmq-cluster_rabbitmq2_1 exited with code 69
rabbitmq1_1  | Configuring logger redirection
rabbitmq1_1  | 2022-07-05 02:43:40.659 [debug] <0.288.0> Lager installed handler error_logger_lager_h into error_logger
rabbitmq1_1  | 2022-07-05 02:43:40.670 [debug] <0.291.0> Lager installed handler lager_forwarder_backend into error_logger_lager_event
rabbitmq1_1  | 2022-07-05 02:43:40.670 [debug] <0.312.0> Lager installed handler lager_forwarder_backend into rabbit_log_mirroring_lager_event
rabbitmq1_1  | 2022-07-05 02:43:40.670 [debug] <0.303.0> Lager installed handler lager_forwarder_backend into rabbit_log_feature_flags_lager_event
rabbitmq1_1  | 2022-07-05 02:43:40.670 [debug] <0.309.0> Lager installed handler lager_forwarder_backend into rabbit_log_ldap_lager_event
rabbitmq1_1  | 2022-07-05 02:43:40.670 [debug] <0.294.0> Lager installed handler lager_forwarder_backend into rabbit_log_lager_event
rabbitmq1_1  | 2022-07-05 02:43:40.670 [debug] <0.297.0> Lager installed handler lager_forwarder_backend into rabbit_log_channel_lager_event
rabbitmq1_1  | 2022-07-05 02:43:40.670 [debug] <0.306.0> Lager installed handler lager_forwarder_backend into rabbit_log_federation_lager_event
rabbitmq1_1  | 2022-07-05 02:43:40.670 [debug] <0.300.0> Lager installed handler lager_forwarder_backend into rabbit_log_connection_lager_event
rabbitmq1_1  | 2022-07-05 02:43:40.671 [debug] <0.315.0> Lager installed handler lager_forwarder_backend into rabbit_log_prelaunch_lager_event
rabbitmq1_1  | 2022-07-05 02:43:40.672 [debug] <0.318.0> Lager installed handler lager_forwarder_backend into rabbit_log_queue_lager_event
rabbitmq1_1  | 2022-07-05 02:43:40.673 [debug] <0.321.0> Lager installed handler lager_forwarder_backend into rabbit_log_ra_lager_event
rabbitmq1_1  | 2022-07-05 02:43:40.675 [debug] <0.324.0> Lager installed handler lager_forwarder_backend into rabbit_log_shovel_lager_event
rabbitmq1_1  | 2022-07-05 02:43:40.676 [debug] <0.327.0> Lager installed handler lager_forwarder_backend into rabbit_log_upgrade_lager_event
rabbitmq1_1  | 2022-07-05 02:43:40.691 [info] <0.44.0> Application lager started on node rabbit@rabbitmq1
rabbitmq1_1  | 2022-07-05 02:43:41.159 [debug] <0.284.0> Lager installed handler lager_backend_throttle into lager_event
haproxy_1    | [ALERT] 185/024336 (8) : parsing [/usr/local/etc/haproxy/haproxy.cfg:32] : 'server rabbitmq2' : could not resolve address 'rabbitmq2'.
haproxy_1    | [ALERT] 185/024336 (8) : parsing [/usr/local/etc/haproxy/haproxy.cfg:33] : 'server rabbitmq3' : could not resolve address 'rabbitmq3'.
haproxy_1    | [ALERT] 185/024336 (8) : parsing [/usr/local/etc/haproxy/haproxy.cfg:43] : 'server rabbitmq2' : could not resolve address 'rabbitmq2'.
haproxy_1    | [ALERT] 185/024336 (8) : parsing [/usr/local/etc/haproxy/haproxy.cfg:44] : 'server rabbitmq3' : could not resolve address 'rabbitmq3'.
haproxy_1    | [ALERT] 185/024336 (8) : Failed to initialize server(s) addr.
haproxy_1    | <5>haproxy-systemd-wrapper: exit, haproxy RC=1
docker-rabbitmq-cluster_haproxy_1 exited with code 1
rabbitmq1_1  | 2022-07-05 02:43:43.065 [info] <0.44.0> Application mnesia started on node rabbit@rabbitmq1
rabbitmq1_1  | 2022-07-05 02:43:43.066 [info] <0.273.0> 
rabbitmq1_1  |  Starting RabbitMQ 3.8.34 on Erlang 24.3.4.1 [emu]
rabbitmq1_1  |  Copyright (c) 2007-2022 VMware, Inc. or its affiliates.
rabbitmq1_1  |  Licensed under the MPL 2.0. Website: https://rabbitmq.com
rabbitmq1_1  | 
rabbitmq1_1  |   ##  ##      RabbitMQ 3.8.34
rabbitmq1_1  |   ##  ##
rabbitmq1_1  |   ##########  Copyright (c) 2007-2022 VMware, Inc. or its affiliates.
rabbitmq1_1  |   ######  ##
rabbitmq1_1  |   ##########  Licensed under the MPL 2.0. Website: https://rabbitmq.com
rabbitmq1_1  | 
rabbitmq1_1  |   Erlang:      24.3.4.1 [emu]
rabbitmq1_1  |   TLS Library: OpenSSL - OpenSSL 1.1.1o  3 May 2022
rabbitmq1_1  | 
rabbitmq1_1  |   Doc guides:  https://rabbitmq.com/documentation.html
rabbitmq1_1  |   Support:     https://rabbitmq.com/contact.html
rabbitmq1_1  |   Tutorials:   https://rabbitmq.com/getstarted.html
rabbitmq1_1  |   Monitoring:  https://rabbitmq.com/monitoring.html
rabbitmq1_1  | 
rabbitmq1_1  |   Logs: <stdout>
rabbitmq1_1  | 
rabbitmq1_1  |   Config file(s): /etc/rabbitmq/rabbitmq.conf
rabbitmq1_1  | 
rabbitmq1_1  |   Starting broker...2022-07-05 02:43:43.068 [info] <0.273.0> 
rabbitmq1_1  |  node           : rabbit@rabbitmq1
rabbitmq1_1  |  home dir       : /var/lib/rabbitmq
rabbitmq1_1  |  config file(s) : /etc/rabbitmq/rabbitmq.conf
rabbitmq1_1  |  cookie hash    : VlfoFK5J8f9Ln3G9sXDoPQ==
rabbitmq1_1  |  log(s)         : <stdout>
rabbitmq1_1  |  database dir   : /var/lib/rabbitmq/mnesia/rabbit@rabbitmq1
rabbitmq1_1  | 2022-07-05 02:43:44.265 [info] <0.44.0> Application amqp_client started on node rabbit@rabbitmq1
rabbitmq1_1  | 2022-07-05 02:43:44.279 [info] <0.584.0> Management plugin: HTTP (non-TLS) listener started on port 15672
rabbitmq1_1  | 2022-07-05 02:43:44.279 [info] <0.612.0> Statistics database started.
rabbitmq1_1  | 2022-07-05 02:43:44.279 [info] <0.611.0> Starting worker pool 'management_worker_pool' with 3 processes in it
rabbitmq1_1  | 2022-07-05 02:43:44.279 [info] <0.44.0> Application rabbitmq_management started on node rabbit@rabbitmq1
rabbitmq1_1  | 2022-07-05 02:43:44.292 [info] <0.44.0> Application prometheus started on node rabbit@rabbitmq1
rabbitmq1_1  | 2022-07-05 02:43:44.294 [info] <0.625.0> Prometheus metrics: HTTP (non-TLS) listener started on port 15692
rabbitmq1_1  | 2022-07-05 02:43:44.294 [info] <0.525.0> Ready to start client connection listeners
rabbitmq1_1  | 2022-07-05 02:43:44.294 [info] <0.44.0> Application rabbitmq_prometheus started on node rabbit@rabbitmq1
rabbitmq1_1  | 2022-07-05 02:43:44.297 [info] <0.669.0> started TCP listener on [::]:5672
rabbitmq1_1  | 2022-07-05 02:43:45.321 [info] <0.525.0> Server startup complete; 4 plugins started.
rabbitmq1_1  |  * rabbitmq_prometheus
rabbitmq1_1  |  * rabbitmq_management
rabbitmq1_1  |  * rabbitmq_web_dispatch
rabbitmq1_1  |  * rabbitmq_management_agent
rabbitmq1_1  |  completed with 4 plugins.
rabbitmq1_1  | 2022-07-05 02:43:45.322 [info] <0.525.0> Resetting node maintenance status

我不知道我错过了什么。很抱歉有太多的日志。

EN

回答 1

Stack Overflow用户

发布于 2022-07-05 16:11:09

在分析了您的文件和日志文件之后,我可以观察到一些问题。

在没有文件/配置的情况下,您的设置只能启动一次,并且您正在从头开始。出现这种行为的原因是,RabbitMQ将配置存储到称为Mnesia的内部DB中,并且一旦节点添加了配置,就必须为进一步的启动提供配置。如果您不跟随它,您将观察等待mnesia找到其节点的节点的错误。

重复启动的另一个问题是,向集群添加(2或3)的节点将自己标记为集群成员,您将看到主节点(1)希望连接到更早连接但入口点已经重置2和3个节点的错误。

您不能组合RabbitMQ的版本,因为它可能包含不同的数据结构,这些数据结构不允许节点同步,而且您将有一个类似于“schema_integrity_check_failed.”的错误,它应该都是相同的。

当我使用RabbitMQ时,我的配置确保所有数据都有持久的位置(磁盘),并且重复启动将使用已经初始化的数据。此外,使用由RabbitMQ支持的集群管理软件(如etc或consul )也是一个很好的实践,您不需要自己处理它。

希望能帮上忙。

通常,我能够成功地使用docker在我的计算机(macOS)上启动您的安装程序,脚本如下所示:

  • 确保从未启动撰写,以避免以前运行的数据。
  • 准备好文件夹中的所有内容
  • docker-compose up,享受一切工作
  • 使用docker-compose down清理堆栈不.“停止”命令,因为数据将保持不变

下面您可以找到一个日志作为开始,请忽略ha_proxy错误,没有附加配置文件,所以它必须失败。

代码语言:javascript
运行
复制
% docker-compose up
Creating network "rabbitmq_default" with the default driver
Creating rabbitmq_rabbitmq1_1 ... done
Creating rabbitmq_rabbitmq3_1 ... done
Creating rabbitmq_rabbitmq2_1 ... done
Creating rabbitmq_haproxy_1   ... done
Attaching to rabbitmq_rabbitmq1_1, rabbitmq_rabbitmq3_1, rabbitmq_rabbitmq2_1, rabbitmq_haproxy_1

(由于受到限制,我将其命名为这里)

我的设置看起来是这样的,唯一的改变是rabbitMQ数据被持久化,init是手动完成的,您也可以从文件系统路径挂载数据文件夹。

代码语言:javascript
运行
复制
version: '3'

services:
    rabbitmq1:
        image: rabbitmq:3.8.34-management
        hostname: rabbitmq1
        environment:
            - RABBITMQ_ERLANG_COOKIE=12345
            - RABBITMQ_DEFAULT_USER=guest
            - RABBITMQ_DEFAULT_PASS=guest
            - RABBITMQ_DEFAULT_VHOST=/
        volumes:
            - rabbitmq-01-data:/var/lib/rabbitmq

    rabbitmq2:
        image: rabbitmq:3.8.34-management
        hostname: rabbitmq2
        depends_on:
            - rabbitmq1
        environment:
            - RABBITMQ_ERLANG_COOKIE=12345
            - RABBITMQ_DEFAULT_USER=guest
            - RABBITMQ_DEFAULT_PASS=guest
            - RABBITMQ_DEFAULT_VHOST=/
        volumes:
            - rabbitmq-02-data:/var/lib/rabbitmq

    rabbitmq3:
        image: rabbitmq:3.8.34-management
        hostname: rabbitmq3
        depends_on:
            - rabbitmq1
        environment:
            - RABBITMQ_ERLANG_COOKIE=12345
            - RABBITMQ_DEFAULT_USER=guest
            - RABBITMQ_DEFAULT_PASS=guest
            - RABBITMQ_DEFAULT_VHOST=/
        volumes:
            - rabbitmq-03-data:/var/lib/rabbitmq
        
volumes:
    rabbitmq-01-data:
    rabbitmq-02-data:
    rabbitmq-03-data:

在每个“跟随者”节点上手动运行

代码语言:javascript
运行
复制
  rabbitmqctl stop_app
  rabbitmqctl reset
  rabbitmqctl join_cluster rabbit@rabbitmq1
  rabbitmqctl start_app

如果适用于您的情况,请不要忘记启用冗余队列。

代码语言:javascript
运行
复制
rabbitmqctl set_policy ha "." '{"ha-mode":"all"}'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72863499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档