update
All checks were successful
Deploy Static Site / deploy (push) Successful in 6m6s

This commit is contained in:
2025-05-29 16:42:45 +04:00
parent e217f89702
commit 00717a92fb
2681 changed files with 173810 additions and 0 deletions

View File

@ -0,0 +1,378 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>High availability HAProxy</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="HAProxy is a high availability and load balancing tool. In the BRIX system architecture, HAProxy is utilized to construct a fault-tolerant design when organizing a..." />
<meta name="picture" content="" />
<meta property="og:type" content="website" />
<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" />
<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>!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://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(83180416,'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://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>
</div>
</header>
<main class="main container">
<aside class="sidebar" id="sidebar">
<div class="sidebar__header">
<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>
<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">BRIX On-Premises</a> &gt; <a href="infrastructure-preparation.html">Prepare infrastructure</a> &gt; Load balancer / High availability HAProxy</p>
</div>
</div>
<div class="topic__title"><h1 class="p_Heading1"><span class="f_Heading1">High availability HAProxy</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">HAProxy is a high availability and load balancing tool. In the BRIX system architecture, HAProxy is utilized to construct a fault-tolerant design when organizing a high-availability BRIX cluster. Depending on the architecture being set up, the necessary HAProxy configuration is chosen. This article outlines the installation of HAProxy and keepalived for Ubuntu Linux 20.04 and 22.04.</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="fail-safe-haproxy.html#prepare-nodes" class="topiclink">Prepare nodes (servers)</a>.</li><li value="2" class="p_Normal"><a href="fail-safe-haproxy.html#install-haproxy" class="topiclink">Install HAProxy</a>.</li><li value="3" class="p_Normal"><a href="fail-safe-haproxy.html#install-keepalived" class="topiclink">Install keepalived</a>.</li><li value="4" class="p_Normal"><a href="fail-safe-haproxy.html#set-up-keepalived" class="topiclink">Configure keepalived</a>.</li><li value="5" class="p_Normal"><a href="fail-safe-haproxy.html#set-up-haproxy-configuration" class="topiclink">Basic HAProxy configuration</a>.</li><li value="6" class="p_Normal"><a href="fail-safe-haproxy.html#add-configurations" class="topiclink">Add configurations for BRIX components balancing</a>.</li></ol>
<h2 class="p_Heading2"><a id="prepare-nodes" class="hmanchor"></a><span class="f_Heading2">Step 1: Prepare nodes (servers)</span></h2>
<ol style="list-style-type:upper-roman">
<li value="1" class="p_Normal">Create two nodes (servers) with sequentially numbered host name:</li></ol>
<ul style="list-style-type:disc">
<li class="p_Normal"><span style="font-weight: bold;">haproxy-server1.your_domain</span>, <span style="font-weight: bold;">192.168.1.1</span>;</li></ul>
<ul style="list-style-type:disc">
<li class="p_Normal"><span style="font-weight: bold;">haproxy-server2.your_domain</span>, <span style="font-weight: bold;">192.168.1.2</span>.</li></ul>
<ol style="list-style-type:upper-roman" start="2">
<li value="2" class="p_Normal">Create mappings for host names in the DNS server and add the corresponding A-record for the virtual IP.</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">haproxy-server.your_domain&nbsp;&lt;-&gt;&nbsp;192.168.1.13.</span></p>
<p class="p_Normal">If not possible, add the necessary records in <code><b>/etc/hosts</b></code>.</p>
<ol style="list-style-type:upper-roman" start="3">
<li value="3" class="p_Normal">Enable <code><b>net.ipv4.ip_nonlocal_bind, net.ipv4.ip_forward</b></code> kernel parameters by executing the following commands:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;echo&nbsp;net.ipv4.ip_nonlocal_bind=1&nbsp;&gt;&gt;&nbsp;/etc/sysctl.conf</span><br />
<span class="f_CodeExample">sudo&nbsp;echo&nbsp;net.ipv4.ip_forward=1&nbsp;&gt;&gt;&nbsp;/etc/sysctl.conf</span><br />
<span class="f_CodeExample">sudo&nbsp;sysctl&nbsp;-p</span></p>
<h2 class="p_Heading2"><a id="install-haproxy" class="hmanchor"></a><span class="f_Heading2">Step 2: Install HAProxy</span></h2>
<ol style="list-style-type:upper-roman">
<li value="1" class="p_Normal">Install HAProxy on all nodes with the command:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;apt&nbsp;install&nbsp;haproxy&nbsp;-y</span></p>
<ol style="list-style-type:upper-roman" start="2">
<li value="2" class="p_Normal">Start the HAProxy service on all nodes and add it to autostart:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;systemctl&nbsp;enable&nbsp;--now&nbsp;haproxy</span></p>
<h2 class="p_Heading2"><a id="install-keepalived" class="hmanchor"></a><span class="f_Heading2">Step 3: Install keepalived</span></h2>
<p class="p_Normal">Install keepalived on all nodes:</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;apt&nbsp;update</span><br />
<span class="f_CodeExample">sudo&nbsp;apt&nbsp;install&nbsp;keepalived</span></p>
<h2 class="p_Heading2"><a id="set-up-keepalived" class="hmanchor"></a><span class="f_Heading2">Step 4: Configure keepalived</span></h2>
<ol style="list-style-type:upper-roman">
<li value="1" class="p_Normal">Create the keepalived directory:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;mkdir&nbsp;-p&nbsp;/usr/libexec/keepalived</span></p>
<ol style="list-style-type:upper-roman" start="2">
<li value="2" class="p_Normal">Create the <code><b>haproxy_check.sh</b></code> script file for monitoring the HAProxy health:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;nano&nbsp;/usr/libexec/keepalived/haproxy_check.sh</span></p>
<ol style="list-style-type:upper-roman" start="3">
<li value="3" class="p_Normal">Add the health check script to the <code><b>haproxy_check.sh</b></code> file:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">#!/bin/bash</span><br />
<span class="f_CodeExample">/bin/kill&nbsp;-0&nbsp;$(cat&nbsp;/</span><span class="f_CodeExample" style="font-weight: bold;">var</span><span class="f_CodeExample">/run/haproxy.pid)</span></p>
<ol style="list-style-type:upper-roman" start="4">
<li value="4" class="p_Normal">Create the keepalived configuration file on each node:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;nano&nbsp;/etc/keepalived/keepalived.conf</span></p>
<ol style="list-style-type:upper-roman" start="5">
<li value="5" class="p_Normal">Add an example keepalived configuration for the <span style="font-weight: bold;">haproxy-server1.your_domain</span> node to the keepalived.conf file <code><b>keepalived.conf</b></code>:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">global_defs&nbsp;{</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;router_id&nbsp;haproxy-server1</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;enable_script_security</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;script_user&nbsp;root</span><br />
<span class="f_CodeExample">}</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">vrrp_script&nbsp;haproxy_check&nbsp;{</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;script&nbsp;&quot;/usr/libexec/keepalived/haproxy_check.sh&quot;</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;interval&nbsp;2</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;weight&nbsp;2</span><br />
<span class="f_CodeExample">}</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">vrrp_instance&nbsp;VI_1&nbsp;{</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;</span><span class="f_CodeExample" style="font-weight: bold;">interface</span><span class="f_CodeExample">&nbsp;eth0</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;virtual_router_id&nbsp;101</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;priority&nbsp;100</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;advert_int&nbsp;2</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;state&nbsp;MASTER</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;virtual_ipaddress&nbsp;{</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;192.168.1.13</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;}</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;track_script&nbsp;{</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;haproxy_check</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;}</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;authentication&nbsp;{</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;auth_type&nbsp;PASS</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;auth_pass&nbsp;SecretPassword</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;}</span><br />
<span class="f_CodeExample">}</span></p>
<ol style="list-style-type:upper-roman" start="6">
<li value="6" class="p_Normal">Add an example keepalived configuration for the <span style="font-weight: bold;">haproxy-server2.your_domain</span> node to the keepalived.conf file <code><b>keepalived.conf</b></code>:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">global_defs&nbsp;{</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;router_id&nbsp;haproxy-server2</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;enable_script_security</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;script_user&nbsp;root</span><br />
<span class="f_CodeExample">}</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">vrrp_script&nbsp;haproxy_check&nbsp;{</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;script&nbsp;&quot;/usr/libexec/keepalived/haproxy_check.sh&quot;</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;interval&nbsp;2</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;weight&nbsp;2</span><br />
<span class="f_CodeExample">}</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">vrrp_instance&nbsp;VI_1&nbsp;{</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;</span><span class="f_CodeExample" style="font-weight: bold;">interface</span><span class="f_CodeExample">&nbsp;eth0</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;virtual_router_id&nbsp;101</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;priority&nbsp;90</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;advert_int&nbsp;2</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;state&nbsp;BACKUP</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;virtual_ipaddress&nbsp;{</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;192.168.1.13</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;}</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;track_script&nbsp;{</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;haproxy_check</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;}</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;authentication&nbsp;{</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;auth_type&nbsp;PASS</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;auth_pass&nbsp;SecretPassword</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;}</span><br />
<span class="f_CodeExample">}</span></p>
<p class="p_Normal">Where:</p>
<ul style="list-style-type:disc">
<li class="p_Normal"><code><b>router_id</b></code> is the router ID, a unique value on each node;</li><li class="p_Normal"><code><b>script_user</b></code> is the user running VRRP scripts;</li><li class="p_Normal"><code><b>interface</b></code> is the interface name to which keepalived will be attached;</li><li class="p_Normal"><code><b>virtual_router_id</b></code> is the virtual router ID, a shared value on all nodes;</li><li class="p_Normal"><code><b>priority</b></code> is the priority of nodes within the virtual route;</li><li class="p_Normal"><code><b>state</b></code> is the node role type in the virtual router;</li><li class="p_Normal"><code><b>virtual_ipaddress</b></code> is the virtual IP;</li><li class="p_Normal"><code><b>auth_type</b></code> is the authentication type in the virtual router;</li><li class="p_Normal"><code><b>auth_pass</b></code> is the password.</li></ul>
<ol style="list-style-type:upper-roman" start="7">
<li value="7" class="p_Normal">Restart keepalived on all nodes:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;systemctl&nbsp;restart&nbsp;keepalived</span></p>
<h2 class="p_Heading2"><a id="set-up-haproxy-configuration" class="hmanchor"></a><span class="f_Heading2">Step 5: Basic HAProxy configuration</span></h2>
<ol style="list-style-type:upper-roman">
<li value="1" class="p_Normal">Move the default configuration file:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;mv&nbsp;/etc/haproxy/haproxy.cfg{,.original}</span></p>
<ol style="list-style-type:upper-roman" start="2">
<li value="2" class="p_Normal">Create and open a new configuration file for editing:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;nano&nbsp;/etc/haproxy/haproxy.cfg</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')">Example of basic HAProxy configuration for the haproxy.cfg file</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">Basic configuration section describes the parameters of the HAProxy server operation: operating mode, timeouts, connection count, enabling the web interface, etc.</p>
<p class="p_Normal">The example provides the necessary configuration for the HAProxy server operation. For more details on the used parameters, refer to the official <a href="http://docs.haproxy.org/" class="weblink">HAProxy Documentation</a>.</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">global</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;maxconn&nbsp;100000</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;log&nbsp;/dev/log&nbsp;local0</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;log&nbsp;/dev/log&nbsp;local1&nbsp;notice</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;chroot&nbsp;/</span><span class="f_CodeExample" style="font-weight: bold;">var</span><span class="f_CodeExample">/lib/haproxy</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;stats&nbsp;socket&nbsp;/run/haproxy/admin.sock&nbsp;mode&nbsp;660&nbsp;level&nbsp;admin&nbsp;expose-fd&nbsp;listeners</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;stats&nbsp;timeout&nbsp;30s</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;user&nbsp;haproxy</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;group&nbsp;haproxy</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;daemon</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">defaults</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;mode&nbsp;tcp</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;log&nbsp;global</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;retries&nbsp;2</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;timeout&nbsp;queue&nbsp;5s</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;timeout&nbsp;connect&nbsp;5s</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;timeout&nbsp;client&nbsp;60m</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;timeout&nbsp;server&nbsp;60m</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;timeout&nbsp;check&nbsp;15s</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">listen&nbsp;stats</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;mode&nbsp;http</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;bind&nbsp;haproxy-server.your_domain:7000</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;stats&nbsp;enable</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;stats&nbsp;uri&nbsp;/</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">###&nbsp;Web&nbsp;ELMA365&nbsp;###</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">###&nbsp;Web&nbsp;ELMA365&nbsp;###</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">###&nbsp;PostgreSQL&nbsp;###</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">###&nbsp;PostgreSQL&nbsp;###</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">###&nbsp;RabbitMQ&nbsp;###</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">###&nbsp;RabbitMQ&nbsp;###</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">###&nbsp;S3&nbsp;MinIO&nbsp;###</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">###&nbsp;S3&nbsp;MinIO&nbsp;###</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">###&nbsp;Docs&nbsp;Server&nbsp;###</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">###&nbsp;Docs&nbsp;Server&nbsp;###</span></p>
</td>
</tr>
</table>
</div>
<ol style="list-style-type:upper-roman" start="3">
<li value="3" class="p_Normal">Restart HAProxy:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;systemctl&nbsp;restart&nbsp;haproxy</span></p>
<h2 class="p_Heading2"><a id="add-configurations" class="hmanchor"></a><span class="f_Heading2">Step 6: Add configurations for BRIX components balancing</span></h2>
<p class="p_Normal">BRIX component configurations are added to the <code><b>haproxy.cfg</b></code> file as needed. </p>
<p class="p_Normal">Depending on the architecture being set up, add configurations:</p>
<ul style="list-style-type:disc">
<li class="p_Normal"><a href="haproxy-postgresql.html" class="topiclink">HAProxy for PostgreSQL</a>.</li><li class="p_Normal"><a href="haproxy-rabbitmq.html" class="topiclink">HAProxy for RabbitMQ</a>.</li><li class="p_Normal"><a href="haproxy-redis.html" class="topiclink">HAProxy for Redis Sentinel</a>.</li><li class="p_Normal"><a href="haproxy-s3-minio.html" class="topiclink">HAProxy for S3 Minio</a>.</li><li class="p_Normal"><a href="haproxy-web-elma365.html" class="topiclink">HAProxy for BRIX web</a>.</li><li class="p_Normal"><a href="haproxy-docs-server.html" class="topiclink">HAProxy for document server</a>.</li></ul>
<div class="bottom-nav">
<a id="prev-link" class="topic__navi_prev" href="haproxy-load-balance.html">
<span class="bottom-nav__arrow bottom-nav__arrow--prev"></span> <span
class="bottom-nav__link">haproxy-load-balance.html</span>
</a>
<a id="next-link" class="topic__navi_next" href="haproxy-postgresql.html">
<span class="bottom-nav__link">haproxy-postgresql.html</span> <span
class="bottom-nav__arrow bottom-nav__arrow--next"></span>
</a>
</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>
<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">In this topic</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://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="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>
</div>
</footer>
<iframe name="hmnavigation" style="display:none!important"></iframe>
<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>
<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>