Как удалить rabbitmq linux

Обновлено: 07.07.2024

Краткое введение в RabbitMQ

  1. Это быстро и надежно.
  2. Это открытый исходный код, но есть коммерческая поддержка, если вы этого хотите.
  3. Он работает в вашей операционной системе.
  4. Он активно развивается.
  5. Он проверен в бою.

RabbitMQ реализован на Erlang, что немного необычно, но одна из причин, по которой он так надежен.

Предпосылки

В этом руководстве я буду использовать локальный кластер Vagrant из трех узлов. Если у вас уже есть три доступные машины (виртуальные или нет), вы можете использовать их вместо этого. Обратите внимание на порты и сети.

Установите VirtualBox

Следуйте инструкциям по установке VirtualBox.

Установить Vagrant

Следуйте инструкциям по установке Vagrant

Создать кластер RabbitMQ

Вот Vagrantfile, который создаст локальный трехузловой кластер на вашем компьютере. ОС Ubuntu 14.04 (Trusty).

Чтобы создать пустой кластер, введите: vagrant up .

Настройка SSH

Чтобы упростить ssh для узлов кластера, введите: vagrant ssh-config >>

Если вы наберете: cat

/ .ssh / config , вы должны увидеть записи для rabbit-1, rabbit-2 и rabbit-3.

Теперь вы можете использовать ssh на каждой виртуальной машине по имени: ssh rabbit-1 .

Убедитесь, что узлы достижимы по имени

Самый простой способ - отредактировать файл /etc/hosts. Например, для rabbit-1 добавьте адреса rabbit-2 и rabbit-3.

plain 192.168.77.11 rabbit-2 192.168.77.12 rabbit-3

Повторите процесс для всех узлов.

Установка RabbitMQ

Я буду использовать apt-get здесь для операционных систем Debian/Ubuntu. Если ваш кластер работает в другой ОС, следуйте инструкциям на странице установки RabbitMQ.

Обратите внимание, что иногда довольно устаревшая версия RabbitMQ доступна по умолчанию. Если вы хотите установить самую последнюю и лучшую версию, вы можете загрузить пакет .deb напрямую или добавить apt-репозиторий RabbitMQ, используя эти инструкции.

Текущая версия RabbitMQ на Ubuntu 14.04 - 3.2, что достаточно для наших целей. Убедитесь сами, набрав: apt-cache show rabbitmq-server .

Давайте продолжим и установим его на каждую машину:

plain sudo apt-get update sudo apt-get install rabbitmq-server -y

Не стесняйтесь использовать ваши любимые инструменты управления конфигурацией, такие как Chef или Ansible, если вы предпочитаете.

Обратите внимание, что Erlang будет установлен первым в качестве предварительного условия.

Включваем плагин Management RabbitMQ

plain sudo rabbitmq-plugins enable rabbitmq_management

Получаем инструмент командной строки управления

Основные понятия RabbitMQ

Управление вашим кластером

Для управления кластером используются три сценария. Скрипт rabbitmq-server запускает сервер RabbitMQ (запускает его). Rabbitmqctl используется для управления кластером (остановка, сброс, объединение узлов кластера и получение статуса). Rabbitmqadmin, который вы скачали ранее, используется для настройки и администрирования кластера (объявление vhosts, пользователей, обменов и очередей). Создание кластера включает в себя только rabbitmq-server и rabbitmqctl.

Во-первых, давайте запустим rabbitmq-сервер как сервис (демон) на каждом из наших хостов rabbit-1, rabbit-2 и rabbit-3.

plain sudo service rabbitmq-server start

Это запустит виртуальную машину Erlang и приложение RabbitMQ, если узел не работает. Чтобы убедиться, что он работает правильно, введите:

plain sudo rabbitmqctl cluster_status

Вывод должен быть таким (для rabbit-1):

Это означает, что узел еще не кластеризован ни с какими другими узлами и является дисковым узлом. Он также работает, как вы можете видеть, что он появляется в списке running_nodes.

Чтобы остановить сервер, введите следующую команду:

plain sudo rabbitmqctl stop_app

Затем, если вы проверите состояние кластера:

plain sudo rabbitmqctl cluster_status

Вывод должен быть таким:

plain Cluster status of node 'rabbit@rabbit-1' . []>] . done.

Нет больше работающих узлов.

Вы можете повторить процесс для других узлов (rabbit-2 и rabbit-3) и увидеть, что они знают только себя.

Эрланг Cookie

Прежде чем вы сможете создать кластер, все узлы в кластере должны иметь один и тот же файл cookie. Файл cookie - это файл, который среда исполнения Erlang использует для идентификации узлов. Он находится в /var/lib/rabbitmq/.erlang.cookie. Просто скопируйте содержимое с rabbit-1 на rabbit-2 и rabbit-3.

Узлы кластеризации вместе

Чтобы сгруппировать эти отдельные узлы в единый кластер, требуется определенная работа. Вот процедура:

  • Работает один узел (например, rabbit-1).
  • Остановите другой узел (например, rabbit-2).
  • Сброс остановленного узла (rabbit-2).
  • Кластеризация другого узла в корневой узел.
  • Запустите остановленный узел.

Давай сделаем это. ssh в rabbit-2 и выполните следующие команды:

plain sudo rabbitmqctl stop_app sudo rabbitmqctl reset sudo rabbitmqctl join_cluster rabbit@rabbit-1

Теперь наберите: sudo rabbitmqctl cluster_status .

Вывод должен быть следующим:

```plain Cluster status of node ‘rabbit@rabbit-2’ … []>] …Done. As you can see both nodes are now clustered. If you repeat this on rabbit-1 you’ll get following output:

Теперь вы можете начать rabbit-2.

plain sudo rabbitmqctl start_app

Если вы проверите статус снова, оба узла будут работать:

Обратите внимание, что оба узла являются узлами диска, что означает, что они хранят свои метаданные на диске. Давайте добавим rabbit-3 в качестве узла RAM. ssh to rabbit-3 и выполните следующие команды:

plain sudo rabbitmqctl stop_app sudo rabbitmqctl reset sudo rabbitmqctl join_cluster --ram rabbit@rabbit-2 sudo rabbitmqctl start_app

Проверка состояния показывает:

Все узлы кластера работают. Узлы диска - это rabbit-1 и rabbit-2, а узел ОЗУ - rabbit-3.

Поздравляем! У вас есть работающий кластер RabbitMQ.

Реальные осложнения

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

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

RabbitMQ также поддерживает кластеризацию через файлы конфигурации. Это замечательно, когда ваши дисковые узлы работают, потому что перезапущенные узлы ОЗУ будут просто кластеризоваться на основе файла конфигурации без необходимости их явной кластеризации. Опять же, это не взлетит, когда вы пытаетесь восстановить сломанный кластер.

Надежная кластеризация RabbitMQ

Это сводится к следующему: вы не знаете, какой последний дисковый узел вышел из строя. Вы не знаете метаданные кластеризации каждого узла (возможно, они были сброшены во время сброса). Чтобы запустить все узлы, я использую следующий алгоритм:

  • Запустите все узлы (по крайней мере, последний дисковый узел должен быть в состоянии начать).
  • Если даже ни один узел не может запуститься, вы попали в точку. Просто выручите.
  • Отслеживайте все узлы, которые не удалось запустить.
  • Попробуйте запустить все неисправные узлы.
  • Если некоторые узлы не удалось запустить во второй раз, вы попали в шланг. Просто выручите.

Этот алгоритм будет работать до тех пор, пока ваш последний узел диска физически исправен.

После того, как все узлы кластера подключены, вы можете переконфигурировать их (помните, что вы не уверены, на каком узле какие метаданные). Ключ заключается в принудительном сбросе каждого узла. Это гарантирует, что любой след предыдущей конфигурации кластера будет удален со всех узлов. Сначала сделайте это для одного дискового узла:

plain stop_app force_reset start_app

Затем для каждого другого узла (диска или ОЗУ):

plain stop_app force_reset join_cluster [list of disc nodes] start_app

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

Вы можете ввести SSH в каждый блок и выполнить вышеупомянутые шаги для каждого блока вручную. Это работает, но очень быстро устаревает. Кроме того, это нецелесообразно, если вы хотите построить и разрушить кластер как часть автоматизированного теста.

Одним из решений является использование Fabric. Одна серьезная ошибка, с которой я столкнулся, заключается в том, что когда я выполнял алгоритм кластера сборки вручную, он работал отлично, но когда я использовал Fabric, он таинственным образом не работал. После некоторой отладки я заметил, что узлы запустились успешно, но к тому времени, когда я попытался stop_app, узлы были недоступны. Это оказалось ошибкой новичка Fabric с моей стороны. Когда вы запускаете удаленную команду с помощью Fabric, она запускает новую оболочку на удаленном компьютере. Когда команда завершена, оболочка закрывается, отправляя сигнал SIGHUP (сигнал зависания) всем его подпроцессам, включая узел Erlang. Использование nohup позаботится об этом. Другой более надежный вариант - запуск RabbitMQ в качестве службы (демона).

Программное администрирование кластера

Администрирование означает создание виртуальных хостов, пользователей, бирж и очередей, настройку разрешений и привязку очередей к биржам. Первое, что вы должны сделать, если вы еще этого не сделали, это установить плагины управления. Я не уверен, почему вы должны включить его самостоятельно. Это должно быть включено по умолчанию.

Веб-интерфейс фантастический, и вы должны обязательно ознакомиться с ним. Однако для удаленного администрирования кластера можно использовать API-интерфейс управления RESTful. Существует также инструмент командной строки Python с именем rabbitmqadmin, для которого требуется Python 2.6+. Использовать rabbitmqadmin довольно просто. Единственная проблема, которую я обнаружил, это то, что я мог использовать только гостевую учетную запись по умолчанию для администрирования кластера. Я создал другого пользователя-администратора с именем «admin», установил его разрешения для всех (настройка/чтение/запись) и присвоил ему тег «администратор» (дополнительное требование API управления), но я продолжал получать ошибки разрешения.

I installed rabbitmqadmin and was able to list all the exchanges and queues. How can I use rabbitmqadmin or rabbitmqctl to delete all the queues.


4,257 17 17 gold badges 73 73 silver badges 135 135 bronze badges 12.9k 23 23 gold badges 53 53 silver badges 70 70 bronze badges

23 Answers 23

First, list your queues:

rabbitmqadmin list queues name

Then from the list, you'll need to manually delete them one by one:

rabbitmqadmin delete queue name='queuename'

Because of the output format, doesn't appear you can grep the response from list queues . Alternatively, if you're just looking for a way to clear everything (read: reset all settings, returning the installation to a default state), use:

7,062 2 2 gold badges 34 34 silver badges 53 53 bronze badges


10.6k 7 7 gold badges 41 41 silver badges 70 70 bronze badges to see all pending tasks in rabbitmq: rabbitmqctl list_queues name messages messages_ready \ messages_unacknowledged Be aware that "rabbitmqctl reset" will reset everything back to the "factory settings". Any RabbitMQ users, virtual hosts, etc, that you have created will be blown away.

Actually super easy with management plugin and policies:

Goto Management Console (localhost:15672)

Goto Admin tab

Goto Policies tab(on the right side)

Add Policy

  • Virtual Host: Select
  • Name: Expire All Policies(Delete Later)
  • Pattern: .*
  • Apply to: Queues
  • Definition:expires with value 1 (change type from String to Number)

Checkout Queues tab again

All Queues must be deleted

And don't forget to remove policy. .

select "Number" at Definition. Does not work with default ("String") Great answer, actually made up my day. If you select "Exchanges and Queues" from the list, you could easily delete both Queues and Exchanges. I wish this could be the accepted answer. Very clean solution, without the need to play around the instance SSH. Pity nobody explains how to install management plugin and policies

With rabbitmqadmin you can remove them with this one-liner:

In my case queues are prefixed with keyword by which I can simply use egrep , so my command will look like this: rabbitmqadmin -f tsv -q list queues name | egrep "%search word%" | while read queue; do rabbitmqadmin -q delete queue name=$; done


1,700 2 2 gold badges 13 13 silver badges 21 21 bronze badges


822 1 1 gold badge 13 13 silver badges 23 23 bronze badges

In Rabbit version 3.7.10 you can run below command with root permission:


Hmm, I have ran it on Unix based OS and it works successfully, just make sure the result that passed to xargs command is ok.

If you don't have rabbitmqadmin installed, try to purge queues with rabbitmqctl:

rabbitmqctl list_queues | awk '< print $1 >' | xargs -L1 rabbitmqctl purge_queue

There is no delete_queue nor purge_queue commands in rabbitmqctl . I would like to purge a lot of queues that seem to be automatically generated and I would not like to install extra software like rabbitmqadmin . rabbitmqctl purge_queue worked here manually. I only needed to add -p <virtual-host> Good to hear that, these could have been added recently.

To remove the policy

Note that this only works for unused queues

2,421 1 1 gold badge 24 24 silver badges 30 30 bronze badges

I made a deleteRabbitMqQs.sh, which accepts arguments to search the list of queues for, selecting only ones matching the pattern you want. If you offer no arguments, it will delete them all! It shows you the list of queues its about to delete, letting you quit before doing anything destructive.

If you want different matching against the arguments you pass in, you can alter the grep in line four. When deleting all queues, it won't delete ones with three consecutive spaces in them, because I figured that eventuality would be rarer than people who have rabbitmqctl printing its output out in different languages.

Here is a way to do it with PowerShell. the URL may need to be updated

3,671 4 4 gold badges 28 28 silver badges 40 40 bronze badges Note, this only deletes non-empty queues. Remove the -gt clause to delete all queues

You can use rabbitmqctl eval as below:

The above will delete all empty queues in all vhosts that have a name beginning with "prefix-". You can edit the variables IfUnused, IfEmpty, and MatchRegex as per your requirement.

3. Настройте переменные среды:

Добавьте следующую конфигурацию:

Сделайте конфигурацию эффективной:

4. Запустите службу кролика:
Метод первый:
Введите каталог sbin для запуска:

Способ второй:
Начать напрямую:



Выход: Ctrl + Shift + C, чтобы отменить процесс

Теперь войдите в интерфейс управления сервером и найдите тот сбой, решение:


авторизоваться:

Пароль учетной записи по умолчанию: гость / гость

Решение: создайте новую учетную запись, а затем предоставьте разрешения



Затем перезагрузите сервер и введите новый пароль учетной записи:
Завершите работу сервера:
rabbitmqctl stop
Включите сервер:
rabbitmq-server


Введите новый пароль учетной записи:

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

Так что используйте второй метод

Этот метод должен решить проблему версии!
1. Загрузите пакет rpm:

2. Установите сокат:

3. Установить кролика


Просмотрите путь установки:

4. Запустите службу:

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

Примечание: меры предосторожности при удалении rabbitMQ
Удалить программное обеспечение в Linux:
Сначала найдите соответствующий каталог (где указано имя программного обеспечения), удалите файлы в каталоге
rpm -q -a Просмотр программного обеспечения в кеше
Снова очистите кэш yum. Чтобы очистить кэш yum, используйте команду yum clean. Параметры yum clean - это заголовки, пакеты, метаданные, dbcache, плагины, expirecache, rpmdb, все

После загрузки последней версии установите с шага 2 и следуйте инструкциям после установкипервый методНастройте логин и создайте новых пользователей
5. Установите самозапуск при загрузке:

Установка RabbitMQ в Ubuntu 20.04

1. Добавление ключей в систему

Сначала необходимо добавить в систему все ключи, которые используются для подписи репозиториев с Erlang и RabbitMQ. Если в системе не установлена утилита curl и gnupg, установите:

sudo apt install curl gnupg -y

Для добавления ключей выполните такие команды:

curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null


2. Добавление репозиториев

Создайте файл /etc/apt/sources.list.d/rabbitmq.list и добавьте в него сначала репозитории Erlang:

sudo vi /etc/apt/sources.list.d/rabbitmq.list

Затем репозитории RabbitMQ:


После сохранения изменений не забудьте обновить списки пакетов в репозиториях:

sudo apt update -y

3. Установка erlang

Для установки всех необходимых пакетов erlang выполните:

sudo apt install -y erlang-base \
erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
erlang-runtime-tools erlang-snmp erlang-ssl \
erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl


После установки можно убедится что всё прошло успешно выполнив:


Для того чтобы выйти из консоли нажмите Ctrl+C и следуйте инструкции.

4. Установка RabbitMQ

Для установки RabbitMQ необходимо выполнить команду:

sudo apt-get install rabbitmq-server -y --fix-missing

Затем проверьте что сервер запущен и работает:

sudo systemctl status rabbitmq-server


И если это необходимо, то добавьте его а автозагрузку:

sudo systemctl enable rabbitmq-server

После этого установка RabbitMQ Ubuntu завершена.

5. Веб интерфейс

Если вы хотите иметь доступ к веб-интерфейсу RabbitMQ его тоже необходимо включить. Для этого выполните:

sudo rabbitmq-plugins enable rabbitmq_management


sudo rabbitmqctl add_user admin сложный_пароль

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

sudo rabbitmqctl set_user_tags admin administrator

Кроме того, этому пользователю необходимо дать доступ к RabbitMQ:

sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

После завершения настройки вы сможете авторизоваться в веб-интерфейсе программы от имени только что созданного пользователя:


Установка RabbitMQ с помощью Docker

Если вы хотите попробовать RabbitMQ на рабочей машине, то лучше всего для этого будет использовать Docker. Для запуска контейнера с RabbitMQ достаточно выполнить такую команду:

docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.9-management


Выводы

В этой небольшой статье мы рассмотрели как выполняется установка RabbitMQ Ubuntu 20.04, а также как создать пользователя RabbitMQ и как войти в веб-интерфейс.

Нет похожих записей


Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

Читайте также: