All checks were successful
Deploy Static Site / deploy (push) Successful in 6m55s
387 lines
42 KiB
HTML
387 lines
42 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="ru">
|
||
|
||
<head>
|
||
<title>Кластер RabbitMQ</title>
|
||
<meta name="generator" content="Help+Manual" />
|
||
<meta name="keywords" content="" />
|
||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<meta name="description" content="Для работы приложения ELMA365 необходимо установить RabbitMQ версии 3.9.15–3.12. Установка RabbitMQ версии 4.0 не поддерживается в текущей версии ELMA365." />
|
||
<meta name="picture" content="" />
|
||
<meta property="og:type" content="website" />
|
||
<meta property="og:title" content="Cправка по Low-code платформе ELMA365" />
|
||
<meta property="og:url" content="https://elma365.com/ru/help" />
|
||
<meta property="og:image" content="" />
|
||
<meta property="og:site_name" content="ELMA365" />
|
||
<link rel="icon" href="favicon.png" type="image/png" />
|
||
|
||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet" />
|
||
<link rel="stylesheet" href="./jquery-ui.min.css" />
|
||
<link rel="stylesheet" href="default.css" />
|
||
<link rel="stylesheet" href="./search-yandex.css" />
|
||
<link rel="stylesheet" href="./article.css" />
|
||
<link rel="stylesheet" href="./glossary.css" />
|
||
<link rel="stylesheet" href="./theme.css" />
|
||
|
||
<script type="text/javascript" src="jquery.js"></script>
|
||
<script type="text/javascript" src="helpman_settings.js"></script>
|
||
<script type="text/javascript" src="helpman_topicinit.js"></script>
|
||
|
||
<script type="text/javascript" src="highlight.js"></script>
|
||
<script type="text/javascript">
|
||
$(document).ready(function(){highlight();});
|
||
</script>
|
||
</head>
|
||
|
||
<body>
|
||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-M6ETBEC1R9"></script><script>window.dataLayer=window.dataLayer || []; function gtag(){dataLayer.push(arguments);}gtag('js', new Date()); gtag('config', 'G-M6ETBEC1R9');</script>
|
||
<script>!function(e,t,c,n,r,a,m){e.ym=e.ym||function(){(e.ym.a=e.ym.a||[]).push(arguments)},e.ym.l=1*new Date;for(var s=0;s<document.scripts.length;s++)if(document.scripts[s].src===n)return;a=t.createElement(c),m=t.getElementsByTagName(c)[0],a.async=1,a.src=n,m.parentNode.insertBefore(a,m)}(window,document,"script","https://mc.yandex.ru/metrika/tag.js"),ym(83179930,"init",{clickmap:!0,trackLinks:!0,accurateTrackBounce:!0,webvisor:!0})</script><noscript><div><img alt=""src=https://mc.yandex.ru/watch/83179930 style=position:absolute;left:-9999px></div></noscript>
|
||
|
||
<header class="header elma-365">
|
||
<div class="container">
|
||
<a class="header__logo" href="https://elma365.com/ru/help">
|
||
<img src="./logo.svg" alt="header logo">
|
||
</a>
|
||
<!-- <div class="hero__search-form" id="search-panel">
|
||
<form class="search-form" onsubmit="ym(83179930,'reachGoal','poisk')">
|
||
<label class="search-form__label">
|
||
<span id="reset-search" class="search__icon"></span>
|
||
<input class="search-form__input" type="text">
|
||
</label>
|
||
<input class="search-form__submit" type="submit" value="Submit">
|
||
</form>
|
||
</div> -->
|
||
|
||
<div class="hero__search-form" id="search-panel"> <form class="search-form"> <label class="search-form__label"> <span id="reset-search" class="search__icon"></span> <input class="search-form__input" type="text"> </label> <input class="search-form__submit" type="submit" value="Submit"> </form> </div>
|
||
<div class="hero__search">
|
||
<a href="#" id="search-icon" class="hero__search-icon">
|
||
<img src="search-icon-white.svg" alt="search string">
|
||
</a>
|
||
<a href="#" id="side-menu-icon" class="hero__side-icon">
|
||
<img src="side_menu.svg" alt="side menu">
|
||
</a>
|
||
</div>
|
||
<div class="header__navi">
|
||
|
||
<ul class="header__list"><li><span class="solution-select"><span class="solution-select__selected"></span><svg width="7" height="4" viewBox="0 0 7 4" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1L3.5 3.5L6 1" stroke="white" stroke-linecap="round" stroke-linejoin="round"/></svg><ul class="solution-select__list"><li><a class="project-link" href="https://elma365.com/ru/help/platform/get-trial.html">Платформа</a></li><li><a class="project-link" href="https://elma365.com/ru/help/ecm/ecm-functions.html">ECM</a></li><li><a class="project-link" href="https://elma365.com/ru/help/crm/crm_overview.html">CRM</a></li><li><a class="project-link" href="https://elma365.com/ru/help/service/service-functions.html">Service</a></li><li><a class="project-link" href="https://elma365.com/ru/help/projects/projects-functions.html">Проекты</a></li><li><a class="project-link" href="https://elma365.com/ru/help/business_solutions/-elma365-store.html">Бизнес-решения</a></li></ul></span></li><li><a href="https://api.elma365.com/ru/"target="_blank">API</a></li><li><a href="https://tssdk.elma365.com/"target="_blank">SDK</a></li><li><a href="https://community.elma365.com/" target="_blank">Community</a></li><li><a href="https://elma-academy.com/ru/" target="_blank">Академия</a></li><li><a href="https://elma365.com/ru/" target="_blank">Сайт ELMA365</a></li></ul>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
|
||
</header>
|
||
|
||
|
||
|
||
|
||
<main class="main container">
|
||
|
||
<aside class="sidebar" id="sidebar">
|
||
<div class="sidebar__header">
|
||
<a class="header__logo" href="https://elma365.com/ru/help">
|
||
<img src="./logo-light.svg">
|
||
</a>
|
||
<span class="sidebar__close elma-365-close" id="close"></span>
|
||
</div>
|
||
<div class="sidebar__wrapper" id="side-menu">
|
||
|
||
</div>
|
||
</aside>
|
||
|
||
<article class="article" id="article">
|
||
<div class="article-inner">
|
||
<div class="content">
|
||
<header class="article__header">
|
||
<div class="article__bread" style="display:flex; gap:10px;">
|
||
<span id="subcategory" class="search-res__item-category search-res__item-category_subcategory subcategory article__badge"></span>
|
||
|
||
<div class="topic__breadcrumbs">
|
||
<p><a href="elma365-on-premises.html">ELMA365 On-Premises</a> > <a href="infrastructure-preparation.html">Подготовка инфраструктуры</a> > Базы данных > Отказоустойчивая инфраструктура / Кластер RabbitMQ</p>
|
||
</div>
|
||
|
||
</div>
|
||
<div class="topic__title"><h1 class="p_Heading1"><span class="f_Heading1">Кластер RabbitMQ</span></h1>
|
||
</div>
|
||
|
||
</header>
|
||
<section class="article__content">
|
||
<div class="scroll-top-inner">
|
||
<a href="#h1-article" class="scroll-top"></a>
|
||
</div>
|
||
<!-- Placeholder for topic body. -->
|
||
<p class="p_Normal">Для работы приложения ELMA365 необходимо установить RabbitMQ версии 3.9.15–3.12. Установка RabbitMQ версии 4.0 не поддерживается в текущей версии ELMA365.</p>
|
||
<p class="p_Normal">В статье описана установка RabbitMQ 3.12.0 и Erlang 25.3.2.2-1 для ОС Ubuntu Linux 20.04 и 22.04. Вы можете ознакомиться с руководством в <a href="https://www.rabbitmq.com/install-debian.html" target="_blank" class="weblink">официальной документации RabbitMQ</a>.</p>
|
||
<p class="p_Normal">Установка состоит из шести этапов:</p>
|
||
<ol style="list-style-type:decimal">
|
||
<li value="1" class="p_Normal"><a href="configure-rabbitmq.html#preparation-node" class="topiclink">Подготовка нод (серверов)</a>.</li><li value="2" class="p_Normal"><a href="configure-rabbitmq.html#install-rabbitmq" class="topiclink">Установка RabbitMQ</a>.</li><li value="3" class="p_Normal"><a href="configure-rabbitmq.html#preparation-cluster-rabbitmq" class="topiclink">Подготовка кластера RabbitMQ</a>.</li><li value="4" class="p_Normal"><a href="configure-rabbitmq.html#setting-rabbitmq" class="topiclink">Настройка RabbitMQ</a>.</li><li value="5" class="p_Normal"><a href="configure-rabbitmq.html#config-haproxy" class="topiclink">Конфигурация HAproxy (блок rabbitmq)</a>.</li><li value="6" class="p_Normal"><a href="configure-rabbitmq.html#connect-to-rabbitmq" class="topiclink">Подключение к RabbitMQ</a>.</li></ol>
|
||
<h2 class="p_Heading2"><a id="preparation-node" class="hmanchor"></a><span class="f_Heading2">Шаг 1. Подготовка нод (серверов)</span></h2>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">начало внимание</span></p>
|
||
<p class="p_Normal">Минимальное количество серверов для организации кластера — три.</p>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">конец внимание</span></p>
|
||
<ol style="list-style-type:upper-roman">
|
||
<li value="1" class="p_Normal">Создайте три ноды (сервера) с последовательно пронумерованными именами хостов:</li></ol>
|
||
<ul style="list-style-type:disc">
|
||
<li class="p_Normal"><span style="font-weight: bold;">rabbitmq-server1.your_domain</span>;</li><li class="p_Normal"><span style="font-weight: bold;">rabbitmq-server2.your_domain</span>;</li><li class="p_Normal"><span style="font-weight: bold;">rabbitmq-server3.your_domain</span>.</li></ul>
|
||
<ol style="list-style-type:upper-roman" start="2">
|
||
<li value="2" class="p_Normal">Создайте необходимые сопоставления имён хостов в DNS. Если такой возможности нет, внесите нужные записи в<span style="font-weight: bold;"> /etc/hosts</span>.</li></ol>
|
||
<h2 class="p_Heading2"><a id="install-rabbitmq" class="hmanchor"></a><span class="f_Heading2">Шаг 2. Установка RabbitMQ</span></h2>
|
||
<ol style="list-style-type:upper-roman">
|
||
<li value="1" class="p_Normal">Установите необходимые пакеты:</li></ol>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo apt-get install curl gnupg apt-transport-https -y</span></p>
|
||
<ol style="list-style-type:upper-roman" start="2">
|
||
<li value="2" class="p_Normal">Импортируйте все необходимые ключи:</li></ol>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/</span><span class="f_CodeExample" style="font-weight: bold;">null</span><br />
|
||
<span class="f_CodeExample">curl -1sLf https://ppa1.novemberain.com/gpg.E495BB49CC4BBE5B.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg > /dev/null</span><br />
|
||
<span class="f_CodeExample">curl -1sLf https://ppa1.novemberain.com/gpg.9F4587F226208342.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.9F4587F226208342.gpg > /dev/null</span></p>
|
||
<p class="p_Normal">Актуальные ключи для разных версий RabbitMQ перечислены в <a href="https://www.rabbitmq.com/docs/install-debian#cloudsmith-signing-keys" target="_blank" class="weblink">официальной документации RabbitMQ</a>.</p>
|
||
<ol style="list-style-type:upper-roman" start="3">
|
||
<li value="3" class="p_Normal">Добавьте репозитории <span style="font-weight: bold;">RabbitMQ</span>:</li></ol>
|
||
<p class="p_CodeExample" style="white-space: normal; page-break-inside: auto; page-break-after: avoid;"><span class="f_CodeExample">sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF</span><br />
|
||
<span class="f_CodeExample">deb [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu $(lsb_release -cs) main</span><br />
|
||
<span class="f_CodeExample">deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu $(lsb_release -cs) main</span><br />
|
||
<span class="f_CodeExample"> </span><br />
|
||
<span class="f_CodeExample">deb [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu $(lsb_release -cs) main</span><br />
|
||
<span class="f_CodeExample">deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu $(lsb_release -cs) main</span><br />
|
||
<span class="f_CodeExample">EOF</span></p>
|
||
<ol style="list-style-type:upper-roman" start="4">
|
||
<li value="4" class="p_Normal">Обновите кеш пакетов:</li></ol>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo apt-get update -y</span></p>
|
||
<ol style="list-style-type:upper-roman" start="5">
|
||
<li value="5" class="p_Normal">Установите пакеты <span style="font-weight: bold;">Erlang</span>:</li></ol>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo apt-get install -y erlang-base=1:25.3.2.2-1 erlang-asn1=1:25.3.2.2-1 erlang-crypto=1:25.3.2.2-1 erlang-eldap=1:25.3.2.2-1 erlang-ftp=1:25.3.2.2-1 erlang-inets=1:25.3.2.2-1 erlang-mnesia=1:25.3.2.2-1 erlang-os-mon=1:25.3.2.2-1 erlang-parsetools=1:25.3.2.2-1 erlang-</span><span class="f_CodeExample" style="font-weight: bold;">public</span><span class="f_CodeExample">-key=1:25.3.2.2-1 erlang-runtime-tools=1:25.3.2.2-1 erlang-snmp=1:25.3.2.2-1 erlang-ssl=1:25.3.2.2-1 erlang-syntax-tools=1:25.3.2.2-1 erlang-tftp=1:25.3.2.2-1 erlang-tools=1:25.3.2.2-1 erlang-xmerl=1:25.3.2.2-1</span></p>
|
||
<ol style="list-style-type:upper-roman" start="6">
|
||
<li value="6" class="p_Normal">Установите <span style="font-weight: bold;">rabbitmq-server</span> и его зависимости:</li></ol>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo apt-get install rabbitmq-server=3.12.0-1 -y --fix-missing</span></p>
|
||
<ol style="list-style-type:upper-roman" start="7">
|
||
<li value="7" class="p_Normal">Запустите <span style="font-weight: bold;">rabbitmq-server</span>:</li></ol>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo systemctl enable --now rabbitmq-server</span></p>
|
||
<h2 class="p_Heading2"><a id="preparation-cluster-rabbitmq" class="hmanchor"></a><span class="f_Heading2">Шаг 3. Подготовка кластера RabbitMQ</span></h2>
|
||
<ol style="list-style-type:upper-roman">
|
||
<li value="1" class="p_Normal">На каждой ноде <span style="font-weight: bold;">rabbitmq</span> создайте файл <code><b>/etc/rabbitmq/rabbitmq-env.conf</b></code> и добавьте переменные окружения <code><b>RABBITMQ_NODENAME</b></code> и <code><b>RABBITMQ_USE_LONGNAME</b></code>.</li></ol>
|
||
<p class="p_Normal">Пример заполнения для <span style="font-weight: bold;">rabbitmq-server1.your_domain</span>:</p>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">RABBITMQ_NODENAME=rabbit@rabbitmq-server1.your_domain</span><br />
|
||
<span class="f_CodeExample">RABBITMQ_USE_LONGNAME=</span><span class="f_CodeExample" style="font-weight: bold;">true</span></p>
|
||
<p class="p_Normal">Пример заполнения для<span style="font-weight: bold;"> rabbitmq-server2.your_domain</span>:</p>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">RABBITMQ_NODENAME=rabbit@rabbitmq-server2.your_domain</span><br />
|
||
<span class="f_CodeExample">RABBITMQ_USE_LONGNAME=</span><span class="f_CodeExample" style="font-weight: bold;">true</span></p>
|
||
<p class="p_Normal">Пример заполнения для <span style="font-weight: bold;">rabbitmq-server3.your_domain</span>:</p>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">RABBITMQ_NODENAME=rabbit@rabbitmq-server3.your_domain</span><br />
|
||
<span class="f_CodeExample">RABBITMQ_USE_LONGNAME=</span><span class="f_CodeExample" style="font-weight: bold;">true</span></p>
|
||
<ol style="list-style-type:upper-roman" start="2">
|
||
<li value="2" class="p_Normal">Скопируйте Cookie <span style="font-weight: bold;">/var/lib/rabbitmq/.erlang.cookie</span> с первого узла<span style="font-weight: bold;"> rabbitmq-server1.your_domain</span> на все остальные узлы в кластере.</li></ol>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">Начало внимание</span></p>
|
||
<p class="p_Normal">Для работы кластера RabbitMQ у всех узлов, участвующих в кластере, должно совпадать содержимое файла <span style="font-weight: bold;">/var/lib/rabbitmq/.erlang.cookie</span>.</p>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">Конец внимание</span></p>
|
||
<ol style="list-style-type:upper-roman" start="3">
|
||
<li value="3" class="p_Normal">Перезапустите сервис RabbitMQ на каждой ноде:</li></ol>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo systemctl restart rabbitmq-server</span></p>
|
||
<ol style="list-style-type:upper-roman" start="4">
|
||
<li value="4" class="p_Normal">Остановите приложение на узлах <span style="font-weight: bold;">rabbitmq-server2.your_domain</span> и <span style="font-weight: bold;">rabbitmq-server3.your_domain</span> для последующего присоединения к кластеру:</li></ol>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo rabbitmqctl stop_app</span></p>
|
||
<ol style="list-style-type:upper-roman" start="5">
|
||
<li value="5" class="p_Normal">Сбросьте <span style="font-weight: bold;">rabbitmq</span> на узлах <span style="font-weight: bold;">rabbitmq-server2.your_domain</span> и <span style="font-weight: bold;">rabbitmq-server3.your_domain</span>:</li></ol>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo rabbitmqctl reset</span></p>
|
||
<ol style="list-style-type:upper-roman" start="6">
|
||
<li value="6" class="p_Normal">Присоедините узлы <span style="font-weight: bold;">rabbitmq-server2.your_domain</span> и <span style="font-weight: bold;">rabbitmq-server3.your_domain</span> к кластеру:</li></ol>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo rabbitmqctl join_cluster rabbit@rabbitmq-server1.your_domain</span></p>
|
||
<ol style="list-style-type:upper-roman" start="7">
|
||
<li value="7" class="p_Normal">Запустите приложение на узлах <span style="font-weight: bold;">rabbitmq-server2.your_domain</span> и <span style="font-weight: bold;">rabbitmq-server3.your_domain</span>:</li></ol>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo rabbitmqctl start_app</span></p>
|
||
<ol style="list-style-type:upper-roman" start="8">
|
||
<li value="8" class="p_Normal">Проверьте статус кластера:</li></ol>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo rabbitmqctl cluster_status</span></p>
|
||
<h2 class="p_Heading2"><a id="setting-rabbitmq" class="hmanchor"></a><span class="f_Heading2">Шаг 4. Настройка RabbitMQ</span></h2>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">начало примечание</span></p>
|
||
<p class="p_Normal"><span style="font-weight: bold;">Примечание</span></p>
|
||
<p class="p_Normal">Для пароля разрешается применять следующие символы:</p>
|
||
<ul style="list-style-type:disc">
|
||
<li class="p_Normal">Заглавные латинские буквы: от A до Z;</li><li class="p_Normal">Строчные латинские буквы: от a до z;</li><li class="p_Normal">Цифры от 0 до 9;</li><li class="p_Normal">Символы: -_.</li></ul>
|
||
<p class="p_Normal">Зарезервированные (недопустимые) символы:</p>
|
||
<p class="p_Normal">! * ' ( ) ; : @ & = + $ , / ? % # [ ]</p>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">конец примечание</span></p>
|
||
<ol style="list-style-type:upper-roman">
|
||
<li value="1" class="p_Normal">На каждом узле включите необходимые плагины: </li></ol>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo rabbitmq-plugins enable \</span><br />
|
||
<span class="f_CodeExample">rabbitmq_management</span></p>
|
||
<ol style="list-style-type:upper-roman" start="2">
|
||
<li value="2" class="p_Normal">Cоздайте <span style="font-weight: bold;">vhost</span> и дайте пользователю доступ к нему, выполнив команды на первом узле <span style="font-weight: bold;">rabbitmq-server1.your_domain</span>:</li></ol>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo rabbitmqctl add_vhost elma365vhost</span><br />
|
||
<span class="f_CodeExample">sudo rabbitmqctl add_user elma365user SecretPassword</span><br />
|
||
<span class="f_CodeExample">sudo rabbitmqctl set_permissions -p elma365vhost elma365user ".*" ".*" ".*"</span><br />
|
||
<span class="f_CodeExample">sudo rabbitmqctl set_user_tags elma365user administrator</span></p>
|
||
<ol style="list-style-type:upper-roman" start="3">
|
||
<li value="3" class="p_Normal">Создайте политику, которая позволяет зеркалировать очереди для всех узлов в кластере, выполнив команду на первом узле <span style="font-weight: bold;">rabbitmq-server1.your_domain</span>:</li></ol>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo rabbitmqctl set_policy -p 'elma365vhost' MirrorAllQueues ".*" '{"ha-mode":"all"}'</span></p>
|
||
<p class="p_Normal">Если отсутствует поддержка политики High Availability Mode, используйте политику Quorum:</p>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">rabbitmqctl set_policy –p 'elma365vhost' QuorumDefault “^.*” ‘{“queue-type”:“quorum”}’ --priority 0 --apply-to queues</span></p>
|
||
<p class="p_Normal">Чтобы посмотреть настроенные политики, используйте команду:</p>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo rabbitmqctl list_policies --vhost elma365vhost</span></p>
|
||
<p class="p_Normal"><a class="dropdown-toggle" style="font-style: normal; font-weight: normal; color: #000000; background-color: transparent; text-decoration: none;" href="javascript:HMToggle('toggle','TOGGLE0186A1')">Настройка включения TLS/SSL в RabbitMQ</a></p>
|
||
<div id="TOGGLE0186A1" class="dropdown-toggle-body" style="text-align: left; text-indent: 0; padding: 0 0 0 0; margin: 0 0 0 0;"><table style="border:none; border-spacing:0;">
|
||
<tr>
|
||
<td style="vertical-align:top; padding:0; border:none"><p class="p_Normal">Для включения поддержки TLS/SSL в RabbitMQ необходимо в файл конфигурации <span style="font-weight: bold;">/etc/rabbitmq/rabbitmq.conf</span>:</p>
|
||
<ol style="list-style-type:decimal">
|
||
<li value="1" class="p_Normal">Добавить конфигурацию SSL в блоки<span style="font-weight: bold;"> rabbit</span> (port 5671) и <span style="font-weight: bold;">management</span> (port 15671).</li></ol>
|
||
<ol style="list-style-type:decimal" start="2">
|
||
<li value="2" class="p_Normal">В параметрах <span style="font-weight: bold;">ssl_options.certfile </span>и<span style="font-weight: bold;"> management.ssl.certfile</span> указать путь до файла сертификата сервера.</li></ol>
|
||
<ol style="list-style-type:decimal" start="3">
|
||
<li value="3" class="p_Normal">В параметрах <span style="font-weight: bold;">ssl_options.keyfile </span>и<span style="font-weight: bold;"> management.ssl.keyfile</span> указать путь до файла закрытого ключа.</li></ol>
|
||
<ol style="list-style-type:decimal" start="4">
|
||
<li value="4" class="p_Normal">В параметрах <span style="font-weight: bold;">ssl_options.cacertfile </span>и<span style="font-weight: bold;"> management.ssl.cacertfile</span> указать путь до файла корневого CA.</li></ol>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">listeners.tcp = none</span><br />
|
||
<span class="f_CodeExample">listeners.ssl.</span><span class="f_CodeExample" style="font-weight: bold;">default</span><span class="f_CodeExample"> = 5671</span><br />
|
||
<span class="f_CodeExample">ssl_options.cacertfile = /path/to/ca_certificate.pem</span><br />
|
||
<span class="f_CodeExample">ssl_options.certfile = /path/to/server_certificate.pem</span><br />
|
||
<span class="f_CodeExample">ssl_options.keyfile = /path/to/server_key.pem</span><br />
|
||
<span class="f_CodeExample">ssl_options.verify = verify_peer</span><br />
|
||
<span class="f_CodeExample">ssl_options.fail_if_no_peer_cert = </span><span class="f_CodeExample" style="font-weight: bold;">true</span><br />
|
||
<span class="f_CodeExample" style="font-weight: bold;"> </span><br />
|
||
<span class="f_CodeExample">management.ssl.port = 15671</span><br />
|
||
<span class="f_CodeExample">management.ssl.cacertfile = /path/to/ca_certificate.pem</span><br />
|
||
<span class="f_CodeExample">management.ssl.certfile = /path/to/server_certificate.pem</span><br />
|
||
<span class="f_CodeExample">management.ssl.keyfile = /path/to/server_key.pem</span></p>
|
||
<ol style="list-style-type:decimal" start="5">
|
||
<li value="5" class="p_Normal">Перезапустить сервис RabbitMQ:</li></ol>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo systemctl restart rabbitmq-server</span></p>
|
||
<p class="p_Normal">Подробнее о настройке TLS/SSL в RabbitMQ читайте в <a href="https://www.rabbitmq.com/ssl.html" target="_blank" class="weblink">официальной документации RabbitMQ</a>.<br />
|
||
<br />
|
||
Для включения TLS/SSL между нодами RabbitMQ «Securing Cluster (Inter-node)» необходимо:</p>
|
||
<ol style="list-style-type:decimal">
|
||
<li value="1" class="p_Normal">Объединить в один файл открытый и закрытый ключи узла, например, в<span style="font-weight: bold;"> </span><code><b>combined_keys.pem</b></code>:</li></ol>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">cat server_certificate.pem server_key.pem > combined_keys.pem</span></p>
|
||
<ol style="list-style-type:decimal" start="2">
|
||
<li value="2" class="p_CodeExample" style="white-space: normal; page-break-inside: auto;">Вывести путь к библиотеке Erlang TLS и экспортировать его в переменную окружения <code><b>ERL_SSL_PATH</b></code> в файл <code><b>/etc/rabbitmq/rabbitmq-env.conf</b></code>:</li></ol>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">erl -noinput -eval 'io:format("ERL_SSL_PATH=~s~n", [filename:dirname(code:which(inet_tls_dist))])' -s init stop > /tmp/ssl-path.txt</span><br />
|
||
<span class="f_CodeExample">cat /tmp/ssl-path.txt /etc/rabbitmq/rabbitmq-env.conf > /tmp/</span><span class="f_CodeExample" style="font-weight: bold;">new</span><span class="f_CodeExample">-rabbitmq-env.conf</span><br />
|
||
<span class="f_CodeExample">mv -f /tmp/</span><span class="f_CodeExample" style="font-weight: bold;">new</span><span class="f_CodeExample">-rabbitmq-env.conf /etc/rabbitmq/rabbitmq-env.conf</span></p>
|
||
<ol style="list-style-type:decimal" start="3">
|
||
<li value="3" class="p_CodeExample" style="white-space: normal; page-break-inside: auto;">В файл <code><b>/etc/rabbitmq/rabbitmq-env.conf</b></code> добавьте параметры для переменных окружения <code><b>SERVER_ADDITIONAL_ERL_ARGS</b></code> и <code><b>RABBITMQ_CTL_ERL_ARGS</b></code>:</li></ol>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">SERVER_ADDITIONAL_ERL_ARGS="-pa $ERL_SSL_PATH \</span><br />
|
||
<span class="f_CodeExample"> -proto_dist inet_tls \</span><br />
|
||
<span class="f_CodeExample"> -ssl_dist_opt server_certfile /path/to/combined_keys.pem \</span><br />
|
||
<span class="f_CodeExample"> -ssl_dist_opt server_secure_renegotiate true client_secure_renegotiate true"</span><br />
|
||
<span class="f_CodeExample">RABBITMQ_CTL_ERL_ARGS="-pa $ERL_SSL_PATH \</span><br />
|
||
<span class="f_CodeExample"> -proto_dist inet_tls \</span><br />
|
||
<span class="f_CodeExample"> -ssl_dist_opt server_certfile /path/to/combined_keys.pem \</span><br />
|
||
<span class="f_CodeExample"> -ssl_dist_opt server_secure_renegotiate true client_secure_renegotiate true"</span></p>
|
||
<ol style="list-style-type:decimal" start="4">
|
||
<li value="4" class="p_Normal"> Перезапустить сервис RabbitMQ на каждой ноде:</li></ol>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo systemctl restart rabbitmq-server</span></p>
|
||
<p class="p_Normal">Подробнее о настройке TLS/SSL между нодами RabbitMQ читайте в <a href="https://www.rabbitmq.com/clustering-ssl.html" target="_blank" class="weblink">официальной документации RabbitMQ</a>.</p>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<h2 class="p_Heading2"><a id="config-haproxy" class="hmanchor"></a><span class="f_Heading2">Шаг 5. Конфигурация HAProxy (блок rabbitmq)</span></h2>
|
||
<p class="p_Normal">Балансировку нагрузки между нодами кластера RabbitMQ осуществим с помощью HAProxy, произведем настройку по статье <a href="haproxy-rabbitmq.html" class="topiclink">«Конфигурация HAProxy для RabbitMQ»</a>.</p>
|
||
<h2 class="p_Heading2"><a id="connect-to-rabbitmq" class="hmanchor"></a><span class="f_Heading2">Шаг 6. Подключение к RabbitMQ</span></h2>
|
||
<p class="p_Normal">Строка для подключения к кластеру RabbitMQ (через HAProxy):</p>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">amqp</span><span class="f_CodeExample">://elma365user:SecretPassword@haproxy-server.your_domain:5672/elma365vhost</span></p>
|
||
<p class="p_Normal">Строка для подключения к кластеру RabbitMQ c TLS/SSL (через HAProxy c TLS/SSL):</p>
|
||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">amqps://elma365user:SecretPassword@haproxy-server.your_domain:5671/elma365vhost</span></p>
|
||
|
||
<div class="bottom-nav">
|
||
|
||
<a id="prev-link" class="topic__navi_prev" href="configure-redis.html">
|
||
<span class="bottom-nav__arrow bottom-nav__arrow--prev"></span> <span
|
||
class="bottom-nav__link">configure-redis.html</span>
|
||
</a>
|
||
|
||
|
||
<a id="next-link" class="topic__navi_next" href="minio-cluster.html">
|
||
<span class="bottom-nav__link">minio-cluster.html</span> <span
|
||
class="bottom-nav__arrow bottom-nav__arrow--next"></span>
|
||
</a>
|
||
|
||
</div>
|
||
<!-- добавляет на страницу строку блок Была ли статья полезной? -->
|
||
<div class="feedback-wrap"><div class="feedback" id="feedback"><span><b>Была ли статья полезной?</b></span><form action="" method="POST" class="feedback-form" id="feedback-form"><div class="feedback__popup feedback__popup-response" id="feedback__popup_thx">Спасибо за ваш отзыв!</div><div id="feedback-success-popup"><div class="wrap"><button type="button" class="feedback-popup-close">×</button><svg width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_212_2187)"><path d="M22 0.6875C10.2294 0.6875 0.6875 10.2294 0.6875 22C0.6875 33.7706 10.2294 43.3125 22 43.3125C33.7706 43.3125 43.3125 33.7706 43.3125 22C43.3125 10.2294 33.7706 0.6875 22 0.6875ZM22 40.5625C11.8023 40.5625 3.4375 32.3078 3.4375 22C3.4375 11.8024 11.6922 3.4375 22 3.4375C32.1977 3.4375 40.5625 11.6922 40.5625 22C40.5625 32.1976 32.3078 40.5625 22 40.5625ZM34.1713 16.933L18.6613 32.3186C18.257 32.7197 17.604 32.7171 17.203 32.3128L9.82283 24.873C9.42176 24.4686 9.42434 23.8157 9.82867 23.4146L10.5609 22.6884C10.9652 22.2873 11.6181 22.2899 12.0192 22.6942L17.9468 28.6697L31.9926 14.7366C32.3969 14.3356 33.0498 14.3382 33.4509 14.7425L34.1772 15.4747C34.5783 15.879 34.5757 16.532 34.1713 16.933Z" fill="#27AE60"></path></g><defs><clipPath id="clip0_212_2187"><rect width="44" height="44" fill="white"></rect></clipPath></defs></svg><p>Ваш отзыв успешно отправлен!</p><span>Спасибо за обратную связь.</span></div></div><div class="feedback__popup" id="feedback__popup_why"><button type="button" class="feedback-popup-close">×</button><div class="feedback__popup-header">Уточните, почему:</div><input type="radio" name="category" id="bad_recommendation" value="bad_recommendation"><label for="bad_recommendation">Рекомендации не помогли</label><input type="radio" name="category" id="difficult_text" value="difficult_text"><label for="difficult_text">Текст трудно понять</label><input type="radio" name="category" id="no_answer" value="no_answer"><label for="no_answer">Нет ответа на мой вопрос</label><input type="radio" name="category" id="bad_header" value="bad_header"><label for="bad_header">Содержание статьи не соответствует заголовку</label><input type="radio" name="category" id="other_reason" value="other_reason"><label for="other_reason">Другая причина</label></div><div class="feedback__popup" id="feedback__popup-other"><button type="button" class="feedback-popup-close">×</button> <div class="feedback__popup-header">Расскажите, что вам не понравилось в статье:</div><textarea class="feedback__textarea" name="other" id=""></textarea><input type="submit" class="feedback__other-btn" value="Отправить"></div><div class="feedback-form__btn-group"><input type="radio" name="useful" id="feedback__useful_yes" value="true"><label for="feedback__useful_yes"><img src="like.svg"/><span class="feedback-form__btn-group_yes-btn">Да</span></label><input type="radio" name="useful" id="feedback__useful_no" value="false"><label for="feedback__useful_no"><img src="dislike.svg"/><span class="feedback-form__btn-group_no-btn">Нет</span></label></div><select name="category"><option disabled>Выберите вариант</option><option value="bad_recommendation" selected>Рекомендации не помогли</option><option value="difficult_text">Текст трудно понять</option><option value="no_answer">Нет ответа на мой вопрос</option><option value="bad_header">Содержание статьи не соответствует заголовку</option><option value="other_reason">Другая причина</option></select><input type="submit"></form></div></div>
|
||
|
||
</section>
|
||
</div>
|
||
<aside class="article__sidebar" style="display:none">
|
||
<input type="checkbox" />
|
||
<div class="article__arrow"></div>
|
||
<div class="table-of-contents elma365-right" id="toc2Content">
|
||
<h3 class="h3-toc">В этой статье</h3>
|
||
<nav id="toc2"></nav>
|
||
</div>
|
||
</aside>
|
||
</div>
|
||
</article>
|
||
</main>
|
||
<footer class="footer">
|
||
<div class="footer-container">
|
||
<div class="footer-mobile">
|
||
|
||
<ul class="footer-mobile__list"><li><a href="https://api.elma365.com/ru/" target="_blank">API</a></li><li><a href="https://tssdk.elma365.com/" target="_blank">TS SDK</a></li><li><a href="https://community.elma365.com/" target="_blank">Community</a></li><li><a href="https://elma-academy.com/ru/elma365" target="_blank">Академия</a></li></ul><ul class="footer-mobile__list"><li><a href="https://elma365.com/ru/help/platform/get-trial.html">Платформа</a></li><li><a href="https://elma365.com/ru/help/ecm/ecm-functions.html">ECM</a></li><li><a href="https://elma365.com/ru/help/service/service-functions.html">Service</a></li><li><a href="https://elma365.com/ru/help/projects/projects-functions.html">Проекты</a></li></ul>
|
||
|
||
|
||
</div>
|
||
<div class="container">
|
||
<div class="footer-wrap">
|
||
|
||
<div><span class="mobile-question-popup">Отправить фидбэк</span><form method="POST" action class="question__popup question-xs" id="question__popup"><div class="question-wrap"><span class="close"></span><span class="title">Задать вопрос</span><label for="help_question" style="display: none;"></label><textarea name="help_question" id="help_question"></textarea><input type="submit" value="Отправить"></div></form><div class="hidden fade-in question-success-xs">Ваш фидбэк отправлен.</div></div>
|
||
|
||
<div class="footer-flex-b">
|
||
<div class="footer-top">
|
||
<span class="footer-copy">© 2025
|
||
ELMA365
|
||
|
||
|
||
</span>
|
||
|
||
<a href="https://navigator.sk.ru/orn/1122971" target="_blank">
|
||
<img src="sk-resident.svg" alt="sk icon" class="footer-img" width="117" height="34">
|
||
</a>
|
||
|
||
</div>
|
||
<div class="footer-line">
|
||
|
||
<div class="footer-line-copy">
|
||
<span class="footer-copy">© 2025
|
||
ELMA365
|
||
|
||
|
||
</span>
|
||
</div>
|
||
|
||
<ul class="footer-list">
|
||
|
||
<li class="footer-item"><a href="https://elma365.com/ru/" target="_blank" class="footer-link" style="color: #0D4A75;"><img src="browse.svg" alt="browse icon" class="footer-img">elma365.com</a></li><li class="footer-item"><a href="https://www.youtube.com/user/ELMABPM" target="_blank" class="footer-link"><img src="yt.svg" alt="youtube icon" class="footer-img"></a></li><li class="footer-item"><a href="https://vk.com/elma_bpm" target="_blank" class="footer-link"><img src="vk.svg" alt="vk icon" class="footer-img"></a></li><li class="footer-item"><a href="https://t.me/elmaday" target="_blank" class="footer-link"><img src="tg.svg" alt="telegram icon" class="footer-img"></a></li><li class="footer-item"><a href="https://dzen.ru/elma" target="_blank" class="footer-link"><img src="dzen.svg" alt="dzen icon" class="footer-img"></a></li>
|
||
|
||
|
||
<li class="footer-item">
|
||
<a href="https://navigator.sk.ru/orn/1122971" target="_blank">
|
||
<img src="sk-resident.svg" alt="sk icon" class="footer-img" width="117" height="34">
|
||
</a>
|
||
</li>
|
||
|
||
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<a href="#" class="arrow-top"></a>
|
||
</div>
|
||
|
||
</footer>
|
||
<!-- <script type="text/javascript" src="jquery1.min.js"></script>-->
|
||
<iframe name="hmnavigation" style="display:none!important"></iframe>
|
||
<!--<script src="./jquery-ui.js"></script> -->
|
||
<script src="./jquery-ui.min.js"></script>
|
||
<!--script src="//cdn.jsdelivr.net/npm/featherlight@1.7.14/release/featherlight.min.js" type="text/javascript" charset="utf-8"></script-->
|
||
<script src="./jquery.tocify.min.js"></script>
|
||
<script src="./TypoReporter.min.js"></script>
|
||
<script src="./google-search.js"></script>
|
||
<script src="./main.js"></script>
|
||
<script type="text/javascript">
|
||
HMInitToggle('TOGGLE0186A1','hm.type','dropdown','hm.state','0');
|
||
</script>
|
||
</body>
|
||
|
||
</html>
|