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

Varnish и Heartbeat в качестве балансировщиков нагрузки

Вот настройка, которую я пытаюсь выполнить

Итак, я пытаюсь выполнить следующее: пользователь переходит на 10.0.0.1, он передает его любому балансировщику нагрузки, который управляет запросами. Затем я хочу, чтобы лак действительно обработал запрос.

Вот мой файл ha.cf:

debug                           3
debugfile                       /var/log/ha-debug
logfile                         /var/log/ha-log
bcast                           eth0
keepalive                       2
warntime                        5
deadtime                        15
initdead                        30
udpport                         694
udp                             eth0
auto_failback                   yes
node                            loadb1
node                            loadb2

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

Вот ресурсы

loadb1 IPaddr::10.0.11.200/32 varnishd

* Опять же, то же самое на loadb2 (я также попытался сделать так, чтобы heartbeat не управлял ничем, кроме IP; так что в конце haresources нет "varnishd")

Моя конфигурация лака выглядит следующим образом:

 backend server1 {
.host = "10.5.0.111";
.probe = {
.url = "/";
.interval = 5s;
.timeout = 1 s;
.window = 5;
.threshold = 3;
}
}
backend server2 {
.host = "10.5.0.112";
.probe = {
.url = "/";
.interval = 5s;
.timeout = 1 s;
.window = 5;
.threshold = 3;
}
}

director example_director random {
{
.backend = server1;
.weight = 2;
}
{
.backend = server2;
.weight = 1;
}
}

sub vcl_recv {
if (req.http.host ~ "^(www.)?bps101.net$") {
set req.backend = example_director;
}
}

Мое сердцебиение работает нормально. IP 10.0.0.1 полностью доступен для проверки связи. Но когда я дошел до 10.0.0.1 в браузере, я получил сброс соединения. (порт 80 не прослушивается). Я знаю, что конфиг лака работает. Я знаю, что конфигурация пульса работает. Я просто не могу заставить их работать вместе. Есть ли у кого-нибудь предложения или идеи? Я был бы очень признателен за любые советы, указания и т. Д., Которые может дать любой. Спасибо.

Вы можете создать свой собственный сценарий в разделе resources.d, чтобы Heartbeat мог управлять лаком deamon.

Простое решение было бы

#!/bin/bash


case $1 in

    start)

        /etc/init.d/varnish start
    ;;

    stop)

        /etc/init.d/varnish stop
    ;;

    status)

    ;;

esac

Вы можете найти небольшое руководство на немецком языке в разделе http://foobar.lamp-solutions.de/howtos/lamp-administration/tuning/tuning-einzelansicht/archive/2011/may/article/hoechverfuegbarer-http-loadbalancer-mit-varnish-und-heartbeat-unter-ubuntu- 1004.html

Хорошо, основы:

  • Вы видите IP-адрес 10.0.0.1 на одной из лакировочных машин? (ip ad show)
  • Лак правильно слушает порт 80, все IP-адреса? (netstat -tanp)

Если эти двое верны, происходит что-то более странное :) Я использую решение, аналогичное вашему, которое я описал на этот ответ, вы можете использовать то же самое и использовать только 1 IP для достижения желаемого эффекта.

Да, это так. Проблема заключалась в том, что в моей конфигурации haresources пульса не было "varnishd". По какой-то причине сердцебиение это ненавидело. Так что сердцебиение не полностью управляет лаком. Но у меня есть cronjob, который запускает скрипт, чтобы увидеть, работает ли лак. Если это не так, перезапустите его.