1

Я прочитал главы clustering и HA и получил хорошее понимание кластеризации RabbitMQ. Одна вещь, которую я не понимал, состоит в том, что у вас есть 2+ узла в кластере и набор очередей HA, как клиенты могут создавать соединения, чтобы, если один узел терпит неудачу, они автоматически и легко подключаются к остальным узлам (узлам). Можно ли это сделать с помощью балансировщика нагрузки, такого как, например, Amazon ELB для развертывания в AWS?RabbitMQ HA & Failover

ответ

1

Использование балансировщика нагрузки, такого как Amazon ELB или HAProxy, - это именно то, как вы должны маршрутизировать трафик на доступные узлы в кластере Rabbit.

Я бы рекомендовал HAProxy. Вот пример конфигурации HAProxy:

global 
     log 127.0.0.1 local1 
     maxconn 4096 
     #chroot /usr/share/haproxy 
     user haproxy 
     group haproxy 
     daemon 
     #debug 
     #quiet 

defaults 
     log  global 
     mode tcp 
     option tcplog 
     retries 3 
     option redispatch 
     maxconn 2000 
     timeout connect 5000 
     timeout client 50000 
     timeout server 50000 

listen stats :1936 
     mode http 
     stats enable 
     stats hide-version 
     stats realm Haproxy\ Statistics 
     stats uri/

listen aqmp_front :5672 
     mode   tcp 
     balance   roundrobin 
     timeout client 3h 
     timeout server 3h 
     option   clitcpka 
     server   aqmp-1 rabbitmq1.domain:5672 check inter 5s rise 2 fall 3 
     server   aqmp-2 rabbitmq2.domain:5672 backup check inter 5s rise 2 fall 3 

Обратите внимание на последние две строки. Вам нужно будет заменить rabbitmq1.domain и rabbitmq2.domain с расположением ваших двух узлов. Поскольку второй сервер настроен как backup check HAProxy будет балансировать запрос только на первом узле, и если этот узел не будет выполнен, запрос будет маршрутом ко второму узлу.

0

Я бы использовал простой keepalived deamon на всех узлах кролика. Он просто добавляет виртуальный IP-адрес, общий для узлов, который вы можете использовать для доступа клиента. Конфигурация очень проста, проверьте это Hollenback's page.

Пример конфигурации:

vrrp_instance VI_1 { 
    state MASTER 
    interface eth0 
    virtual_router_id 1 
    priority 100 

    virtual_ipaddress { 
    192.168.1.1/24 brd 192.168.1.255 dev eth0 
    } 
} 
0

Вы должны настроить очередь зеркальную между RabbitMQ-серверами.

rabbitmqctl set_policy HA '^(?!amq\.).*' '{"ha-mode": "all"}' 

В примере rabbitmq будет зеркальная очередь иметь префикс с amq. Когда сервер A выходит из строя, эти очереди очереди выходят на сервер B. Вы также используете HA для кода (подключайтесь к серверу сбой, затем подключайтесь к серверу B) или используя порт кролика с помощью keepalive

 Смежные вопросы

  • Нет связанных вопросов^_^