RabbitMQ日志和Mnesia在环境变量中的位置没有反映?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RabbitMQ日志和Mnesia在环境变量中的位置没有反映?相关的知识,希望对你有一定的参考价值。

我想将Rabbitmq MNESIA目录更改为/disk文件夹而不是默认的/var/lib。我在/usr/lib/rabbitmq/bin做了rabbitmq-env的变化

RABBITMQ_MNESIA_BASE=/disk/rabbitmq/
RABBITMQ_LOG_BASE=/disk/rabbitmq/log/

并重新启动后

service rabbitmq-server restart
Restarting rabbitmq-server (via systemctl):                [  OK  ]

但是当我检查状态时

      >      service rabbitmq-server status 
WARNING: Removing trailing slash from RABBITMQ_MNESIA_BASE
WARNING: Removing trailing slash from RABBITMQ_MNESIA_BASE
Status of node 'rabbit@ip-10-03-209-294' ...
Error: unable to connect to node 'rabbit@ip-10-03-209-294': nodedown

DIAGNOSTICS
===========

attempted to contact: ['rabbit@ip-10-03-209-294']

rabbit@ip-10-03-209-294:
  * connected to epmd (port 4369) on ip-10-03-209-294
  * epmd reports: node 'rabbit' not running at all
                  no other nodes on ip-10-03-209-294
  * suggestion: start the node

current node details:
- node name: 'rabbitmq-cli-61@10-03-209-294'
- home dir: /var/lib/rabbitmq
- cookie hash: D1JxYyl9vuDgVmH5K4dGyQ==

删除所有更改后,它工作正常。但我希望MNESIA目录是/磁盘。我也重新启动了这个实例。

答案

请尝试以下步骤:

  1. /etc/init.d/rabbitmq-server stop
  2. nano /etc/rabbitmq/rabbitmq-env.conf并添加: RABBITMQ_MNESIA_BASE = /磁盘/ RabbitMQ的 RABBITMQ_LOG_BASE = /磁盘/ RabbitMQ的/日志
  3. chown rabbitmq:rabbitmq /disk/(and all subdirs)
  4. /etc/init.d/rabbitmq-server start
  5. service rabbitmq-server status

刚试试我的debian:

root@bae18650cea4:/# service rabbitmq-server status
Status of node rabbit@bae18650cea4 ...
[{pid,15240},
 {running_applications,[{rabbit,"RabbitMQ","3.6.2"},
                        {mnesia,"MNESIA  CXC 138 12","4.13.3"},
                        {os_mon,"CPO  CXC 138 46","2.4"},
                        {rabbit_common,[],"3.6.2"},
                        {xmerl,"XML parser","1.3.10"},
                        {ranch,"Socket acceptor pool for TCP protocols.",
                               "1.2.1"},
                        {sasl,"SASL  CXC 138 11","2.7"},
                        {stdlib,"ERTS  CXC 138 10","2.8"},
                        {kernel,"ERTS  CXC 138 10","4.2"}]},
 {os,{unix,linux}},
 {erlang_version,"Erlang/OTP 18 [erts-7.3] [source] [64-bit] [async-threads:64] [kernel-poll:true]
"},
 {memory,[{total,139371632},
          {connection_readers,0},
          {connection_writers,0},
          {connection_channels,0},
          {connection_other,0},
          {queue_procs,2592},
          {queue_slave_procs,0},
          {plugins,0},
          {other_proc,18525024},
          {mnesia,58264},
          {mgmt_db,0},
          {msg_index,41880},
          {other_ets,920384},
          {binary,19128},
          {code,19777571},
          {atom,752537},
          {other_system,99274252}]},
 {alarms,[]},
 {listeners,[{clustering,25672,"::"},{amqp,5672,"::"}]},
 {vm_memory_high_watermark,0.4},
 {vm_memory_limit,839966720},
 {disk_free_limit,50000000},
 {disk_free,17685676032},
 {file_descriptors,[{total_limit,1048476},
                    {total_used,2},
                    {sockets_limit,943626},
                    {sockets_used,0}]},
 {processes,[{limit,1048576},{used,137}]},
 {run_queue,0},
 {uptime,399},
 {kernel,{net_ticktime,60}}]
root@bae18650cea4:/#
另一答案

而不是这些env变量

RABBITMQ_MNESIA_BASE=/disk/rabbitmq/
RABBITMQ_LOG_BASE=/disk/rabbitmq/log/

尝试

MNESIA_BASE=/disk/rabbitmq/
LOG_BASE=/disk/rabbitmq/log/

在我停止并重新启动后,这至少对我有用。

另一答案

我强烈建议安装凳子和setroubleshoot-server,并在适当的情况下使用selinux实现完全安全的解决方案。

https://www.systutorials.com/docs/linux/man/8-rabbitmq_selinux/

用一些ansible-love-例子:

- name: Enabling Selinux by default
  selinux:
    policy: targeted
    state: enforcing

- name: selinux | allow selinux rabbitmq_t
  selinux_permissive:
    name: rabbitmq_t
    permissive: true

- name: Run selinux restore context on /etc
  shell: "restorecon -Rv /etc/"

- name: rabbitmq | Fix the SELINUX fcontenxt
  sefcontext:
    target: '/var/lib/rabbitmq/(.*)?'
    setype: rabbitmq_var_lib_t
    state: present
  notify:
    - reset permissions
    - restart rabbitmq-server

- name: Allow RabbitMQ Selinux TCP to listen on
  seport:
    ports: 5672,15672
    proto: tcp
    setype: rabbitmq_port_t
    state: present

以上是关于RabbitMQ日志和Mnesia在环境变量中的位置没有反映?的主要内容,如果未能解决你的问题,请参考以下文章

rabbit:Mnesia could not connect to any nodes

RabbitMQ节点关闭后启动原理

RabbitMQ配置

服务器异常宕机,导致RabbitMQ启动失败

RabbitMQ QueueDeclare 参数

rabbitmq在win10下服务启动失败