Журнал RabbitMQ и местоположение Mnesia в переменных среды не отражаются?
Я хочу изменить Rabbitmq MNESIA dir на /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 был /disk. Я также перезапустил экземпляр.
3 ответа
Попробуйте выполнить следующие действия:
/etc/init.d/rabbitmq-server stop
nano /etc/rabbitmq/rabbitmq-env.conf
и добавить:RABBITMQ_MNESIA_BASE = / диск / RabbitMQ
RABBITMQ_LOG_BASE=/ диск / RabbitMQ / журналchown rabbitmq:rabbitmq /disk/(and all subdirs)
/etc/init.d/rabbitmq-server start
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]\n"},
{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-сервер и внедрить полностью безопасное решение с 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