Varnish игнорирует бэкэнд

У меня есть установка varnish с двумя бэкэнд-серверами с циклическим директором.

Два бэкэнда отображаются в varnishstat и varnishadm как здоровые.

Вывод varnishadm:

Backend name                   Admin      Probe
boot.app1                      probe      Healthy 5/5
boot.app2                      probe      Healthy 5/5

Конфигурация VCL:

probe ping {
  .interval = 5s;
  .timeout = 1s;
  .threshold = 3;
  .window = 5;
  .url = "/ping";
}
backend app1 {
  .host = "app-1.example.com";
  .port = "80";
  .probe = ping;
}

backend app2 {
  .host = "app-2.example.com";
  .port = "80";
  .probe = ping;
}

new application_servers = directors.round_robin();
application_servers.add_backend(app1);
application_servers.add_backend(app2);

set req.backend_hint = application_servers;

Вывод varnishstat:

VBE.boot.app1.happy                                                                                                                        ffffffffff     VVVVVVVVVVVVVVVVVVVVVVVV
VBE.boot.app1.bereq_hdrbytes                                                                                                                    66.17K         0.00         91.00          0.00          0.00          0.00
VBE.boot.app1.beresp_hdrbytes                                                                                                                   76.72K         0.00        106.00          0.00          0.00          0.00
VBE.boot.app1.beresp_bodybytes                                                                                                                  11.91M         0.00         16.50K         0.00          0.00          0.00
VBE.boot.app1.conn                                                                                                                                251          0.00           .          251.00        251.00        251.00
VBE.boot.app1.req                                                                                                                                 251          0.00           .            0.00          0.00          0.00
VBE.boot.app2.happy                                                                                                                        ffffffffff     VVVVVVVVVVVVVVVVVVVVVVVV

Из команды varnishstat видно, что трафик, по-видимому, отправляется только на первый сервер в конфигурации с циклическим перебором. Для сервера app2 нет других строк, кроме .happy

Есть какие-нибудь мысли о том, что заставляет директор каждый раз выбирать первый сервер?

0
задан 26 April 2016 в 03:52
1 ответ

Вам необходимо изменить свой файл VCL на что-то вроде этого

probe ping {
   .interval = 5s;
   .timeout = 1s;
   .threshold = 3;
   .window = 5;
   .url = "/ping";
}
backend app1 {
   .host = "app-1.example.com";
   .port = "80";
   .probe = ping;
}

backend app2 {
   .host = "app-2.example.com";
   .port = "80";
   .probe = ping;
}

sub vcl_init {
    new application_servers = directors.round_robin();
    application_servers.add_backend(app1);
    application_servers.add_backend(app2);
}

sub vcl_recv{
    set req.backend_hint = application_servers;
}
1
ответ дан 4 December 2019 в 16:38

Теги

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