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

Прокси-сервер HA не загружает баланс моих веб-запросов. Что я сделал не так?

Наконец-то я настроил прокси-сервер HA и начал работать так, как мне кажется. Однако это не балансировка нагрузки получаемых веб-запросов. Все запросы в настоящее время перенаправляются на первый сервер в кластере. Я собираюсь вставить свою конфигурацию ниже - я буду признателен, если кто-нибудь увидит, где я ошибся.

Это моя первая попытка настроить веб-серверы в среде * nix.

Во-первых, у меня прокси-сервер HA работает на том же хосте, что и первый сервер в кластере apache. Позже мы переводим эти серверы в виртуальные, и у них будут разные виртуальные хосты, но я хотел запустить это сейчас.

Оба веб-сервера получают проверки работоспособности и правильно отчитываются. Страница статистики haproxy? Правильно сообщает о серверах, которые работают и не работают. Я проверил это, изменив имя проверяемого файла. Я еще не загружал эти серверы. Я только что открыл URL-адреса на нескольких вкладках (частный просмотр), и несколько сотрудников тоже открыли URL-адреса. Весь трафик идет на WEB1. Я неправильно балансирую?

global
      maxconn 10000
      nbproc 8
      pidfile /var/run/haproxy.pid
      log 127.0.0.1 local0 debug
      daemon

defaults
      log global
      mode http
      retries 3
      option redispatch
      maxconn 5000
      contimeout 5000
      clitimeout 50000
      srvtimeout 50000

listen WEBHAEXT :80,:8443
      mode http
      cookie sessionbalance insert indirect nocache
      balance roundrobin
      option httpclose
      option forwardfor except 127.0.0.1
      option httpchk HEAD /health_check.txt
      stats enable
      stats auth rah:rah
      server WEB1 10.90.2.131:81 cookie WEB_1 check
      server WEB2 10.90.2.130:80 cookie WEB_2 check

Редактировать:

Я успешно провел тесты с использованием ab (тестирование apache), и нагрузка была равномерно распределена между обоими узлами. Я не уверен, что я делал раньше неправильно, но приведенная выше конфигурация работает.

Как вы проверяете, что все запросы отправляются на один сервер? Поскольку вы настроили HAProxy, вы используете закрепленные сеансы, в которых HAProxy устанавливает файл cookie для каждого клиента, который направляет его на один и тот же серверный узел для каждого запроса. Если бы вы просто продолжали перезагружаться в одном браузере, вы бы увидели, что каждый запрос отправляется в один и тот же сервер.

Я только что попробовал ту конфигурацию, которую вы предоставили. Во-первых, проверка работоспособности у меня не сработала, мне пришлось добавить "/" перед "health_check.txt" (haproxy-1.4.10).

Однако балансировка нагрузки работала нормально. Каждый раз, когда я закрывал и снова открывал свой браузер, меня перенаправляли на другой сервер.

У вас есть живое приложение, которое вы тестируете (с собственными файлами cookie), или это просто тестовая страница?

Попробуйте удалить insert заявление от cookie.

Следуя документации для [insert]:

Если у клиента есть вся необходимая информация для подключения к тому же серверу в следующий раз, дополнительные файлы cookie не будут вставлены.

Так что вполне возможно, что все запросы получат свои WEB1 с помощью этого файла cookie, а затем следуйте этому направлению при каждом запросе.

PS: И вы должны установить такие же имена для cookie параметр на сервере statement.

server WEB1 10.90.2.131:81 cookie WEB_LB check
server WEB2 10.90.2.130:80 cookie WEB_LB check

Вы пытались удалить все параметры, связанные с сохранением файлов cookie? Что случается?

Попробуйте изменить WEB_1 на WEB1:

server WEB1 10.90.2.131:81 cookie WEB1 check
server WEB2 10.90.2.130:80 cookie WEB2 check