Files
help365/platform/autoscaling-service-enterprise.html
2025-05-27 21:32:35 +04:00

247 lines
25 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<title>Enable service autoscaling in BRIX Enterprise</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="The distributed service architecture allows for more flexible scaling of the solution and running multiple instances of the application services. The exchange of information..." />
<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="elma365-enterprise.html">BRIX On-Premises Enterprise</a> &gt; Administering BRIX Enterprise / Enable service autoscaling in BRIX Enterprise</p>
</div>
</div>
<div class="topic__title"><h1 class="p_Heading1"><span class="f_Heading1">Enable service autoscaling in BRIX Enterprise</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">The distributed service architecture allows for more flexible scaling of the solution and running multiple instances of the application services. The exchange of information between services occurs through the gRPC protocol. The Linkerd add-on component performs balancing and encryption of gRPC traffic when scaling BRIX services. The HorizontalPodAutoscaler is used for auto-scaling the BRIX application services. You can also enable support for the additional auto-scaling tool KEDA, which is event-driven.</p>
<p class="p_Normal">The process of enabling auto-scaling for the BRIX application consists of five stages:</p>
<ol style="list-style-type:decimal">
<li value="1" class="p_Normal"><a href="autoscaling-service-enterprise.html#preparation-service-mesh" class="topiclink">Prepare Service Mesh</a>.</li><li value="2" class="p_Normal"><a href="autoscaling-service-enterprise.html#alteration-config-file" class="topiclink">Make changes to the configuration file</a>.</li><li value="3" class="p_Normal"><a href="autoscaling-service-enterprise.html#apply-autoscale-options" class="topiclink">Apply auto-scaling parameters for BRIX Enterprise</a>.</li><li value="4" class="p_Normal"><a href="autoscaling-service-enterprise.html#enable-load-sharing" class="topiclink">Enable load redistribution in the Kubernetes cluster (optional)</a>.</li><li value="5" class="p_Normal"><a href="autoscaling-service-enterprise.html#enabling-caching" class="topiclink">Enable caching of DNS queries in the Kubernetes cluster (optional)</a>.</li></ol>
<h2 class="p_Heading2"><a id="preparation-service-mesh" class="hmanchor"></a><span class="f_Heading2">Step 1: Prepare Service Mesh</span></h2>
<p class="p_Normal">Linkerd is used as the Service Mesh for BRIX. This component is necessary to ensure the network connectivity of the BRIX application. Without the installed Service Mesh Linkerd, microservice traffic balancing is unavailable. Read more about setting up and installing Service Mesh Linkerd in <a href="install-linkerd.html" class="topiclink">Install Linkerd</a>.</p>
<ol style="list-style-type:upper-roman">
<li value="1" class="p_Normal">In this article, the BRIX application is installed in <code><b>namespace: elma365</b></code>. Add an annotation to <code><b>namespace</b></code> with the BRIX application for automatic injection of Linkerd-proxy containers into the BRIX services using the command:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">kubectl&nbsp;annotate&nbsp;namespace&nbsp;elma365&nbsp;linkerd.io/inject=enabled</span></p>
<ol style="list-style-type:upper-roman" start="2">
<li value="2" class="p_Normal" style="line-height: 1.20;"><span style="font-size: 15px; font-family: 'Segoe UI',Tahoma,Verdana,Arial,sans-serif; color: #111111; background-color: #ffffff;">Restart all services of the BRIX application using the command:</span></li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">kubectl&nbsp;rollout&nbsp;restart&nbsp;deploy&nbsp;[-n&nbsp;namespace]&nbsp;&amp;&amp;&nbsp;kubectl&nbsp;rollout&nbsp;restart&nbsp;ds&nbsp;[-n&nbsp;namespace]</span></p>
<h2 class="p_Heading2"><a id="alteration-config-file" class="hmanchor"></a><span class="f_Heading2">Step 2: Make changes to the configuration file values-elma365.yaml</span></h2>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">Начало&nbsp;внимание</span></p>
<p class="p_Normal">Changes are made to the existing configuration file <code><b>values-elma365.yaml</b></code>, which was obtained and filled out during the installation of BRIX. Thoughtless changes to parameters in this file can lead to a loss of functionality of the BRIX application. Before making changes to the <code><b>values-elma365.yaml</b></code> file, we recommend creating a backup copy of it.</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"><a href="change-settings-enterprise.html#server-scaling" class="topiclink">Fill out the configuration file</a> <code><b>values-elma365.yaml</b></code> to enable autoscaling.</li></ol>
<p class="p_Normal">To enable autoscaling support, specify <code><b>true</b></code> in the parameter <code><b>global.autoscaling.enabled</b></code>. Define the desired autoscaling tool:</p>
<ul style="list-style-type:disc">
<li class="p_Normal"><span style="font-weight: bold;">hpa</span>, Horizontal Pod Autoscaler. Used by default. As the load increases, more instances of the application modules are deployed. To enable this tool, no configuration of additional components is required.</li></ul>
<ul style="list-style-type:disc">
<li class="p_Normal"><span style="font-weight: bold;">keda</span>, Kubernetes Event-driven Autoscaling. An additional auto-scaling tool controlled by events. With KEDA, you can manage scaling based on load and the number of events that need to be processed. To enable this tool, first install and configure the <a href="install-keda.html" class="topiclink">KEDA</a> add-on module.</li></ul>
<ol style="list-style-type:upper-roman" start="2">
<li value="2" class="p_Normal">Specify the minimum and maximum number of replicas of the BRIX application services. Globally for all the services the values are defined in the <code><b>global.autoscaling.minReplicas</b></code> and <code><b>global.autoscaling.maxReplicas</b></code> parameters.</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">global:</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;...</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;##&nbsp;service&nbsp;autoscaling</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;autoscaling:</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;enabled:&nbsp;</span><span class="f_CodeExample" style="font-weight: bold;">true</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;##&nbsp;select&nbsp;autoscaling&nbsp;method</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;type:&nbsp;&quot;hpa&quot;</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;##&nbsp;minimum&nbsp;and&nbsp;maximum&nbsp;number&nbsp;of&nbsp;replicas</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;minReplicas:&nbsp;1</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;maxReplicas:&nbsp;9</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">...</span></p>
<p class="p_Normal">You can also specify individual replica parameters for each service.</p>
<h2 class="p_Heading2"><a id="apply-autoscale-options" class="hmanchor"></a><span class="f_Heading2">Step 3: Apply auto-scaling parameters for BRIX Enterprise</span></h2>
<p class="p_Normal">You can update parameters for BRIX Enterprise in two ways: online and <a href="autoscaling-service-enterprise.html#offline-update" class="topiclink">offline</a>.</p>
<h3 class="p_Heading3"><span class="f_Heading3">Update parameters online</span></h3>
<ol style="list-style-type:upper-roman">
<li value="1" class="p_Normal">Determine the version of the chart with which the BRIX application was installed or updated:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">helm&nbsp;show&nbsp;chart&nbsp;elma365/elma365</span></p>
<p class="p_Normal">Example of command execution:</p>
<p class="p_Normal"><img alt="autoscaling-service-enterprise-1" title="autoscaling-service-enterprise-1" width="417" height="141" style="margin:0;width:417px;height:141px;border:none" src="autoscaling-service-enterprise-1.png"/></p>
<p class="p_Normal">After the command execution, you see the chart version information in the <code><b>version</b></code> string. Save this value for the next step. </p>
<ol style="list-style-type:upper-roman" start="2">
<li value="2" class="p_Normal">Update the parameters using the <code><b>values-elma365.yaml</b></code> configuration file. To do this, execute the following command specifying the installed chart version for the <code><b>--version</b></code> flag instead of <code><b>&lt;elma365-chart-version&gt;</b></code>:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">helm&nbsp;upgrade&nbsp;--install&nbsp;elma365&nbsp;elma365/elma365&nbsp;-f&nbsp;values-elma365.yaml&nbsp;--version&nbsp;&lt;elma365-chart-version&gt;&nbsp;--timeout=30m&nbsp;--wait&nbsp;[-n&nbsp;namespace]</span></p>
<h3 class="p_Heading3"><a id="offline-update" class="hmanchor"></a><span class="f_Heading3">Update parameters offline</span></h3>
<p class="p_Normal">Go to directory with downloaded BRIX chart and run the following command:</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">helm&nbsp;upgrade&nbsp;--install&nbsp;elma365&nbsp;./elma365&nbsp;-f&nbsp;values-elma365.yaml&nbsp;--timeout=30m&nbsp;--wait&nbsp;[-n&nbsp;namespace]</span></p>
<p class="p_Normal">It takes about 10-30 minutes to update the parameters. Wait for it to complete.</p>
<h2 class="p_Heading2"><a id="enable-load-sharing" class="hmanchor"></a><span class="f_Heading2">Step 4: Enable load redistribution in the Kubernetes cluster (optional)</span></h2>
<p class="p_Normal">The Descheduler is used for rebalancing clusters by evicting Pods that could potentially be run on more suitable nodes.</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">Начало&nbsp;внимание</span></p>
<p class="p_Normal">If your Kubernetes cluster has three or more nodes, it is recommended to install the Descheduler add-on component.</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">Конец&nbsp;внимание</span></p>
<p class="p_Normal">Example of Descheduler operation:</p>
<p class="p_Normal">In a Kubernetes cluster, due to power supply issues, one of the nodes became unavailable. All BRIX application services that were hosted on the unavailable node will be started on the remaining operational nodes. After the power supply issues are resolved, the node will return to the cluster, but the BRIX application services will continue to operate on the other nodes. The Descheduler periodically checks the placement of Pods in the Kubernetes cluster. It redistributes the Pods among the nodes of the Kubernetes cluster using a set of pre-configured strategies. Redistribution of Pods will lead to the load balancing on the cluster nodes.</p>
<p class="p_Normal">For more details on setting up and installing Descheduler, see <a href="install-descheduler.html" class="topiclink">Install Descheduler</a>.</p>
<h2 class="p_Heading2"><a id="enabling-caching" class="hmanchor"></a><span class="f_Heading2">Step 5: Enable caching of DNS queries in the Kubernetes cluster (optional)</span></h2>
<p class="p_Normal">NodeLocal DNS Cache allows you to reduce the load on DNS queries in the Kubernetes cluster. NodeLocal DNS can increase the stability of DNS name resolution, which in turn will help avoid DNAT rules, connection tracking, and connection count limitations.</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">Начало&nbsp;внимание</span></p>
<p class="p_Normal">If your Kubernetes cluster has more than one node, it is recommended to install the NodeLocal DNS Cache add-on component. </p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">Конец&nbsp;внимание</span></p>
<p class="p_Normal">For more details on setting up and installing NodeLocal DNS Cache, see <a href="install-nodelocal-dns-cache.html" class="topiclink">Install NodeLocal DNS Cache</a>.</p>
<div class="bottom-nav">
<a id="prev-link" class="topic__navi_prev" href="enable-tls-enterprise.html">
<span class="bottom-nav__arrow bottom-nav__arrow--prev"></span> <span
class="bottom-nav__link">enable-tls-enterprise.html</span>
</a>
<a id="next-link" class="topic__navi_next" href="enable-monitoring-enterprise.html">
<span class="bottom-nav__link">enable-monitoring-enterprise.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>
</body>
</html>