Архив метки: RabbitMQ

Linux: редактирование systemd юнит-файлов, рестарт сервиса при падении и уведомление на почту

1 марта 2019
 

 Имеется RabbitMQ сервис, который изредка может упасть. Требуется: перезапускать его, если процесс был завершён с ошибкой отправлять почтовое уведомление об этом событии Настроим это всё через systemd-сервис файл самого RabbitMQ (хотя есть и другие варианты, например — с помощью monit, см. Monit: мониторинг и перезапуск NGINX). Нас интересуют две опции: RestartSec=: задержка при рестарте сервиса… Читать далее »

Docker: RabbitMQ: exec(): Unable to fork, Prometheus node_exporter и Docker limits

15 февраля 2019
 

 RabbitMQ перестал принимать новые сообщения, и при выполнении запроса — возвращает ошибки вида: exec(): Unable to fork write(): send of 12 bytes failed with errno=104 Connection reset by peer fwrite(): send of 19 bytes failed with errno=32 Broken pipe Собственно, по сообщениям видно, что проблема с памятью — exec() не может выполнить fork() и выделить… Читать далее »

RabbitMQ: примеры rabbitmqctl, rabbitmqadmin и хранение сообщений при рестарте сервера

5 декабря 2018
 

 Задача — запустить RabbitMQ сервер и создать сообщение, но таким образом, что бы оно сохранилось при рестарте сервера. Документация по хранению данных — тут>>>. В частности, в ней указано, что на диск будут сохранены любые типы сообщений, если RabbitMQ начинает особождать память (см. Memory Alarms), но нам требуется, что бы сообщения всегда синхронизировались в базу на… Читать далее »

RabbitMQ: использование диска и перенос базы данных

22 октября 2018
 

 Около 9 вечера мониторинг сообщил, что на одном из production-серверов забивается место. Причём забивалось оно очень быстро, и за пару часов «скушалось» 3 гига из 8 доступных на root-разделе. Забивался диск в каталоге базы RabbitMQ — /var/lib/rabbitmq/mnesia. Быстрый фикс — перенести его базу на отдельный диск. Создаём новый каталог: [simterm] root@bttrm-prod-console:/home/admin# cd /data/ && mkdir… Читать далее »

RabbitMQ: Ansible и Hostname mismatch: node believes its host is different.

8 августа 2018
 

 Имеется Ansible плейбук, где среди прочего выполняется установка и настройка RabbitMQ. При запуске задачи с использованием плагина rabbitmq_vhost возникает ошибка: [simterm] TASK [rabbitmq : Add RabbitMQ vhosts] **** fatal: [dev.mobilebackend.domain.world]: FAILED! => {«changed»: false, «cmd»: «/usr/sbin/rabbitmqctl -q -n rabbit list_vhosts name tracing», «msg»: «Error:********@localhost’\n- home dir: /var/lib/rabbitmq\n- cookie hash: cWvPHXMU4l0V3ALUhc3MbA==», «rc»: 69, «stderr»: «Error: unable… Читать далее »

Ansible: использование with_dict на примере модуля rabbitmq_user

11 июля 2018
 

 Требуется создать пользователей и пароли для RabbitMQ, используя плагин rabbitmq_user. При этом хочется не создавать несколько переменных и несколько задач, а всё выполнить в одном цикле, но у каждой переменной должно быть несколько полей и значений. Используем with_dict и словарь в переменных. В файле roles/roles/rabbitmq/vars/main.yml добавляем: rabbitmq_users: user1: password: «pass1» vhost: «/» configure_priv: .* read_priv:… Читать далее »

RabbitMQ: запуск, описание, примеры

6 июня 2018
 

 RabbitMQ — менеджер сообщений (message broker), написан на Erlang, ближайший аналог в AWS — SQS. Предназначен для передачи данных (сообщений) между несколькими сервисами : один сервис добавляет в очередь сообщение, другой — получает это сообщение. Ниже — пример установки, запуска и использования RabbitMQ. Установка На Arch Linux: [simterm] $ sudo pacman -S rabbitmq [/simterm] Debian/Ubuntu: [simterm]… Читать далее »