﻿# Конфигурация HAProxy для RabbitMQ

> [HTML Version](haproxy-rabbitmq.html)

Aрхитектура высокодоступного кластера ELMA365 подразумевает взаимодействие микросервисов приложения ELMA365 с кластером брокера очередей RabbitMQ. Для равномерной балансировки трафика между серверами кластера RabbitMQ установите конфигурацию HAProxy. В случае сбоя это обеспечит стабильную работу системы.

## Пример конфигурации HAProxy для RabbitMQ

В этой статье конфигурация подготовлена для балансировки трафика в кластер RabbitMQ, развёрнутый согласно описанию из статьи [«Кластер RabbitMQ»](configure-rabbitmq.md). Для этого используется HAProxy, с помощью которого выполняются следующие действия:

- балансировка клиентских подключений (AMQP), приходящих на \[OBJECT\],** **между серверами кластера;

- проксирование к web-интерфейсу RabbitMQ (API на основе HTTP) клиентских подключений, приходящих на** **\[OBJECT\].

Чтобы создать конфигурацию HAProxy для RabbitMQ выполните следующие действия:

1. Откройте для редактирования конфигурационный файл \[OBJECT\]** **с помощью команды:

````
sudo nano /etc/haproxy/haproxy.cfg

2. ````
Внесите изменения в конфигурационный файл \[OBJECT\]:

Пример конфигурации

````
\### RabbitMQ ###  
listen rabbitmq  
    bind haproxy-server.your\_domain:5672  
    mode tcp  
    balance roundrobin  
    server rabbitmq-server1 rabbitmq-server1.your\_domain:5672 check inter 2s rise 2 fall 3  
    server rabbitmq-server2 rabbitmq-server2.your\_domain:5672 check inter 2s rise 2 fall 3  
    server rabbitmq-server3 rabbitmq-server3.your\_domain:5672 check inter 2s rise 2 fall 3  
  
listen rabbitmq\_management  
    bind haproxy-server.your\_domain:15672  
    balance source  
    server rabbitmq-server1 rabbitmq-server1.your\_domain:15672 check inter 2s  
    server rabbitmq-server2 rabbitmq-server2.your\_domain:15672 check inter 2s  
    server rabbitmq-server3 rabbitmq-server3.your\_domain:15672 check inter 2s  
\### RabbitMQ ###
````

````
Пример конфигурации HAProxy с использованием 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):  


````
\### RabbitMQ ###  
listen rabbitmq  
    bind haproxy-server.your\_domain:5671 ssl crt /etc/haproxy/ssl/haproxy-server.your\_domain.pem  
    mode tcp  
    balance roundrobin  
    server rabbitmq-server1 rabbitmq-server1.your\_domain:5671 check inter 2s rise 2 fall 3 ssl crt /etc/haproxy/ssl/haproxy-server.your\_domain.pem ca-file /etc/haproxy/ssl/rootCA.your\_domain.pem  
    server rabbitmq-server2 rabbitmq-server2.your\_domain:5671 check inter 2s rise 2 fall 3 ssl crt /etc/haproxy/ssl/haproxy-server.your\_domain.pem ca-file /etc/haproxy/ssl/rootCA.your\_domain.pem  
    server rabbitmq-server3 rabbitmq-server3.your\_domain:5671 check inter 2s rise 2 fall 3 ssl crt /etc/haproxy/ssl/haproxy-server.your\_domain.pem ca-file /etc/haproxy/ssl/rootCA.your\_domain.pem  
  
listen rabbitmq\_management  
    bind haproxy-server.your\_domain:15671 ssl crt /etc/haproxy/ssl/haproxy-server.your\_domain.pem  
    balance source  
    server rabbitmq-server1 rabbitmq-server1.your\_domain:15671 check inter 2s ssl crt /etc/haproxy/ssl/haproxy-server.your\_domain.pem ca-file /etc/haproxy/ssl/rootCA.your\_domain.pem  
    server rabbitmq-server2 rabbitmq-server2.your\_domain:15671 check inter 2s ssl crt /etc/haproxy/ssl/haproxy-server.your\_domain.pem ca-file /etc/haproxy/ssl/rootCA.your\_domain.pem  
    server rabbitmq-server3 rabbitmq-server3.your\_domain:15671 check inter 2s ssl crt /etc/haproxy/ssl/haproxy-server.your\_domain.pem ca-file /etc/haproxy/ssl/rootCA.your\_domain.pem  
\### RabbitMQ ###
````

3. ````
Перезапустите HAProxy для применения изменений:

````
sudo systemctl restart haproxy
````