update help elma

This commit is contained in:
2025-05-27 21:32:35 +04:00
parent a6b05d6789
commit 898b22bf32
4500 changed files with 89372 additions and 120699 deletions

View File

@ -1,20 +1,19 @@
<!DOCTYPE html>
<html lang="ru">
<html lang="en">
<head>
<title>Кластер RabbitMQ</title>
<title>RabbitMQ cluster</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.153.12. Установка RabbitMQ версии&nbsp;4.0 не&nbsp;поддерживается в текущей версии ELMA365." />
<meta name="description" content="To work with the BRIX application, RabbitMQ version 3.9.15 or higher is required. The article describes the installation of RabbitMQ 3.12.0 and Erlang 25.3.2.2-1 for Ubuntu..." />
<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" />
<meta property="og:title" content="Full documentation for BRIX365 platform. Low-code developer guide. User guide. Admin guide. Developer guide." />
<meta property="og:url" content="https://brix365.com/en/help" />
<meta property="og:image" content="" />
<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" />
@ -24,7 +23,6 @@
<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>
@ -36,16 +34,16 @@
</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 class="header__logo" href="https://brix365.com/en/help">
<img src="./logo-en.svg" alt="header logo">
</a>
<!-- <div class="hero__search-form" id="search-panel">
<form class="search-form" onsubmit="ym(83179930,'reachGoal','poisk')">
<form class="search-form" onsubmit="ym(83180416,'reachGoal','poisk')">
<label class="search-form__label">
<span id="reset-search" class="search__icon"></span>
<input class="search-form__input" type="text">
@ -65,7 +63,7 @@
</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>
<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://brix365.com/en/help/platform/get-trial.html">Platform</a></li><li><a class="project-link" href="https://brix365.com/en/help/ecm/ecm-functions.html">ECM</a></li><li><a class="project-link" href="https://brix365.com/en/help/crm/crm_overview.html">CRM</a></li><li><a class="project-link" href="https://brix365.com/en/help/service/service-functions.html">Service</a></li><li><a class="project-link" href="https://brix365.com/en/help/projects/projects-functions.html">Projects</a></li><li><a class="project-link" href="https://brix365.com/en/help/business_solutions/-elma365-store.html">Business Solutions</a></li></ul></span></li><li><a href="https://api.brix365.com/en/" target="_blank">API</a></li><li><a href="https://tssdk.brix365.com/" target="_blank">SDK</a></li></ul>
</div>
@ -80,8 +78,8 @@
<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 class="header__logo" href="https://brix365.com/en/help">
<img src="./logo-light-en.svg">
</a>
<span class="sidebar__close elma-365-close" id="close"></span>
</div>
@ -94,15 +92,15 @@
<div class="article-inner">
<div class="content">
<header class="article__header">
<div class="article__bread" style="display:flex; gap:10px;">
<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> &gt; <a href="infrastructure-preparation.html">Подготовка инфраструктуры</a> &gt; Базы данных &gt; Отказоустойчивая инфраструктура / Кластер RabbitMQ</p>
<p><a href="elma365-on-premises.html">BRIX On-Premises</a> &gt; <a href="infrastructure-preparation.html">Prepare infrastructure</a> &gt; Databases &gt; High availability infrastructure / RabbitMQ cluster</p>
</div>
</div>
<div class="topic__title"><h1 class="p_Heading1"><span class="f_Heading1">Кластер RabbitMQ</span></h1>
<div class="topic__title"><h1 class="p_Heading1"><span class="f_Heading1">RabbitMQ cluster</span></h1>
</div>
</header>
@ -111,125 +109,123 @@
<a href="#h1-article" class="scroll-top"></a>
</div>
<!-- Placeholder for topic body. -->
<p class="p_Normal">Для работы приложения ELMA365 необходимо установить RabbitMQ версии 3.9.153.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>
<p class="p_Normal">To work with the BRIX application, RabbitMQ version 3.9.15 or higher is required. The article describes the installation of RabbitMQ 3.12.0 and Erlang 25.3.2.2-1 for Ubuntu Linux 20.04 and 22.04. You can also refer to the guide in the <a href="https://www.rabbitmq.com/install-debian.html" target="_blank" class="weblink">official RabbitMQ documentation</a> </p>
<p class="p_Normal">Installation consists of six steps:</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>
<li value="1" class="p_Normal"><a href="configure-rabbitmq.html#preparation-node" class="topiclink">Prepare nodes (servers)</a>.</li><li value="2" class="p_Normal"><a href="configure-rabbitmq.html#install-rabbitmq" class="topiclink">Install RabbitMQ</a>.</li><li value="3" class="p_Normal"><a href="configure-rabbitmq.html#preparation-cluster-rabbitmq" class="topiclink">Prepare RabbitMQ cluster</a>.</li><li value="4" class="p_Normal"><a href="configure-rabbitmq.html#setting-rabbitmq" class="topiclink">Configure RabbitMQ</a>.</li><li value="5" class="p_Normal"><a href="configure-rabbitmq.html#config-haproxy" class="topiclink">Configure HAproxy rabbitmq block)</a>.</li><li value="6" class="p_Normal"><a href="configure-rabbitmq.html#connect-to-rabbitmq" class="topiclink">Connect to RabbitMQ</a>.</li></ol>
<h2 class="p_Heading2"><a id="preparation-node" class="hmanchor"></a><span class="f_Heading2">Step 1: Prepare nodes (servers)</span></h2>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">начало&nbsp;внимание</span></p>
<p class="p_Normal">Минимальное количество серверов для организации кластера — три.</p>
<p class="p_Normal">The minimum number of servers to organize a cluster is three.</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">конец&nbsp;внимание</span></p>
<ol style="list-style-type:upper-roman">
<li value="1" class="p_Normal">Создайте три ноды (сервера) с последовательно пронумерованными именами хостов:</li></ol>
<li value="1" class="p_Normal">Create three nodes (servers) with sequentially numbered host names:</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>
<li value="2" class="p_Normal">Create the necessary host name mappings in DNS. If this is not possible, add the required entries to<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">Step 2: Install RabbitMQ</span></h2>
<ol style="list-style-type:upper-roman">
<li value="1" class="p_Normal">Установите необходимые пакеты:</li></ol>
<li value="1" class="p_Normal">Install the necessary packages:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;apt-get&nbsp;install&nbsp;curl&nbsp;gnupg&nbsp;apt-transport-https&nbsp;-y</span></p>
<ol style="list-style-type:upper-roman" start="2">
<li value="2" class="p_Normal">Импортируйте все необходимые ключи:</li></ol>
<li value="2" class="p_Normal">Import all necessary keys:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">curl&nbsp;-1sLf&nbsp;&quot;https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA&quot;&nbsp;|&nbsp;sudo&nbsp;gpg&nbsp;--dearmor&nbsp;|&nbsp;sudo&nbsp;tee&nbsp;/usr/share/keyrings/com.rabbitmq.team.gpg&nbsp;&gt;&nbsp;/dev/</span><span class="f_CodeExample" style="font-weight: bold;">null</span><br />
<span class="f_CodeExample">curl&nbsp;-1sLf&nbsp;https://ppa1.novemberain.com/gpg.E495BB49CC4BBE5B.key&nbsp;|&nbsp;sudo&nbsp;gpg&nbsp;--dearmor&nbsp;|&nbsp;sudo&nbsp;tee&nbsp;/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg&nbsp;&gt;&nbsp;/dev/null</span><br />
<span class="f_CodeExample">curl&nbsp;-1sLf&nbsp;https://ppa1.novemberain.com/gpg.9F4587F226208342.key&nbsp;|&nbsp;sudo&nbsp;gpg&nbsp;--dearmor&nbsp;|&nbsp;sudo&nbsp;tee&nbsp;/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg&nbsp;&gt;&nbsp;/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 &lt;&lt;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 />
<li value="3" class="p_Normal">Add <span style="font-weight: bold;">RabbitMQ</span> repositories:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;tee&nbsp;/etc/apt/sources.list.d/rabbitmq.list&nbsp;&lt;&lt;EOF</span><br />
<span class="f_CodeExample">deb&nbsp;[signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg]&nbsp;https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu&nbsp;$(lsb_release&nbsp;-cs)&nbsp;main</span><br />
<span class="f_CodeExample">deb-src&nbsp;[signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg]&nbsp;https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu&nbsp;$(lsb_release&nbsp;-cs)&nbsp;main</span><br />
<span class="f_CodeExample">&nbsp;</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">deb&nbsp;[signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg]&nbsp;https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu&nbsp;$(lsb_release&nbsp;-cs)&nbsp;main</span><br />
<span class="f_CodeExample">deb-src&nbsp;[signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg]&nbsp;https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu&nbsp;$(lsb_release&nbsp;-cs)&nbsp;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>
<li value="4" class="p_Normal">Update the package cache:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;apt-get&nbsp;update&nbsp;-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>
<li value="5" class="p_Normal">Install <span style="font-weight: bold;">Erlang</span> packages:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;apt-get&nbsp;install&nbsp;-y&nbsp;erlang-base=1:25.3.2.2-1&nbsp;erlang-asn1=1:25.3.2.2-1&nbsp;erlang-crypto=1:25.3.2.2-1&nbsp;erlang-eldap=1:25.3.2.2-1&nbsp;erlang-ftp=1:25.3.2.2-1&nbsp;erlang-inets=1:25.3.2.2-1&nbsp;erlang-mnesia=1:25.3.2.2-1&nbsp;erlang-os-mon=1:25.3.2.2-1&nbsp;erlang-parsetools=1:25.3.2.2-1&nbsp;erlang-</span><span class="f_CodeExample" style="font-weight: bold;">public</span><span class="f_CodeExample">-key=1:25.3.2.2-1&nbsp;erlang-runtime-tools=1:25.3.2.2-1&nbsp;erlang-snmp=1:25.3.2.2-1&nbsp;erlang-ssl=1:25.3.2.2-1&nbsp;erlang-syntax-tools=1:25.3.2.2-1&nbsp;erlang-tftp=1:25.3.2.2-1&nbsp;erlang-tools=1:25.3.2.2-1&nbsp;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>
<li value="6" class="p_Normal">Install <span style="font-weight: bold;">rabbitmq-server</span> and its dependencies:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;apt-get&nbsp;install&nbsp;rabbitmq-server=3.12.0-1&nbsp;-y&nbsp;--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>
<li value="7" class="p_Normal">Start <span style="font-weight: bold;">rabbitmq-server</span>:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;systemctl&nbsp;enable&nbsp;--now&nbsp;rabbitmq-server</span></p>
<h2 class="p_Heading2"><a id="preparation-cluster-rabbitmq" class="hmanchor"></a><span class="f_Heading2">Шаг 3. Подготовка кластера RabbitMQ</span></h2>
<h2 class="p_Heading2"><a id="preparation-cluster-rabbitmq" class="hmanchor"></a><span class="f_Heading2">Step 3: Prepare RabbitMQ cluster</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>
<li value="1" class="p_Normal">On each <span style="font-weight: bold;">rabbitmq</span> node, create the file <code><b>/etc/rabbitmq/rabbitmq-env.conf</b></code> and add the environment variables <code><b>RABBITMQ_NODENAME</b></code> and <code><b>RABBITMQ_USE_LONGNAME</b></code>.</li></ol>
<p class="p_Normal">Example content for <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_Normal">Example content for<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_Normal">Example content for <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>
<li value="2" class="p_Normal">Copy Cookie <span style="font-weight: bold;">/var/lib/rabbitmq/.erlang.cookie</span> from the first node<span style="font-weight: bold;"> rabbitmq-server1.your_domain</span> to all the other nodes in the cluster.</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">Начало&nbsp;внимание</span></p>
<p class="p_Normal">Для работы кластера RabbitMQ у всех узлов, участвующих в кластере, должно совпадать содержимое файла <span style="font-weight: bold;">/var/lib/rabbitmq/.erlang.cookie</span>.</p>
<p class="p_Normal">For the RabbitMQ cluster to work, all nodes participating in the cluster must have the same content in the <span style="font-weight: bold;">/var/lib/rabbitmq/.erlang.cookie </span>file.</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">Конец&nbsp;внимание</span></p>
<ol style="list-style-type:upper-roman" start="3">
<li value="3" class="p_Normal">Перезапустите сервис RabbitMQ на каждой ноде:</li></ol>
<li value="3" class="p_Normal">Restart the RabbitMQ service on each node:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;systemctl&nbsp;restart&nbsp;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>
<li value="4" class="p_Normal">Stop the application on nodes <span style="font-weight: bold;">rabbitmq-server2.your_domain</span> and <span style="font-weight: bold;">rabbitmq-server3.your_domain</span> for subsequent joining to the cluster:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;rabbitmqctl&nbsp;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>
<li value="5" class="p_Normal">Reset <span style="font-weight: bold;">rabbitmq</span> on nodes <span style="font-weight: bold;">rabbitmq-server2.your_domain</span> and <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&nbsp;rabbitmqctl&nbsp;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>
<li value="6" class="p_Normal">Join nodes <span style="font-weight: bold;">rabbitmq-server2.your_domain</span> and <span style="font-weight: bold;">rabbitmq-server3.your_domain</span> to the cluster:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;rabbitmqctl&nbsp;join_cluster&nbsp;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>
<li value="7" class="p_Normal">Start the application on nodes <span style="font-weight: bold;">rabbitmq-server2.your_domain</span> and <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&nbsp;rabbitmqctl&nbsp;start_app</span></p>
<ol style="list-style-type:upper-roman" start="8">
<li value="8" class="p_Normal">Проверьте статус кластера:</li></ol>
<li value="8" class="p_Normal">Check the cluster status:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;rabbitmqctl&nbsp;cluster_status</span></p>
<h2 class="p_Heading2"><a id="setting-rabbitmq" class="hmanchor"></a><span class="f_Heading2">Шаг 4. Настройка RabbitMQ</span></h2>
<h2 class="p_Heading2"><a id="setting-rabbitmq" class="hmanchor"></a><span class="f_Heading2">Step 4: Configure RabbitMQ</span></h2>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">начало&nbsp;примечание</span></p>
<p class="p_Normal"><span style="font-weight: bold;">Примечание</span></p>
<p class="p_Normal">Для пароля разрешается применять следующие символы:</p>
<p class="p_Normal"><span style="font-weight: bold;">Note</span></p>
<p class="p_Normal">For the password, the following characters are allowed:</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">Символы: &nbsp;-_.</li></ul>
<p class="p_Normal">Зарезервированные (недопустимые) символы:</p>
<li class="p_Normal">Uppercase Latin letters: A to Z</li><li class="p_Normal">Lowercase Latin letters: a to z</li><li class="p_Normal">Digits: 0 to 9</li><li class="p_Normal">Symbols: -_</li></ul>
<p class="p_Normal">Reserved (invalid) symbols:</p>
<p class="p_Normal">! * ' ( ) ; : @ &amp; = + $ , / ? % # [ ]</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">конец&nbsp;примечание</span></p>
<ol style="list-style-type:upper-roman">
<li value="1" class="p_Normal">На каждом узле включите необходимые плагины: </li></ol>
<li value="1" class="p_Normal">On each node, enable the necessary plugins: </li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;rabbitmq-plugins&nbsp;enable&nbsp;\</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>
<li value="2" class="p_Normal">Create <span style="font-weight: bold;">vhost</span> nd give the user access to it, executing commands on the first node <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&nbsp;rabbitmqctl&nbsp;add_vhost&nbsp;elma365vhost</span><br />
<span class="f_CodeExample">sudo&nbsp;rabbitmqctl&nbsp;add_user&nbsp;elma365user&nbsp;SecretPassword</span><br />
<span class="f_CodeExample">sudo&nbsp;rabbitmqctl&nbsp;set_permissions&nbsp;-p&nbsp;elma365vhost&nbsp;elma365user&nbsp;&quot;.*&quot;&nbsp;&quot;.*&quot;&nbsp;&quot;.*&quot;</span><br />
<span class="f_CodeExample">sudo&nbsp;rabbitmqctl&nbsp;set_user_tags&nbsp;elma365user&nbsp;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>
<li value="3" class="p_Normal">Create a policy that allows mirroring queues for all nodes in the cluster, executing the command on the first node <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&nbsp;rabbitmqctl&nbsp;set_policy&nbsp;-p&nbsp;'elma365vhost'&nbsp;MirrorAllQueues&nbsp;&quot;.*&quot;&nbsp;'{&quot;ha-mode&quot;:&quot;all&quot;}'</span></p>
<p class="p_Normal">Если отсутствует поддержка политики High Availability Mode, используйте политику Quorum:</p>
<p class="p_Normal">If the High Availability Mode policy is not supported, use the Quorum policy:</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">rabbitmqctl&nbsp;set_policy&nbsp;p&nbsp;'elma365vhost'&nbsp;QuorumDefault&nbsp;“^.*”&nbsp;{“queue-type”:“quorum”}&nbsp;--priority&nbsp;0&nbsp;--apply-to&nbsp;queues</span></p>
<p class="p_Normal">Чтобы посмотреть настроенные политики, используйте команду:</p>
<p class="p_Normal">To &nbsp;view the configured policies, use the command:</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;rabbitmqctl&nbsp;list_policies&nbsp;--vhost&nbsp;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;">
<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')">Enabling TLS/SSL in RabbitMQ</a></p>
<div id="TOGGLE0186A1" class="dropdown-toggle-body" style="text-align: left; text-indent: 0; line-height: 1.80; 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>
<td style="vertical-align:top; padding:0; border:none"><p class="p_Normal">To enable TLS/SSL support in RabbitMQ, you need to edit the configuration file <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>
<li value="1" class="p_Normal">Add SSL configuration to the<span style="font-weight: bold;"> rabbit</span> (port 5671) and <span style="font-weight: bold;">management</span> (port 15671) blocks.</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>
<li value="2" class="p_Normal">In the <span style="font-weight: bold;">ssl_options.certfile and management.ssl.certfile</span> parameters, specify the path to the server certificate file.</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>
<li value="3" class="p_Normal">In the <span style="font-weight: bold;">ssl_options.keyfile </span>и<span style="font-weight: bold;"> management.ssl.keyfile</span> parameters, specify the path to the private key file.</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>
<li value="4" class="p_Normal">In the <span style="font-weight: bold;">ssl_options.cacertfile </span>и<span style="font-weight: bold;"> management.ssl.cacertfile</span> parameters, specify the path to the root CA file.</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">listeners.tcp&nbsp;=&nbsp;none</span><br />
<span class="f_CodeExample">listeners.ssl.</span><span class="f_CodeExample" style="font-weight: bold;">default</span><span class="f_CodeExample">&nbsp;=&nbsp;5671</span><br />
<span class="f_CodeExample">ssl_options.cacertfile&nbsp;=&nbsp;/path/to/ca_certificate.pem</span><br />
@ -243,21 +239,21 @@
<span class="f_CodeExample">management.ssl.certfile&nbsp;=&nbsp;/path/to/server_certificate.pem</span><br />
<span class="f_CodeExample">management.ssl.keyfile&nbsp;=&nbsp;/path/to/server_key.pem</span></p>
<ol style="list-style-type:decimal" start="5">
<li value="5" class="p_Normal">Перезапустить сервис RabbitMQ:</li></ol>
<li value="5" class="p_Normal">Restart the RabbitMQ service:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;systemctl&nbsp;restart&nbsp;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 />
<p class="p_Normal">For more details on configuring TLS/SSL in RabbitMQ, refer to the<a href="https://www.rabbitmq.com/ssl.html" target="_blank" class="weblink"> official RabbitMQ documentation</a>.<br />
&nbsp;<br />
Для включения TLS/SSL между нодами RabbitMQ «Securing Cluster (Inter-node)» необходимо:</p>
For enabling TLS/SSL between RabbitMQ nodes &quot;Securing Cluster (Inter-node),&quot; you need to:</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>
<li value="1" class="p_Normal">Combine the public and private keys of the node into one file, for example, in<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&nbsp;server_certificate.pem&nbsp;server_key.pem&nbsp;&gt;&nbsp;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>
<li value="2" class="p_CodeExample" style="white-space: normal; page-break-inside: auto;">Extract the path to the Erlang TLS library and export it to the environment variable <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&nbsp;-noinput&nbsp;-eval&nbsp;'io:format(&quot;ERL_SSL_PATH=~s~n&quot;,&nbsp;[filename:dirname(code:which(inet_tls_dist))])'&nbsp;-s&nbsp;init&nbsp;stop&nbsp;&gt;&nbsp;/tmp/ssl-path.txt</span><br />
<span class="f_CodeExample">cat&nbsp;/tmp/ssl-path.txt&nbsp;/etc/rabbitmq/rabbitmq-env.conf&nbsp;&gt;&nbsp;/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&nbsp;-f&nbsp;/tmp/</span><span class="f_CodeExample" style="font-weight: bold;">new</span><span class="f_CodeExample">-rabbitmq-env.conf&nbsp;/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>
<li value="3" class="p_CodeExample" style="white-space: normal; page-break-inside: auto;">In the <code><b>/etc/rabbitmq/rabbitmq-env.conf</b></code> file, add parameters for the environment variables <code><b>SERVER_ADDITIONAL_ERL_ARGS</b></code> and <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=&quot;-pa&nbsp;$ERL_SSL_PATH&nbsp;\</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;-proto_dist&nbsp;inet_tls&nbsp;\</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;-ssl_dist_opt&nbsp;server_certfile&nbsp;/path/to/combined_keys.pem&nbsp;\</span><br />
@ -267,19 +263,19 @@
<span class="f_CodeExample">&nbsp;&nbsp;-ssl_dist_opt&nbsp;server_certfile&nbsp;/path/to/combined_keys.pem&nbsp;\</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;-ssl_dist_opt&nbsp;server_secure_renegotiate&nbsp;true&nbsp;client_secure_renegotiate&nbsp;true&quot;</span></p>
<ol style="list-style-type:decimal" start="4">
<li value="4" class="p_Normal"> Перезапустить сервис RabbitMQ на каждой ноде:</li></ol>
<li value="4" class="p_Normal"> Restart the RabbitMQ service on each node:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;systemctl&nbsp;restart&nbsp;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>
<p class="p_Normal">For more details on configuring TLS/SSL between RabbitMQ nodes, refer to the <a href="https://www.rabbitmq.com/clustering-ssl.html" target="_blank" class="weblink">official RabbitMQ documentation</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>
<h2 class="p_Heading2"><a id="config-haproxy" class="hmanchor"></a><span class="f_Heading2">Step 5: Configure HAProxy (rabbitmq block)</span></h2>
<p class="p_Normal">Load balancing between RabbitMQ cluster nodes will be performed using HAProxy. Configure it according to <a href="haproxy-rabbitmq.html" class="topiclink">Configure HAProxy for RabbitMQ</a>.</p>
<h2 class="p_Heading2"><a id="connect-to-rabbitmq" class="hmanchor"></a><span class="f_Heading2">Step 6: Connect to RabbitMQ</span></h2>
<p class="p_Normal">Connection string to connect to the RabbitMQ cluster (via 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_Normal">Connection string to connect to the RabbitMQ cluster with TLS/SSL (via HAProxy with 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">
@ -297,7 +293,7 @@
</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>
<div class="feedback" id="feedback"><div class="feedback-help"><span><b>Was this helpful?</b></span><form action="" method="POST" class="feedback-form" id="feedback-form"><div class="feedback__popup feedback__popup-response" id="feedback__popup_thx" style="display: none;">Thanks for your feedback!</div><div class="feedback__popup" id="feedback__popup_why" style="display: none;"><div class="feedback__popup-header">Please specify why:</div><input type="radio" name="category" id="bad_recommendation" value="bad_recommendation"><label for="bad_recommendation">Recommendations did not help me</label><input type="radio" name="category" id="difficult_text" value="difficult_text"><label for="difficult_text">Article is hard to understand</label><input type="radio" name="category" id="no_answer" value="no_answer"><label for="no_answer">Didn`t answer my question</label><input type="radio" name="category" id="bad_header" value="bad_header"><label for="bad_header">Content does not match the topic</label><input type="radio" name="category" id="other_reason" value="other_reason"><label for="other_reason">Other</label></div><div class="feedback__popup" id="feedback__popup-other" style="display: none;"><div class="feedback__popup-header">How we can improve it?</div><textarea class="feedback__textarea" name="other" id=""></textarea><input type="submit" class="feedback__other-btn" value="Submit"></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" class="small-img" alt="like"><spanclass="feedback-form__btn-group_yes-btn">Yes</spanclass="feedback-form__btn-group_yes-btn"></label><input type="radio" name="useful" id="feedback__useful_no" value="false"><label for="feedback__useful_no"><img src="dislike.svg" class="small-img" alt="dislike"><spanclass="feedback-form__btn-group_no-btn">No</spanclass="feedback-form__btn-group_no-btn"></label></div><select name="category"><option disabled="">Please specify why</option><option value="bad_recommendation" selected="">Recommendations did not help me</option><option value="difficult_text">Article is hard to understand</option><option value="no_answer">Didn`t answer my question</option><option value="bad_header">Content does not match the topic</option><option value="other_reason">Other</option></select><input type="submit"></form></div><div class="found_typo"><p style="margin: 0px; margin-top: 16px !important;"><span><b>Found a typo?</b></span> Select it and press <i>Ctrl+Enter</i> to send us feedback</p></div></div>
</section>
</div>
@ -305,7 +301,7 @@
<input type="checkbox" />
<div class="article__arrow"></div>
<div class="table-of-contents elma365-right" id="toc2Content">
<h3 class="h3-toc">В этой статье</h3>
<h3 class="h3-toc">In this topic</h3>
<nav id="toc2"></nav>
</div>
</aside>
@ -316,63 +312,30 @@
<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>
<ul class="footer-mobile__list"><li><a href="https://brix365.com/en/" target="_blank">BRIX</a></li><li><a href="https://tssdk.brix365.com/en/latest/" target="_blank">SDK</a></li><li><a href="https://api.brix365.com/en/" target="_blank">API</a></li></ul><ul class="footer-mobile__list"><li><a href="https://brix365.com/en/help/platform/get-trial.html">Platform</a></li><li><a href="https://brix365.com/en/help/ecm/ecm-functions.html">ECM</a></li><li><a href="https://brix365.com/en/help/service/service-functions.html">Service</a></li><li><a href="https://brix365.com/en/help/projects/projects-functions.html">Projects</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">&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">&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 class="footer-wrap">
<div><span class="mobile-question-popup">Send feedback</span><form method="POST" action class="question__popup question-xs" id="question__popup"><div class="question-wrap"><span class="close"></span><span class="title">Ask a question</span><label for="help_question" style="display: none;"></label><textarea name="help_question" id="help_question"></textarea><input type="submit" value="Send"></div></form><div class="hidden fade-in question-success-xs">Sent</div></div>
<div class="footer-flex-b">
<span class="footer-copy">&copy; 2025 BRIX</span>
<ul class="footer-list">
<li class="footer-item">
<a href="#" class="arrow-top" style="display: block;"></a>
</li>
</ul>
</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="./jquery-ui.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>