Конфигурация HAProxy для S3
Aрхитектура высокодоступного кластера ELMA365 подразумевает взаимодействие микросервисов приложения ELMA365 с кластером S3. Для равномерной балансировки трафика между серверами кластера S3 установите конфигурацию HAProxy. В случае сбоя это обеспечит стабильную работу системы.
В статье рассмотрим примеры конфигурации HAProxy для SeaweedFS и MinIO.
Пример конфигурации HAProxy
В этой статье подготовлена конфигурация для балансировки трафика в кластере, развёрнутом согласно описанию из статьи:
Для этого используется HAProxy. С его помощью происходит балансировка клиентских подключений между серверами кластера. Такие подключения приходят на:
- seaweedfs.your_domain:8333 — если вы используете SeaweedFS;
- minio.your_domain:9000 — если вы используете MinIO.
Чтобы создать конфигурацию HAProxy для S3, выполните следующие действия:
- Откройте для редактирования конфигурационный файл
haproxy.cfg с помощью команды:
sudo nano /etc/haproxy/haproxy.cfg
- Внесите изменения в конфигурационный файл
haproxy.cfg:
Пример конфигурации для настройки балансировки нагрузки до кластера 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 с использованием SSL
Включение SSL возможно, если встроена поддержка OpenSSL. В параметре crt укажите путь до PEM-файла, содержащего требуемые сертификаты и связанные закрытые ключи (fullchain-сертификат). Eсли файл не содержит закрытого ключа, HAProxy попытается загрузить ключ по тому же пути с суффиксом .key.
Если вместо PEM-файла используется имя каталога, то все файлы, найденные в этом каталоге, будут загружены в алфавитном порядке, кроме файлов, заканчивающихся на .issuer, .ocsp или .sctl (зарезервированные расширения).
В параметре ca-file укажите путь до PEM-файла, содержащего корневой сертификат. Подробнее читайте в Configuration Manual для используемой версии HAproxy. Пример для HAProxy 2.5:
### 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 с использованием SSL
Включение SSL возможно, если встроена поддержка OpenSSL. В параметре crt укажите путь до файла PEM, содержащего требуемые сертификаты и связанные закрытые ключи (fullchain-сертификат). Eсли файл не содержит закрытого ключа, HAProxy попытается загрузить ключ по тому же пути с суффиксом .key.
Если вместо PEM-файла используется имя каталога, то все файлы, найденные в этом каталоге, будут загружены в алфавитном порядке, кроме файлов, заканчивающихся на .issuer, .ocsp и .sctl (зарезервированные расширения).
В параметре ca-file укажите путь до файла PEM, содержащего корневой сертификат. Подробнее читайте в Configuration Manual для используемой версии HAProxy. Пример для HAProxy 2.5:
### 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 ###
|
- Перезапустите HAProxy для применения изменений:
sudo systemctl restart haproxy