Как к обработке отказа, если Лак между HAProxy и Apache

Я думаю о помещении промежутка Лака HAProxy и Apache. Это работает, однако с промежутком Лака, HAProxy контролирует Лак. Если Apache понизится, то он не будет обработка отказа к другому Apache.

Существует ли конфигурация в HAProxy, который преодолеет эту проблему?

0
задан 21 August 2015 в 19:18
1 ответ

Если Varnish находится между HAproxy и Apache, вы можете просто попросить Varnish выполнить балансировку нагрузки , хотя это и далеко не так надежно, как параметры, предоставляемые HAproxy.

Было бы лучше, если бы HAproxy отправлял статический контент в Varnish, а остальное прямо на внутренние серверы.

На Haproxy.com есть очень хорошая статья о том, как это сделать здесь .

Если вы действительно хотите, чтобы HAproxy проверял состояние Varnish и Apache одновременно (которые находятся на одном хосте), у вас есть два варианта:

  1. Установить фиктивные бэкэнды / серверы в HAProxy которые проверяют Apache и позволяют соответствующему серверу Varnish отслеживать фиктивный:

     внешний интерфейс HTTP-IN
      режим http
      default_backend Лаки
    
     # Весь трафик идет сюда
    бэкэнд Лаки
      режим http
      баланс раундробин
      сервер Varnish-1 1.1.1.1:80 трек Apache-1 / Apache-1
      сервер Varnish-2 2.2.2.2:80 трек Apache-2 / Apache-2
    
     # Сюда никогда не идет движение
     # Просто используется для вывода серверов из ротации в 'backend Varnishes'
    бэкэнд Apache-1
      сервер Apache-1 1.1.1.1:8080 проверка
    
    бэкэнд Apache-2
      сервер Apache-2 2.2.2.2:8080 проверка
     
  2. Varnish возвращал результат проверки работоспособности, соответствующий статусу Apache (OK, если Apache запущен, иначе FAILED).

    varnish.vcl

     backend default {
      .host = "127.0.0.1";
      .port = "8080";
     }
    
     # Проверка состояния здоровья
    if (req.url == "/ varnishcheck") {
      if (req.backend.healthy) {
      return (synth (751, «ОК!»));
      } else {
      return (synth (752, «НЕ ПРОШЛО!»));
      }
     }
    
    sub vcl_synth {
      # Проверки здоровья
      if (соответственно статус == 751) {
      установить resp.status = 200;
      вернуть (доставить);
      }
      if (соответственно статус == 752) {
      установить resp.status = 503;
      вернуть (доставить);
      }
     }
     

    haproxy.cfg

     внешний интерфейс HTTP-IN
      режим http
      default_backend Лаки
    
    бэкэнд Лаки
      режим http
      баланс раундробин
      опция httpchk HEAD / varnishcheck
      http-check ожидать статус 200
      сервер Varnish-1 1.1.1.1:80 проверка
      сервер Varnish-2 2.2.2.2:80 проверка
     
1
ответ дан 4 December 2019 в 16:50

Теги

Похожие вопросы