Назад | Перейти на главную страницу

Настроить HAProxy для rabbitmq

Я хочу использовать HAProxy в качестве балансировщика нагрузки. Я хочу поставить два сервера rabbitmq за haproxy. Оба сервера rabbitmq находятся на разных экземплярах EC2. Я настроил сервер HAProxy, выполнив следующие действия. эта ссылка. Я работаю, но проблема в том, что сообщения не публикуются в шаблоне roundrobin. Сообщения публикуются только на одном сервере. Есть ли другая конфигурация для моих требований?

Моя настройка в /etc/haproxy/haproxy.cfg

listen  rebbitmq *:5672
        mode    tcp
        balance roundrobin
        stats enable
        option  forwardfor
        option  tcpka
        server  web2 46.XX.XX.XXX:5672 check inter 5000 backup
        server web1 176.XX.XX.XX:5672 check inter 5000 backup
listen  web-service *:80
          mode    http
         balance roundrobin
        option httpchk HEAD / HTTP/1.0
         option httpclose
        option forwardfor
        option httpchk OPTIONS /health_check.html
        stats enable
        stats refresh 10s
        stats hide-version
        stats scope   .
        stats uri     /lb?stats
        stats realm   LB2\ Statistics
        stats auth    admin:Adm1nn

Обновить:

Я провел некоторые исследования и разработки по этому поводу и обнаружил, что HAProxy - это циклический перебор соединения на сервере rabbitmq. например: если я запрашиваю 10 подключений, он будет выполнять циклический перебор 10 подключений через мои 2 сервера rabbitmq и опубликует сообщение.

Но проблема в том, что я хочу перебирать сообщения, а не соединение. то есть, если я отправляю 1000 сообщений за раз из 1 соединения, то 500 сообщений должны идти на сервер кролика1, а 500 сообщений должны идти на сервер кролика2. Какой должна быть конфигурация, которой я должен следовать?

Плохой кролик. Плохой. При установлении соединения и канала в RabbitMQ существует некоторая степень накладных расходов, а также возможность увеличения задержки при выполнении этого в кластерной среде RabbitMQ. Вы определенно не хотите подключаться, отправлять, отключаться. Оставьте соединение открытым. RabbitMQ работает довольно быстро, и есть способы добиться от него действительно высокой производительности (например, использовать подтверждения издателя вместо транзакций, использовать сообщения в памяти и т. Д.). Вы снизите производительность своего приложения, если будете отключать / повторно подключаться каждый раз. не замужем. сообщение.

Сколько сообщений в секунду отправляет ваше приложение? 1000? RabbitMQ справится с этим. 5000? Легко. 50К? Теперь нам нужно начать делать несколько вещей. Помните, что это через единственный канал связи. Если у вас многопоточность, вы можете без особых проблем получить 50 КБ на канал.

Пока ваш клиент поддерживает соединение с HAProxy, соединение от HAProxy к RabbitMQ не перемещается. HAProxy - это балансировщик нагрузки на основе соединения, а не на основе сообщений (насколько мне известно). Он не знает, когда сообщение начинается или заканчивается (для успешного выполнения ему необходимо знать внутренние протоколы).

Чтобы использовать циклический перебор серверов RabbitMQ, вам необходимо, чтобы ваш клиент подключился к HAProxy, отправил сообщение, а затем отключился (не оставляйте соединение открытым). Подключитесь заново, чтобы отправить следующее сообщение, затем отключитесь.

Каждый раз при повторном подключении HAProxy будет / должен перемещать вас на другой сервер.