Подтвердить что ты не робот

HAProxy - маршрутизация на основе URL с балансировкой нагрузки

Я новичок в HAProxy, и у меня есть вопрос о конфигурации HAProxy, которая помогает мне принять ключевое решение в правильном подходе. Это очень поможет мне решить архитектуру.

У меня 3 приложения. Скажем app1, app2, app3.

Каждое приложение отличается URL-адресами следующим образом:

www.example.com/app1/123 -> app1
www.example.com/app2/123 -> app2
www.example.com/app3/123 -> app3

Я планирую иметь 2 экземпляра каждого приложения в двух разных регионах:

Region 1 - app1, app2, app3
Region 2 - app1, app2, app3

Я вижу два метода для настройки, но я не уверен, какая из них лучше всего:

  • Метод 1. Попросите HAProxy1 сначала дифференцировать запросы, используя шаблоны url. Запросы от HAProxy1 будут перенаправлены на другой HAProxy-сервер, который настроил отдельные приложения (в этом случае 3 HAProxy-сервера) для балансировки нагрузки.

  • Метод 2. У вас есть один большой HAProxy-сервер, который выполняет оба способа, как указано в методе 1. То есть, имеет конфигурацию для разделения запросов в зависимости от URL-адреса, а затем передает каждый запрос через индивидуальный фильтр, как и все, что настроено для каждого приложения для балансировки нагрузки.

Я не уверен, поддерживается ли метод 2 в haproxy. Любые идеи или предложения заслуживают высокой оценки. Пожалуйста, поставьте немного света.

4b9b3361

Ответ 1

Вы можете отделить запросы на основе URL и балансировки нагрузки с помощью одного HAProxy-сервера. У вашей конфигурации будет что-то вроде этого:

frontend http
acl app1 path_end -i /app1/123 #matches path ending with "/app/123"
acl app2 path_end -i /app2/123 
acl app3 path_end -i /app3/123 


use_backend srvs_app1    if app1
use_backend srvs_app2    if app2
use_backend srvs_app3    if app3

backend srvs_app1 #backend that lists your servers. Use a balancing algorithm as per your need.
   balance roundrobin 
   server host1 REGION1_HOST_FOR_APP1:PORT 
   server host2 REGION2_HOST_FOR_APP1:PORT

backend srvs_app2
   balance roundrobin
   server host1 REGION1_HOST_FOR_APP2:PORT 
   server host2 REGION2_HOST_FOR_APP2:PORT

backend srvs_app3
   balance roundrobin
   server host1 REGION1_HOST_FOR_APP3:PORT 
   server host2 REGION2_HOST_FOR_APP3:PORT

Более подробную информацию можно найти на странице .