Я думаю о помещении промежутка Лака HAProxy и Apache. Это работает, однако с промежутком Лака, HAProxy контролирует Лак. Если Apache понизится, то он не будет обработка отказа к другому Apache.
Существует ли конфигурация в HAProxy, который преодолеет эту проблему?
Если Varnish находится между HAproxy и Apache, вы можете просто попросить Varnish выполнить балансировку нагрузки , хотя это и далеко не так надежно, как параметры, предоставляемые HAproxy.
Было бы лучше, если бы HAproxy отправлял статический контент в Varnish, а остальное прямо на внутренние серверы.
На Haproxy.com есть очень хорошая статья о том, как это сделать здесь .
Если вы действительно хотите, чтобы HAproxy проверял состояние Varnish и Apache одновременно (которые находятся на одном хосте), у вас есть два варианта:
Установить фиктивные бэкэнды / серверы в 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 проверка
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 проверка