Можно ли направлять запросы через HAproxy на сервер с наименьшей задержкой по сравнению с исходным IP? Это кажется очень необходимым требованием, но я ничего не могу найти.
Моя проблема в том, что наш центр обработки данных находится на западном побережье США, и мы получаем все больший спрос со стороны Европы, Азии и Южной Америки, в то время как задержка из этих мест делает приложение непригодным для использования.
Учитывая, что haproxy прокси Запросы, весь трафик в любом случае будет проходить через haproxy, поэтому отправка их в разные места вам не поможет, потому что все, что вы будете делать, - это увеличивать задержку, управляя трафиком больше, чем нужно. Вам необходимо отправить пользователя непосредственно на ближайший доступный сервер, используя географический или топологический механизм DNS.
вы можете написать собственный простой сценарий inetd / xinetd и заставить haproxy проверять работоспособность внутреннего сервера с помощью этого сценария. ваш собственный скрипт может проверить загрузку машины, количество подключений и т. д. и решить, принимать новый трафик или нет. Подсказка: этот скрипт должен вести себя как очень простой http-сервер, вы можете легко написать его в оболочке. Только методы, которые вам нужно реализовать, - это 200 ответов и 500 для передачи или отклонения дальнейших запросов.
HAproxy не сможет определить, какова будет задержка между конечным пользователем и одним из ваших серверов, так как между этими двумя сторонами необходимо будет выполнить эхо-запрос.
Что вы можете сделать, так это настроить геоданы, чтобы IP-адреса, выделенные в Европе, отправлялись в ваше европейское местоположение, а IP-адреса из Южной Америки - в ваше местоположение в Техасе и так далее.