﻿# Установка HAProxy

> [HTML Version](haproxy-load-balance.html)

HAProxy — инструмент обеспечения высокой доступности и балансировки нагрузки. В системе ELMA365 HAProxy используется для построения отказоустойчивой архитектуры при организации высокодоступного кластера ELMA365. В зависимости от выстраиваемой архитектуры выбирается необходимая конфигурация HAProxy. В рамках данной статьи конфиг HAProxy разделён на базовую конфигурацию (конфиг сервиса HAProxy) и конфигурации для балансировки компонентов ELMA365, которые могут быть добавлены в конфиг HAProxy к базовой части.

Установка состоит из трёх этапов:

1. [Установка HAProxy](#install-haproxy).

2. [Настройка базовой конфигурации HAProxy](#set-up-haproxy-configuration).

3. [Добавление конфигураций для балансировки компонентов ELMA365](#add-configurations).

## Шаг 1. Установка HAProxy

1. Установите HAProxy, используя следующую команду:

````
sudo apt install haproxy -y

2. ````
Запустите сервис HAProxy и добавьте его в автозагрузку:

````
sudo systemctl enable --now haproxy

## ````
Шаг 2. Настройка базовой конфигурации HAProxy

1. Переместите конфигурационный файл по умолчанию:

````
sudo mv /etc/haproxy/haproxy.cfg\{,.original\}

2. ````
Создайте и откройте для редактирования новый конфигурационный файл с помощью команды:

````
sudo nano /etc/haproxy/haproxy.cfg

````
Базовая часть кофигурационного файла описывает параметры работы сервера HAProxy: режим работы, таймауты, количество подключений, включение web‑интерфейса и т.д. В примере приведена необходимая конфигурация параметров для работы сервера HAProxy. Подробнее об используемых параметрах читайте в официальной документации [HAProxy Documentation](https://docs.haproxy.org/).

Пример базовой конфигурационный HAProxy для файла haproxy.cfg

````
global  
    maxconn 100000  
    log /dev/log local0  
    log /dev/log local1 notice  
    chroot /var/lib/haproxy  
    stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners  
    stats timeout 30s  
    user haproxy  
    group haproxy  
    daemon  
  
defaults  
    mode tcp  
    log global  
    retries 2  
    timeout queue 5s  
    timeout connect 5s  
    timeout client 60m  
    timeout server 60m  
    timeout check 15s  
  
listen stats  
    mode http  
    bind haproxy-server.your\_domain:7000  
    stats enable  
    stats uri /  
  
\### Web ELMA365 ###  
\### Web ELMA365 ###  
  
\### PostgreSQL ###  
\### PostgreSQL ###  
  
\### RabbitMQ ###  
\### RabbitMQ ###  
  
\### Valkey/Redis ###  
\### Valkey/Redis ###  
  
\### S3 MinIO ###  
\### S3 MinIO ###  
  
\### Docs Server ###  
\### Docs Server ###
````

3. ````
Перезапустите HAProxy:

````
sudo systemctl restart haproxy

## ````
Шаг 3. Добавление конфигураций для балансировки компонентов ELMA365

Конфигурации компонентов ELMA365 добавляются в файл \[OBJECT\] по необходимости. 

В зависимости от выстраиваемой архитектуры вы можете добавить следующие конфигурации:

- [HAProxy для web ELMA365](haproxy-web-elma365.md); 

- [HAProxy для PostgreSQL](haproxy-postgresql.md); 

- [HAProxy для RabbitMQ](haproxy-rabbitmq.md); 

- [HAProxy для S3 Minio](haproxy-s3-minio.md);

- [HAProxy для сервера документов](haproxy-docs-server.md).