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

Почему Varnish не проверяет внутренний сервер?

У меня есть два бэкенда для конфигурации Varnish. Первый бэкэнд работает нормально, второй бэкэнд, кажется, полностью игнорируется Varnish. Похоже, что .probe на втором бэкэнд игнорируется в том смысле, что он никогда не пытается запросить бэкэнд-сервер. Я говорю это, потому что tcpdump а журналы на внутреннем сервере не показывают трафика вообще.

Обычный curl ко второму внутреннему серверу работает хорошо.

У меня есть следующая конфигурация сервера Varnish.

vcl 4.0;

# import directors VMOD
import directors;

# define backend servers
backend apitomcat01 {
    .host = "apitomcat1";
    .port = "8080";
    .probe = {
        .timeout = 5s;
        .interval = 10s;
        .window = 10;
        .threshold = 3;
        .request =
            "HEAD /api3/health HTTP/1.1"
            "User-Agent: varnish-health"
            "Host: apitomcat1:8080"
            "Connection: Close"
            "Accept: */*"
            "Authorization: Basic ABCDEFGH";
    }

}
backend apitomcat02 {
    .host = "apitomcat2";
    .port = "8081";
    .probe = {
        .timeout = 5s;
        .interval = 10s;
        .window = 10;
        .threshold = 3;
        .request =
            "HEAD /api3/health HTTP/1.1"
            "User-Agent: varnish-health"
            "Host: apitomcat2:8081"
            "Connection: Close"
            "Accept: */*"
            "Authorization: ABCDEFGH";
    }

}

# create tomcat director
sub vcl_init {
    new tomcat = directors.round_robin();
    tomcat.add_backend(apitomcat01);
    tomcat.add_backend(apitomcat02);
}

sub vcl_recv {
    # send all traffic to the tomcat director:
    set req.backend_hint = tomcat.backend();

    # pass all traffic - do not perform any caching for now
    return (pass);
}

* Умышленно, что apitomcat01 и apitomcat02 используют разные порты.

Почему зонд apitomcat02 никогда не отправляет никаких запросов на apitomcat2? Когда я бегу tcpdump -P inout | grep "apitomcat2" Ничего не произошло. Я ожидал увидеть хотя бы пробные запросы.

Когда я бегу backend.list, Я получаю следующее.

200
Backend name                   Refs   Admin      Probe
apitomcat01(192.168.41.51,,8080) 2      probe      Healthy 10/10
apitomcat02(192.168.41.52,,8081) 1      probe      Sick 0/10

Когда я запускаю debug.health, я получаю следующее.

200        
Backend apitomcat01 is Healthy
Current states  good: 10 threshold:  3 window: 10
Average responsetime of good probes: 0.068237
Oldest                                                    Newest
================================================================
4444444444444444444444444444444444444444444444444444444444444444 Good IPv4
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Good Xmit
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR Good Recv
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH Happy
Backend apitomcat02 is Sick
Current states  good:  0 threshold:  3 window: 10
Average responsetime of good probes: 0.000000
Oldest                                                    Newest
================================================================
---------------------------------------------------------------- Happy