Site icon 8HOST.COM

Установка и управление RabbitMQ

Любой опытный системный администратор знает, что иногда откладывание задач на потом очень полезно и даже необходимо, особенно если задача трудоёмкая и отнимает много ресурсов. Для этого необходим брокер сообщений – программа, которая принимает сообщения (задачи) от различных отправителей (веб-приложений), формирует из них очередь, а затем распределяет их между рабочими процессами.

В данной статье речь пойдёт о проекте RabbitMQ – связке открытых приложений для осуществления функций брокера сообщений, которая реализует протокол Advanced Message Queuing Protocol (AMQP).

Сообщения, брокеры сообщений и очерёдность

Обмен сообщениями – это способ обмена определёнными данными между процессами, приложениями, виртуальными и физическими серверами. Эти сообщения, выполняющие некоторые вычислительные функции, могут содержать практически что угодно, от простого текста до больших блоков двоичных данных. Для корректного выполнения этого процесса необходима сторонняя программа – это и есть брокер сообщений (англ. Message Broker).

Брокер сообщений – это, как правило, группа приложений, каждый отдельный компонент которой предназначен для обработки определённого этапа обмена сообщениями: дл приёма сообщения, определении его в очередь и передаче сообщения рабочему процессу, ответственному за его выполнение. Часто вместо полноценных решений используются программы, изначально не предназначенные для этой работы (базы данных, демон cron, и т.д.); они просто создают очередь сообщений (что технически представляет бесконечные буферы), а затем передают их дл автоматической обработки либо для опроса.

Зачем нужны брокеры сообщений?

Брокеры сообщений выступают в роли посредника между различными сервисами (веб-приложениями). Они существенно снижают нагрузку и сокращают время доставки сообщений, поскольку задачи, на обработку которых уходит некоторое время, распределяются между рабочими процессами,  предназначенными исключительно для выполнения этих задач. Они обеспечивают надёжный канал передачи сообщений от одного приложения другому.

Когда нужны брокеры сообщений?

В целом, основная функциональность брокеров сообщений охватывает множество областей, в том числе, но не ограничиваясь:

Краткий обзор RabbitMQ

RabbitMQ (вышел в 2007) – это один из наиболее популярных брокеров сообщений с открытым исходным кодом, который поставляется по лицензии Mozilla Public License v1.1 как реализация протокола Advanced Message Queuing Protocol. Разработанный на языке Erlang, RabbitMQ довольно прост в использовании и установке.

Как работает RabbitMQ?

RabbitMQ предоставляет интерфейс, соединяющий отправителей (Publishers) с получателями (Consumers) при помощи брокера, который распределяет данные в соответствующие списки – очереди сообщений (Message Queues).

APPLICATION       EXCHANGE        TASK LIST        WORKER
[DATA] -------> [DATA] ---> [D]+[D][D][D] --->  [DATA] Publisher        EXCHANGE          Queue         Consumer

Преимущества RabbitMQ

В отличие от других решений, RabbitMQ является полноценным стеком приложений, а не простой базой для применения выбранных вами приложений. Он предоставляет все необходимые инструменты в комплексе.

Краткий обзор AMQP

AMQP (Advanced Message Queuing Protocol) – это широко распространённый открытый стандарт для распространения и передачи сообщений. Как протокол и стандарт, он устанавливает общую основу для взаимодействия различных приложений и брокеров сообщений и устраняет проблемы, вызванные индивидуальным проектированием программ.

Установка RabbitMQ

Пакеты RabbitMQ поставляются системами CentOS/RHEL и Ubuntu/Debian. Но, как правило, такие пакеты устаревшие. Потому рекомендуется скачать и установить RabbitMQ вручную.

Примечание: Все действия руководства рекомендуется выполнять на свежем сервере, чтобы не нарушить работу запущенных ранее приложений и не вызвать сбой настроек.

Установка RabbitMQ в CentOS/RHEL

Прежде чем приступить к установке RabbitMQ, нужно установить зависимости программы, одной из которых является Erlang. Однако, прежде всего необходимо обновить систему и стандартные приложения; для этого запустите:

yum -y update

Для установки Erlang используйте команды:

# Add and enable relevant application repositories:
# Note: We are also enabling third party remi package repositories.
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
sudo rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm
# Finally, download and install Erlang:
yum install -y erlang

Теперь можно установить RabbitMQ:

# Download the latest RabbitMQ package using wget:
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.2.2/rabbitmq-server-3.2.2-1.noarch.rpm
# Add the necessary keys for verification:
rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc
# Install the .RPM package using YUM:
yum install rabbitmq-server-3.2.2-1.noarch.rpm

Установка RabbitMQ в Ubuntu 13/Debian 7

Процесс установки RabbitMQ в Ubuntu/Debian подобен установке в CentOS.

Для начала нужно обновить стандартные пакеты:

apt-get    update
apt-get -y upgrade

Включите репозиторий приложения RabbitMQ:

echo "deb http://www.rabbitmq.com/debian/ testing main" >> /etc/apt/sources.list

Добавьте ключ проверки пакета:

curl http://www.rabbitmq.com/rabbitmq-signing-key-public.asc | sudo apt-key add -

Снова обновите систему:

apt-get update

Теперь можно загрузить и установить RabbitMQ:

sudo apt-get install rabbitmq-server

Чтобы при запуске было обработано максимальное количество подключений, откройте и отредактируйте в nano следующий конфигурационный файл:

sudo nano /etc/default/rabbitmq-server

Раскомментируйте строку limit (просто удалите символ #), а затем сохраните и закройте файл (CTRL+X + Y).

Управление RabbitMQ

Как говорилось ранее, брокер RabbitMQ очень прост в использовании. В данном разделе приведены инструкции по управлению и настройке RabbitMQ.

Включение консоли управления

Консоль управления RabbitMQ (RabbitMQ Management Console) – это один из доступных плагинов, позволяющий мониторить процессы сервера RabbitMQ через графический пользовательский веб-интерфейс.

При помощи этой консоли можно:

Чтобы включить консоль RabbitMQ, запустите команду:

sudo rabbitmq-plugins enable rabbitmq_management

Теперь можно открыть консоль при помощи любого удобного браузера:

http://[IP_адрес_сервера]:15672/.

Стандартные имя и пароль – guest.

Примечание: Запустив консоль после запуска сервиса, не забудьте перезапустить его, чтобы обновить настройки.

Управление RabbitMQ в CentOS/RHEL

После установки приложение RabbitMQ не будет запускаться автоматически при загрузке системы.

Чтобы настроить автозапуск RabbitMQ, выполните:

chkconfig rabbitmq-server on

Для запуска, остановки, перезапуска и проверки состояния используйте команды:

# Запуск:
/sbin/service rabbitmq-server start
# Остановка:
/sbin/service rabbitmq-server stop
# Перезапуск:
/sbin/service rabbitmq-server restart
# Проверка статуса:
/sbin/service rabbitmq-server status

Управление RabbitMQ в Ubuntu/Debian

Чтобы запустить, остановить перезапустить и проверит статус приложения в Ubuntu и Debian, используйте:

# Запуск:
service rabbitmq-server start
# Остановка:
service rabbitmq-server stop
# Перезапуск:
service rabbitmq-server restart
# Проверка статуса:
service rabbitmq-server status

Готово! Теперь на сервере есть готовый к работе брокер сообщений.

Настройка RabbitMQ

RabbitMQ поставляется со стандартными настройками. В целом, они довольно надёжны инее требуют редактирования.

Чтобы получить информацию о пользовательской настройке RabbitMQ, обратитесь к документации приложения.