Rabbitmq установка и настройка linux

Содержание
  1. Generic Binary Build («Generic UNIX Build»)
  2. Downloads
  3. Installation
  4. Make Sure Erlang/OTP is Installed
  5. Install the Server
  6. Operations
  7. Running and Managing the Node
  8. Starting the Server
  9. Stopping the Server
  10. Configuring the Server
  11. File Locations
  12. Port Access
  13. Default User Access
  14. Managing the Node
  15. Controlling System Limits on Linux
  16. Verifying the Limit
  17. Configuration Management Tools
  18. Getting Help and Providing Feedback
  19. Help Us Improve the Docs If you’d like to contribute an improvement to the site, its source is available on GitHub. Simply fork the repository and submit a pull request. Thank you! In This Section Install: Windows Install: Debian and Ubuntu Install: RPM-based Linux Install: Homebrew Install: Windows (manual) Install: Generic binary build Install: Solaris Install: EC2 Upgrade Blue-green deployment-based upgrade Supported Platforms Changelog Erlang Versions Signed Packages Java Client Downloads .NET Client Downloads Erlang Client Downloads Community Plugins Snapshots Источник Установка и настройка RabbitMQ на Ubuntu Обновлено: 23.04.2023 Опубликовано: 22.12.2021 Используемые термины: RabbitMQ, Linux, Ubuntu. В данной инструкции мы разберемся, как работать с брокером сообщений RabbitMQ. Для начала мы выполним установку программного обеспечения на Linux Ubuntu, после настроим его и рассмотрим пример использования. Установка Сервер RabbitMQ есть в стандартном репозитории Ubuntu, поэтому можно сразу выполнить установку с помощью apt. Однако, версия в репозитории может быть не самой актуальной. Поэтому мы рассмотрим процесс с настройкой официального репозитория для установки RabbitMQ. Для начала установим curl: curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.deb.sh | sudo bash В нашу систему будут добавлены репозитории для установки RabbitMQ и erlang. Теперь можно устанавливать брокер: Однако, в моем случае возникла проблема с репозиторием erlang. Если вы столкнетесь с той же проблемой, можно вручную установить необходимые пакеты или отказаться от использования официального репозитория. После установки брокера на Ubuntu, он автоматически будет запущен и настроен для автозапуска. Проверить можно командой: Первичная настройка Нам нужно создать виртуальный хост для изоляции рабочего пространства, а также пользователя, которому дадим полный доступ на созданный виртуальный хост. Создание последнего выполняется командой: * в данном примере мы создадим тестовый хост test_host. Список всех хостов можно увидеть командой: Использование по сети По умолчанию, сервис запускается для работы как на локальном сервере, так и обработки запросов по сети. Но нам нужно убедиться в работоспособности прохождения сетевых запросов. Если на нашем сервере используется брандмауэр, разрешаем порт 5672: Пример подключения с использованием Python Для простоты, мы запустим скрипт для отправки сообщения в очередь и приемки на одном и том же компьютере, куда установили сервер rabbitmq. Сам пример, в большей степени, взят с официального сайта. Установим питон и необходимые компоненты: #!/usr/bin/env python3 # -*- encoding: utf-8 -*- import pika credentials = pika.PlainCredentials(‘test_user’, ‘test’) parameters = pika.ConnectionParameters(‘localhost’, 5672, ‘test_host’, credentials) connection = pika.BlockingConnection(parameters) channel = connection.channel() channel.queue_declare(queue=’hello’) channel.basic_publish(exchange=», routing_key=’hello’, body=’Hello World!’) connection.close() print(«Your message has been sent to the queue.») строки 6-8: задаем параметры для подключения к нашему серверу сообщений. Обратите внимание, что мы используем логин и пароль для созданного ранее пользователя test_user. Также мы подключаемся к созданному хосту test_host. строки 10-12: подключаемся к серверу, создаем очередь с названием hello и отправляем в очередь сообщение Hello World! chmod +x /scripts/rabbit_test_send.py Теперь мы можем посмотреть состояние очереди из командной строки Linux. rabbitmqadmin -u test_user -p test list queues Мы увидим, примерно, такую картину: * обратите внимание, что сообщение в очередь могут попадать с задержкой (2-3 секунды). Если мы увидим 0 сообщений, немного подождем. Теперь создадим скрипт для получения сообщения: #!/usr/bin/env python3 # -*- encoding: utf-8 -*- import pika credentials = pika.PlainCredentials(‘test_user’, ‘test’) parameters = pika.ConnectionParameters(‘localhost’, 5672, ‘test_host’, credentials) connection = pika.BlockingConnection(parameters) channel = connection.channel() channel.queue_declare(queue=’hello’) def callback(ch, method, properties, body): print(«Received %r» % body) channel.basic_consume(queue=’hello’, auto_ack=True, on_message_callback=callback) channel.start_consuming() print(‘To exit press CTRL+C’) connection.close() строки 6-8: задаем параметры для подключения к нашему серверу сообщений. Обратите внимание, что мы используем логин и пароль для созданного ранее пользователя test_user. Также мы подключаемся к созданному хосту test_host. строки 10-11: подключаемся к серверу, подключаемся к очереди с названием hello. строки 13-14: функция для отображения содержимого очереди. строка 16: параметры чтения очереди. Обратите внимание, что мы передаем данные очереди в нашу функцию callback, которую определили в строке 13, строка 18: запускаем процесс чтения данных в очереди. chmod +x /scripts/rabbit_test_recieve.py На экране должно появиться наше сообщение. Чтобы прервать выполнение скрипта, нажимаем CTRL+C (на экране появится некрасивый вывод, но это не страшно в рамках нашего теста). rabbitmqadmin -u test_user -p test list queues RabbitMQ в Docker Брокер может быть запущен как контейнер docker. Рассмотрим процесс запуска с использованием docker-compose. Для начала нужно установить как docker, так и docker-compose — подробнее читайте в инструкции Установка Docker на Linux. Предположим, что рабочий каталог для RabbitMQ будет /opt/rabbitmq. Созданим и перейдем в него: Создадим файл docker-compose: rabbitmq: image: rabbitmq:latest container_name: rabbitmq hostname: rabbitmq restart: unless-stopped environment: TZ: Europe/Moscow RABBITMQ_DEFAULT_USER: root RABBITMQ_DEFAULT_PASS: 12345678 RABBITMQ_DEFAULT_VHOST: vdata volumes: — ./rabbitmq:/var/lib/rabbitmq ports: — 5672:5672 запустим rabbitmq на порту 5672. создадим пользователя root с паролем 12345678. будем работать в виртуальном хосте vdata. Для запуска контейнера вводим команду: Источник
  20. In This Section
  21. Установка и настройка RabbitMQ на Ubuntu
  22. Установка
  23. Первичная настройка
  24. Использование по сети
  25. Пример подключения с использованием Python
  26. RabbitMQ в Docker
Читайте также:  Linux change text in all files

Generic Binary Build («Generic UNIX Build»)

RabbitMQ releases include a binary package for Linux, MacOS, and *BSD systems. It is minimalistic and not opinionated in how it is installed, configured and managed. This package is recommended in environments where more opinionated installation options (the Debian or RPM packages, Homebrew, BSD ports) cannot be used. It is also the most convenient option for running multiple versions on the same machine in development environments.

Unlike with the cases of Debian, RPM and Windows installer packages, node management with this package type is performed solely using RabbitMQ CLI tools or by the operator setting up e.g. a systemd service manually.

Downloads

Installation

Make Sure Erlang/OTP is Installed

This package requires a supported version of Erlang to be installed in order to run.

Install the Server

Download a rabbitmq-server-generic-unix-3.12.1.tar.xz archive and extract it.

Contained in the tarball is a directory named rabbitmq_server-3.12.1 . This directory is the node base directory. It should be moved to a suitable application directory on the system, such as /usr/local . The sbin directory in that directory contains server and CLI tool scripts. It is a good candidate for including into PATH .

Operations

Running and Managing the Node

Unlike some other installation methods, namely the Debian and RPM packages, RabbitMQ generic UNIX binary build does not require sudo . It can be uncompressed into any location and started and managed using the scripts and CLI tools under sbin . Default data directory location will be under ./var , that is, in the installation directory.

Starting the Server

To start the server, run the sbin/rabbitmq-server script. This displays a short banner message, concluding with the message «completed with [n] plugins.», indicating that the RabbitMQ broker has been started successfully. To start the server in «detached» mode, use rabbitmq-server -detached . This will run the node process in the background.

Stopping the Server

To stop a running node, use sbin/rabbitmqctl shutdown . The command will wait for the node process to stop. If the target node is not running, it will exit with an error.

Configuring the Server

RabbitMQ configuration file located at $RABBITMQ_HOME/etc/rabbitmq/rabbitmq.conf is the primary way of configuring the node.

It is possible to use environment variables to control certain settings. The recommended way of doing that is using the $RABBITMQ_HOME/etc/rabbitmq/rabbitmq-env.conf file.

Neither of these files exist after installation, so they must be created first.

See RabbitMQ configuration guide to learn more.

File Locations

The generic binary build is designed to run without granted permissions to directories outside of its base one. The directories and files used by default are all held under the installation directory rabbitmq_server-3.12.1 which is in the $RABBITMQ_HOME variable in the scripts.

The node can be instructed to use more conventional system directories for configuration, node data directory, log files, plugins and so on. In order to make the node use operating system defaults, locate the following line

in the sbin/rabbitmq-defaults script and change this line to:

but do not modify any other line in this script.

Important: after this modification the default directory locations may point to non-existent directories or directories that the effective node user won’t have permissions for.

Читайте также:  Linux как сохранить настройки

In particular RABBITMQ_MNESIA_BASE and RABBITMQ_LOG_BASE may need to be created (the server will attempt to create them at startup), and the enabled plugins file ( RABBITMQ_ENABLED_PLUGINS_FILE ) will need to be writable by rabbitmq-plugins.

The configuration files will be looked for in /etc/rabbitmq/ .

Port Access

RabbitMQ nodes bind to ports (open server TCP sockets) in order to accept client and CLI tool connections. Other processes and tools such as SELinux may prevent RabbitMQ from binding to a port. When that happens, the node will fail to start. Refer to the Networking Guide for more details.

Default User Access

The broker creates a user guest with password guest . Unconfigured clients will in general use these credentials. By default, these credentials can only be used when connecting to the broker as localhost so you will need to take action before connecting from any other machine.

See the documentation on access control for information on how to create more users and delete the guest user.

Managing the Node

To stop the server or check its status, etc., you can invoke sbin/rabbitmqctl (as the user running rabbitmq-server ). All rabbitmqctl commands will report the node absence if no broker is running.

  • Invoke rabbitmqctl stop or rabbitmqctl shutdown to stop the server
  • Invoke rabbitmq-diagnostics status to check whether it is running

Controlling System Limits on Linux

RabbitMQ installations running production workloads may need system limits and kernel parameters tuning in order to handle a decent number of concurrent connections and queues. The main setting that needs adjustment is the max number of open files, also known as ulimit -n . The default value on many operating systems is too low for a messaging broker ( 1024 on several Linux distributions). We recommend allowing for at least 65536 file descriptors for user rabbitmq in production environments. 4096 should be sufficient for many development workloads.

There are two limits in play: the maximum number of open files the OS kernel allows ( fs.file-max on Linux, kern.maxfilesperproc on OS X and FreeBSD) and the per-user limit ( ulimit -n ). The former must be higher than the latter. For more information about controlling the system-wide limit, please refer to the excellent Riak guide on open file limit tuning.

Verifying the Limit

RabbitMQ management UI displays the number of file descriptors available for it to use on the Overview tab.

rabbitmq-diagnostics status

includes the same value. The following command

can be used to display effective limits for the current user. There may be more convenient OS-specific ways of doing that for a running process, such as the /proc filesystem on Linux.

Configuration Management Tools

Configuration management tools (e.g. Chef, Puppet, BOSH) provide assistance with system limit tuning. Our developer tools guide lists relevant modules and projects.

Getting Help and Providing Feedback

If you have questions about the contents of this guide or any other topic related to RabbitMQ, don’t hesitate to ask them using GitHub Discussions or our community Discord server.

Help Us Improve the Docs

If you’d like to contribute an improvement to the site, its source is available on GitHub. Simply fork the repository and submit a pull request. Thank you!

In This Section

  • Install: Windows
  • Install: Debian and Ubuntu
  • Install: RPM-based Linux
  • Install: Homebrew
  • Install: Windows (manual)
  • Install: Generic binary build
  • Install: Solaris
  • Install: EC2
  • Upgrade
  • Blue-green deployment-based upgrade
  • Supported Platforms
  • Changelog
  • Erlang Versions
  • Signed Packages
  • Java Client Downloads
  • .NET Client Downloads
  • Erlang Client Downloads
  • Community Plugins
  • Snapshots

Источник

Установка и настройка RabbitMQ на Ubuntu

Обновлено

Обновлено: 23.04.2023 Опубликовано: 22.12.2021

Используемые термины: RabbitMQ, Linux, Ubuntu. В данной инструкции мы разберемся, как работать с брокером сообщений RabbitMQ. Для начала мы выполним установку программного обеспечения на Linux Ubuntu, после настроим его и рассмотрим пример использования.

Установка

Сервер RabbitMQ есть в стандартном репозитории Ubuntu, поэтому можно сразу выполнить установку с помощью apt. Однако, версия в репозитории может быть не самой актуальной. Поэтому мы рассмотрим процесс с настройкой официального репозитория для установки RabbitMQ. Для начала установим curl:

curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.deb.sh | sudo bash

В нашу систему будут добавлены репозитории для установки RabbitMQ и erlang. Теперь можно устанавливать брокер:

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

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

Первичная настройка

Нам нужно создать виртуальный хост для изоляции рабочего пространства, а также пользователя, которому дадим полный доступ на созданный виртуальный хост. Создание последнего выполняется командой:

* в данном примере мы создадим тестовый хост test_host. Список всех хостов можно увидеть командой:

Использование по сети

По умолчанию, сервис запускается для работы как на локальном сервере, так и обработки запросов по сети. Но нам нужно убедиться в работоспособности прохождения сетевых запросов. Если на нашем сервере используется брандмауэр, разрешаем порт 5672:

Пример подключения с использованием Python

Для простоты, мы запустим скрипт для отправки сообщения в очередь и приемки на одном и том же компьютере, куда установили сервер rabbitmq. Сам пример, в большей степени, взят с официального сайта. Установим питон и необходимые компоненты:

  1. #!/usr/bin/env python3
  2. # -*- encoding: utf-8 -*-
  3. import pika
  4. credentials = pika.PlainCredentials(‘test_user’, ‘test’)
  5. parameters = pika.ConnectionParameters(‘localhost’, 5672, ‘test_host’, credentials)
  6. connection = pika.BlockingConnection(parameters)
  7. channel = connection.channel()
  8. channel.queue_declare(queue=’hello’)
  9. channel.basic_publish(exchange=», routing_key=’hello’, body=’Hello World!’)
  10. connection.close()
  11. print(«Your message has been sent to the queue.»)
  • строки 6-8: задаем параметры для подключения к нашему серверу сообщений. Обратите внимание, что мы используем логин и пароль для созданного ранее пользователя test_user. Также мы подключаемся к созданному хосту test_host.
  • строки 10-12: подключаемся к серверу, создаем очередь с названием hello и отправляем в очередь сообщение Hello World!

chmod +x /scripts/rabbit_test_send.py

Теперь мы можем посмотреть состояние очереди из командной строки Linux.

rabbitmqadmin -u test_user -p test list queues

Мы увидим, примерно, такую картину:

* обратите внимание, что сообщение в очередь могут попадать с задержкой (2-3 секунды). Если мы увидим 0 сообщений, немного подождем.

Теперь создадим скрипт для получения сообщения:

  1. #!/usr/bin/env python3
  2. # -*- encoding: utf-8 -*-
  3. import pika
  4. credentials = pika.PlainCredentials(‘test_user’, ‘test’)
  5. parameters = pika.ConnectionParameters(‘localhost’, 5672, ‘test_host’, credentials)
  6. connection = pika.BlockingConnection(parameters)
  7. channel = connection.channel()
  8. channel.queue_declare(queue=’hello’)
  9. def callback(ch, method, properties, body):
  10. print(«Received %r» % body)
  11. channel.basic_consume(queue=’hello’, auto_ack=True, on_message_callback=callback)
  12. channel.start_consuming()
  13. print(‘To exit press CTRL+C’)
  14. connection.close()
  • строки 6-8: задаем параметры для подключения к нашему серверу сообщений. Обратите внимание, что мы используем логин и пароль для созданного ранее пользователя test_user. Также мы подключаемся к созданному хосту test_host.
  • строки 10-11: подключаемся к серверу, подключаемся к очереди с названием hello.
  • строки 13-14: функция для отображения содержимого очереди.
  • строка 16: параметры чтения очереди. Обратите внимание, что мы передаем данные очереди в нашу функцию callback, которую определили в строке 13,
  • строка 18: запускаем процесс чтения данных в очереди.

chmod +x /scripts/rabbit_test_recieve.py

На экране должно появиться наше сообщение. Чтобы прервать выполнение скрипта, нажимаем CTRL+C (на экране появится некрасивый вывод, но это не страшно в рамках нашего теста).

rabbitmqadmin -u test_user -p test list queues

RabbitMQ в Docker

Брокер может быть запущен как контейнер docker. Рассмотрим процесс запуска с использованием docker-compose.

Для начала нужно установить как docker, так и docker-compose — подробнее читайте в инструкции Установка Docker на Linux.

Предположим, что рабочий каталог для RabbitMQ будет /opt/rabbitmq. Созданим и перейдем в него:

Создадим файл docker-compose:

rabbitmq:
image: rabbitmq:latest
container_name: rabbitmq
hostname: rabbitmq
restart: unless-stopped
environment:
TZ: Europe/Moscow
RABBITMQ_DEFAULT_USER: root
RABBITMQ_DEFAULT_PASS: 12345678
RABBITMQ_DEFAULT_VHOST: vdata
volumes:
— ./rabbitmq:/var/lib/rabbitmq
ports:
— 5672:5672

  • запустим rabbitmq на порту 5672.
  • создадим пользователя root с паролем 12345678.
  • будем работать в виртуальном хосте vdata.

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

Источник

Оцените статью
Adblock
detector