﻿# Конфигурация HAProxy для S3

> [HTML Version](haproxy-s3-minio.html)

Aрхитектура высокодоступного кластера ELMA365 подразумевает взаимодействие микросервисов приложения ELMA365 с кластером S3. Для равномерной балансировки трафика между серверами кластера S3 установите конфигурацию HAProxy. В случае сбоя это обеспечит стабильную работу системы.

В статье рассмотрим примеры конфигурации HAProxy для SeaweedFS и MinIO.

## Пример конфигурации HAProxy

В этой статье подготовлена конфигурация для балансировки трафика в кластере, развёрнутом согласно описанию из статьи:

- [«Кластер SeaweedFS»](seaweedfs-cluster.md);

- [«Кластер MinIO»](minio-cluster.md). 

Для этого используется HAProxy. С его помощью происходит балансировка клиентских подключений между серверами кластера. Такие подключения приходят на:

- `seaweedfs.your\_domain:8333` — если вы используете SeaweedFS;

- `minio.your\_domain:9000` — если вы используете MinIO.



Чтобы создать конфигурацию HAProxy для S3, выполните следующие действия:

1. Откройте для редактирования конфигурационный файл \[OBJECT\] с помощью команды:

````
sudo nano /etc/haproxy/haproxy.cfg

2. ````
Внесите изменения в конфигурационный файл \[OBJECT\]:

Пример конфигурации для настройки балансировки нагрузки до кластера SeaweedFS

````
\### S3 SeaweedFS ###  
listen s3seaweedfs  
    bind seaweedfs.your\_domain:8333  
    mode http  
    balance leastconn  
    server seaweedfs1 seaweedfs-server1.your\_domain:8333 check inter 2s  
    server seaweedfs2 seaweedfs-server2.your\_domain:8333 check inter 2s  
    server seaweedfs3 seaweedfs-server3.your\_domain:8333 check inter 2s  
\### S3 SeaweedFS ###

````




Пример конфигурации HAProxy для SeaweedFS с использованием TLS

  
Включение TLS возможно, если встроена поддержка OpenSSL. В параметре `crt` укажите путь до PEM-файла, содержащего требуемые сертификаты и связанные закрытые ключи ([fullchain-сертификат](fullchain-sertificate.md)). Eсли файл не содержит закрытого ключа, HAProxy попытается загрузить ключ по тому же пути с суффиксом **.key**.   
  
Если вместо PEM-файла используется имя каталога, то все файлы, найденные в этом каталоге, будут загружены в алфавитном порядке, кроме файлов, заканчивающихся на **.issuer**, **.ocsp** или **.sctl** (зарезервированные расширения).  
  
В параметре `ca-file` укажите путь до PEM-файла, содержащего корневой сертификат. Подробнее читайте в Configuration Manual для используемой версии HAproxy. Пример для [HAProxy 2.5](https://cbonte.github.io/haproxy-dconv/2.5/configuration.html#5.1-crt):

````
\### S3 SeaweedFS ###  
listen s3seaweedfs  
    bind seaweedfs.your\_domain:8334 ssl crt /etc/haproxy/ssl/seaweedfs-server.your\_domain.pem  
    mode http  
    balance leastconn  
    server seaweedfs1 seaweedfs-server1.your\_domain:8334 check inter 2s ssl crt /etc/haproxy/ssl/seaweedfs-server.your\_domain.pem ca-file /etc/haproxy/ssl/rootCA\_your\_domain.pem  
    server seaweedfs2 seaweedfs-server2.your\_domain:8334 check inter 2s ssl crt /etc/haproxy/ssl/seaweedfs-server.your\_domain.pem ca-file /etc/haproxy/ssl/rootCA\_your\_domain.pem  
    server seaweedfs3 seaweedfs-server3.your\_domain:8334 check inter 2s ssl crt /etc/haproxy/ssl/seaweedfs-server.your\_domain.pem ca-file /etc/haproxy/ssl/rootCA\_your\_domain.pem  
\### S3 SeaweedFS ###

````




Пример конфигурации для настройки балансировки нагрузки до кластера MinIO

````
\### S3 MinIO ###  
listen s3minio  
    bind minio.your\_domain:9000  
    mode http  
    balance leastconn  
    server minio1 minio-server1.your\_domain:9000 check inter 2s  
    server minio2 minio-server2.your\_domain:9000 check inter 2s  
    server minio3 minio-server3.your\_domain:9000 check inter 2s  
    server minio4 minio-server4.your\_domain:9000 check inter 2s  
\### S3 MinIO ###
````

````
Пример конфигурации HAProxy для MinIO с использованием TLS

  
Включение TLS возможно, если встроена поддержка OpenSSL. В параметре \[OBJECT\] укажите путь до файла PEM, содержащего требуемые сертификаты и связанные закрытые ключи ([fullchain-сертификат](fullchain-sertificate.md)). Eсли файл не содержит закрытого ключа, HAProxy попытается загрузить ключ по тому же пути с суффиксом **.key**.

  
Если вместо PEM-файла используется имя каталога, то все файлы, найденные в этом каталоге, будут загружены в алфавитном порядке, кроме файлов, заканчивающихся на **.issuer**, **.ocsp** и **.sctl** (зарезервированные расширения).

  
В параметре \[OBJECT\] укажите путь до файла PEM, содержащего корневой сертификат. Подробнее читайте в Configuration Manual для используемой версии HAProxy. Пример для [HAProxy 2.5](https://cbonte.github.io/haproxy-dconv/2.5/configuration.html#5.1-crt):  


````
\### S3 MinIO ###  
listen s3minio  
    bind minio.your\_domain:9000 ssl crt /etc/haproxy/ssl/minio-server.your\_domain.pem  
    mode http  
    balance leastconn  
    server minio1 minio-server1.your\_domain:9000 check inter 2s ssl crt /etc/haproxy/ssl/minio-server.your\_domain.pem ca-file /etc/haproxy/ssl/rootCA\_your\_domain.pem  
    server minio2 minio-server2.your\_domain:9000 check inter 2s ssl crt /etc/haproxy/ssl/minio-server.your\_domain.pem ca-file /etc/haproxy/ssl/rootCA\_your\_domain.pem  
    server minio3 minio-server3.your\_domain:9000 check inter 2s ssl crt /etc/haproxy/ssl/minio-server.your\_domain.pem ca-file /etc/haproxy/ssl/rootCA\_your\_domain.pem  
    server minio4 minio-server4.your\_domain:9000 check inter 2s ssl crt /etc/haproxy/ssl/minio-server.your\_domain.pem ca-file /etc/haproxy/ssl/rootCA\_your\_domain.pem  
\### S3 MinIO ###
````

3. ````
Перезапустите HAProxy для применения изменений:

````
sudo systemctl restart haproxy
````