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,259 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Install HAProxy&nbsp;</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 tool for ensuring high availability and load balancing. In the BRIX system, HAProxy is employed to build a resilient architecture for organizing a highly available..." />
<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 / Install HAProxy&nbsp;</p>
</div>
</div>
<div class="topic__title"><h1 class="p_Heading1"><span class="f_Heading1">Install 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 tool for ensuring high availability and load balancing. In the BRIX system, HAProxy is employed to build a resilient architecture for organizing a highly available BRIX cluster. The necessary HAProxy configuration is chosen based on the architecture being established. This article divides the HAProxy configuration into a basic setup (the HAProxy service config) and configurations for balancing BRIX components, which can be added to the HAProxy config alongside the basic section.</p>
<p class="p_Normal">The installation consists of 3 steps:</p>
<ol style="list-style-type:decimal">
<li value="1" class="p_Normal"><a href="haproxy-load-balance.html#install-haproxy" class="topiclink">Install HAProxy</a>.</li><li value="2" class="p_Normal"><a href="haproxy-load-balance.html#set-up-haproxy-configuration" class="topiclink">Configure basic HAProxy settings</a>.</li><li value="3" class="p_Normal"><a href="haproxy-load-balance.html#add-configurations" class="topiclink">Add configurations for balancing BRIX components</a>.</li></ol>
<h2 class="p_Heading2"><a id="install-haproxy" class="hmanchor"></a><span class="f_Heading2">Step 1: Install HAProxy</span></h2>
<ol style="list-style-type:upper-roman">
<li value="1" class="p_Normal">Install HAProxy using the following 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 and enable it at boot:</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="set-up-haproxy-configuration" class="hmanchor"></a><span class="f_Heading2">Step 2: Configure basic HAProxy settings</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">The basic section of the configuration file describes the parameters of the HAProxy server, such as the operating mode, timeouts, connection counts, enabling the web interface, and more. The provided example includes the necessary configuration for the HAProxy server to function. For more details about the parameters used, refer to the <a href="http://docs.haproxy.org/" class="weblink">official HAProxy documentation</a>.</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 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_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">global</span><br />
<span class="f_CodeExample" style="color: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="f_CodeExample">maxconn&nbsp;100000</span><br />
<span class="f_CodeExample" style="color: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="f_CodeExample">log&nbsp;/dev/log&nbsp;local0</span><br />
<span class="f_CodeExample" style="color: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="f_CodeExample">log&nbsp;/dev/log&nbsp;local1</span><span class="f_CodeExample" style="color: #ffffff;">&nbsp;</span><span class="f_CodeExample">notice</span><br />
<span class="f_CodeExample" style="color: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="f_CodeExample">chroot&nbsp;/var/lib/haproxy</span><br />
<span class="f_CodeExample" style="color: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="f_CodeExample">stats&nbsp;socket&nbsp;/run/haproxy/admin.sock</span><span class="f_CodeExample" style="color: #ffffff;">&nbsp;</span><span class="f_CodeExample">mode&nbsp;660&nbsp;level&nbsp;admin&nbsp;expose-fd&nbsp;listeners</span><br />
<span class="f_CodeExample" style="color: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="f_CodeExample">stats&nbsp;timeout&nbsp;30s</span><br />
<span class="f_CodeExample" style="color: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="f_CodeExample">user&nbsp;haproxy</span><br />
<span class="f_CodeExample" style="color: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="f_CodeExample">group&nbsp;haproxy</span><br />
<span class="f_CodeExample" style="color: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="f_CodeExample">daemon</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">defaults</span><br />
<span class="f_CodeExample" style="color: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="f_CodeExample">mode&nbsp;tcp</span><br />
<span class="f_CodeExample" style="color: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="f_CodeExample">log&nbsp;global</span><br />
<span class="f_CodeExample" style="color: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="f_CodeExample">retries&nbsp;2</span><br />
<span class="f_CodeExample" style="color: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="f_CodeExample">timeout&nbsp;queue&nbsp;5s</span><br />
<span class="f_CodeExample" style="color: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="f_CodeExample">timeout&nbsp;connect&nbsp;5s</span><br />
<span class="f_CodeExample" style="color: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="f_CodeExample">timeout</span><span class="f_CodeExample" style="color: #ffffff;">&nbsp;</span><span class="f_CodeExample">client&nbsp;60m</span><br />
<span class="f_CodeExample" style="color: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="f_CodeExample">timeout&nbsp;server&nbsp;60m</span><br />
<span class="f_CodeExample" style="color: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="f_CodeExample">timeout&nbsp;check&nbsp;15s</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">listen&nbsp;stats</span><br />
<span class="f_CodeExample" style="color: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="f_CodeExample">mode&nbsp;http</span><br />
<span class="f_CodeExample" style="color: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="f_CodeExample">bind&nbsp;haproxy-server.your_domain:7000</span><br />
<span class="f_CodeExample" style="color: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="f_CodeExample">stats&nbsp;enable</span><br />
<span class="f_CodeExample" style="color: #ffffff;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="f_CodeExample">stats&nbsp;uri&nbsp;/</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">###&nbsp;Web&nbsp;BRIX&nbsp;###</span><br />
<span class="f_CodeExample">###&nbsp;Web&nbsp;BRIX&nbsp;###</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">###&nbsp;PostgreSQL&nbsp;###</span><br />
<span class="f_CodeExample">###&nbsp;PostgreSQL&nbsp;###</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">###&nbsp;Redis&nbsp;###</span><br />
<span class="f_CodeExample">###&nbsp;Redis&nbsp;###</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">###&nbsp;RabbitMQ&nbsp;###</span><br />
<span class="f_CodeExample">###&nbsp;RabbitMQ&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;S3&nbsp;MinIO&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;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 3: Add configurations for balancing BRIX components</span></h2>
<p class="p_Normal">Configurations for BRIX components are added to the <code><b>haproxy.cfg</b></code> file as needed. </p>
<p class="p_Normal">Depending on the architecture being built, you can add the following 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-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="upgrading-postgresql-container-10-to-15.html">
<span class="bottom-nav__arrow bottom-nav__arrow--prev"></span> <span
class="bottom-nav__link">upgrading-postgresql-container-10-to-15.html</span>
</a>
<a id="next-link" class="topic__navi_next" href="fail-safe-haproxy.html">
<span class="bottom-nav__link">fail-safe-haproxy.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>