从服务器注销后,分离的RabbitMQ docker容器死亡

wljmcqd8  于 2023-06-05  发布在  RabbitMQ
关注(0)|答案(2)|浏览(294)

我正在尝试设置一个在VDS上运行的RabbitMQ docker示例。
这是我的docker-compose配置。

version: "3"

services:
  rabbitmq:
    image: rabbitmq:3-management
    ports:
      - '15672:15672'
      - '5672:5672'
    environment:
      - RABBITMQ_DEFAULT_USER=<some-user>
      - RABBITMQ_DEFAULT_PASS=<some-pass>
    hostname: 'rabbit-<hostname>'

我使用docker compose up -d以分离模式启动这个docker示例
它启动,它工作得很好,而我有至少一个终端连接到服务器。它不一定是我启动RabbitMQ的那个,但基本上是任何打开的连接。
我一关闭所有的终端,它就会在一分钟内关闭。这是我在日志中看到的。

2023-06-05 09:13:44.954939+00:00 [info] <0.591.0> Server startup complete; 4 plugins started.
2023-06-05 09:13:44.954939+00:00 [info] <0.591.0>  * rabbitmq_prometheus
2023-06-05 09:13:44.954939+00:00 [info] <0.591.0>  * rabbitmq_management
2023-06-05 09:13:44.954939+00:00 [info] <0.591.0>  * rabbitmq_web_dispatch
2023-06-05 09:13:44.954939+00:00 [info] <0.591.0>  * rabbitmq_management_agent
2023-06-05 09:20:06.739687+00:00 [notice] <0.61.0> SIGTERM received - shutting down
2023-06-05 09:20:06.739687+00:00 [notice] <0.61.0> 
2023-06-05 09:20:06.744979+00:00 [warning] <0.642.0> HTTP listener registry could not find context rabbitmq_prometheus_tls
2023-06-05 09:20:06.751396+00:00 [notice] <0.61.0> SIGTERM received - shutting down
2023-06-05 09:20:06.751396+00:00 [notice] <0.61.0> 
2023-06-05 09:20:06.752950+00:00 [warning] <0.642.0> HTTP listener registry could not find context rabbitmq_management_tls
2023-06-05 09:20:06.766258+00:00 [info] <0.230.0> Peer discovery backend rabbit_peer_discovery_classic_config does not support registration, skipping unregistration.
2023-06-05 09:20:06.766573+00:00 [info] <0.736.0> stopped TCP listener on [::]:5672
2023-06-05 09:20:06.767926+00:00 [info] <0.1569.0> Closing all connections in vhost '/' on node 'rabbit@rabbit-feedgerald' because the vhost is stopping
2023-06-05 09:20:06.768153+00:00 [info] <0.553.0> Stopping message store for directory '/var/lib/rabbitmq/mnesia/rabbit@rabbit-feedgerald/msg_stores/vhosts/628WB79CIFDYO9LJI6DKMI09L/msg_store_persistent'
2023-06-05 09:20:06.771638+00:00 [info] <0.553.0> Message store for directory '/var/lib/rabbitmq/mnesia/rabbit@rabbit-feedgerald/msg_stores/vhosts/628WB79CIFDYO9LJI6DKMI09L/msg_store_persistent' is stopped
2023-06-05 09:20:06.772045+00:00 [info] <0.549.0> Stopping message store for directory '/var/lib/rabbitmq/mnesia/rabbit@rabbit-feedgerald/msg_stores/vhosts/628WB79CIFDYO9LJI6DKMI09L/msg_store_transient'
2023-06-05 09:20:06.775578+00:00 [info] <0.549.0> Message store for directory '/var/lib/rabbitmq/mnesia/rabbit@rabbit-feedgerald/msg_stores/vhosts/628WB79CIFDYO9LJI6DKMI09L/msg_store_transient' is stopped
2023-06-05 09:20:06.777133+00:00 [info] <0.485.0> Management plugin: to stop collect_statistics.

它看起来像是从某个进程收到了SIGTERM。我不知道是什么引起的。
这不会发生在我试图运行的其他图像上。
如果有任何其他日志,我可以提供,这可能有助于找出发生了什么事,请告诉。

nwlls2ji

nwlls2ji1#

根据您提供的日志,RabbitMQ似乎正在接收SIGTERM信号,这是类Unix系统中的标准终止信号。该信号通常在进程关闭时由系统发送。
RabbitMQ在所有终端关闭时关闭的事实表明它可能作为shell会话的子进程运行。当shell会话终止时,它会向所有子进程发送SIGTERM信号,包括RabbitMQ。
为了防止RabbitMQ在shell会话关闭时关闭,您可以尝试使用nohup命令将其作为后台进程运行。下面是一个如何修改docker-compose配置的示例:

version: "3"

服务:rabbitmq:image:rabbitmq:3-管理端口:- '15672:15672' - '5672:5672'环境:- RABBITMQ_DEFAULT_USER= - RABBITMQ_DEFAULT_PASS=命令:nohup rabbitmq-server restart:总是主机名:“兔子--”
通过使用nohup命令,RabbitMQ将从终端会话中分离出来,并且即使在关闭所有终端后也应该继续运行。
另外,我注意到你有重新启动:always选项。这确保了RabbitMQ容器在失败或因任何原因停止时自动重新启动。保持RabbitMQ的一致运行是很有用的。
修改docker-compose文件后,您可以使用docker-compose up -d再次启动RabbitMQ容器,即使关闭所有终端,它也应该保持运行。

h6my8fg2

h6my8fg22#

似乎将restart: always添加到docker-compose文件中有所帮助。而且不是以崩溃时重新启动容器的方式,它实际上已经完全停止了容器接收SIGTERM。这是奇怪的,但它的工作。

相关问题