Изменить бэкэнд при повторных попытках в Varnish 4

Я хотел бы иметь возможность изменить серверную часть при повторной попытке в Varnish 4. У нас это работает на другом (более старом) приложении, использующем Varnish 3, но я не смог выяснить это для v4, ни найти много документации. Мы хотим, чтобы установка состояла из двух наборов директоров - один для первоначального запроса, пытающегося использовать локальный сервер в том же центре обработки данных, что и лак, потому что это намного быстрее, и только в случае сбоя выбирайте случайным образом из другого директора серверы в другом датацентров.

В v3 это было легко:

sub vcl_recv {
    if (req.restarts == 0) {
        set req.backend = defaultdirector;
    } else {
        set req.backend = backupdirector;
    }
}

#Then in vcl_fetch and/or vcl_error something like:
if (beresp.status >= 500 && req.restarts < some_max) {
    return(restart);
}

Но теперь, в версии 4, перезапуск предположительно был заменен на повтор, при этом вся документация была такой:

В версии 3.0 было возможно выполнить возврат (перезапуск), заметив, что ответ бэкенда был неправильным, чтобы перейти на другой бэкэнд.

Теперь это называется return (retry) и возвращается к vcl_backend_fetch.

Это влияет только на внутренний поток извлечения, на обработку на стороне клиента это не влияет.

Тем не менее, я все еще вижу пример кода нескольких людей, содержащий return (restart), а не return (retry), и ни одного примера его работы с командой retry.

Я понимаю, что лаку не нужно снова выполнять всю работу в vcl_recv (например, удалять файлы cookie), так как не удалось установить связь только с бэкэндом, поэтому имеет смысл возвращаться к бэкэнду, а не повторять вся обработка внешнего интерфейса, но я получаю ошибку компиляции, если я пытаюсь изменить бэкэнд в vcl_backend_fetch. Как мне сделать эту работу?

Ответы на вопрос(1)

Ваш ответ на вопрос