Конфигурация HAProxy для RabbitMQ
Aрхитектура высокодоступного кластера ELMA365 подразумевает взаимодействие микросервисов приложения ELMA365 с кластером брокера очередей RabbitMQ. Для равномерной балансировки трафика между серверами кластера RabbitMQ установите конфигурацию HAProxy. В случае сбоя это обеспечит стабильную работу системы.
Пример конфигурации HAProxy для RabbitMQ
В этой статье конфигурация подготовлена для балансировки трафика в кластер RabbitMQ, развёрнутый согласно описанию из статьи «Кластер RabbitMQ». Для этого используется HAProxy, с помощью которого выполняются следующие действия:
- балансировка клиентских подключений (AMQP), приходящих на
haproxy-server.your_domain:5672
, между серверами кластера; - проксирование к web-интерфейсу RabbitMQ (API на основе HTTP) клиентских подключений, приходящих на
haproxy-server.your_domain:15672
.
Чтобы создать конфигурацию HAProxy для RabbitMQ выполните следующие действия:
- Откройте для редактирования конфигурационный файл
haproxy.cfg
с помощью команды:
sudo nano /etc/haproxy/haproxy.cfg
- Внесите изменения в конфигурационный файл
haproxy.cfg
:
Пример конфигурации:
### 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 с использованием SSL
Включение SSL возможно, если встроена поддержка OpenSSL. В параметре crt укажите путь до файла PEM, содержащего требуемые сертификаты и связанные закрытые ключи (fullchain-сертификат). Eсли файл не содержит закрытого ключа, HAProxy попытается загрузить ключ по тому же пути с суффиксом .key.
Если вместо файла PEM используется имя каталога, то все файлы, найденные в этом каталоге, будут загружены в алфавитном порядке, кроме файлов, заканчивающихся на .issuer, .ocsp или .sctl (зарезервированные расширения).
В параметре ca-file укажите путь до файла PEM, содержащего корневой сертификат. Подробнее читайте в Configuration Manual для используемой версии HAProxy. Пример для HAProxy 2.5:
### 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 ###
|
- Перезапустите HAProxy для применения изменений:
sudo systemctl restart haproxy