Ändern Sie das Backend während des erneuten Versuchs in Varnish 4

Ich möchte in der Lage sein, das Backend für einen erneuten Versuch in Varnish 4 zu ändern. Wir haben dies in einer anderen (älteren) Anwendung unter Verwendung von Varnish 3 ausgeführt, aber ich habe es für Version 4 nicht herausgefunden. noch viel Dokumentation finden. Das Setup, das wir wollen, besteht aus 2 Gruppen von Direktoren - eine für die erste Anforderung, die einen lokalen Server im selben Datencenter wie Firnis versucht, da dies viel schneller ist und nur dann, wenn dies fehlschlägt, zufällig von einem anderen Direktor für Server in anderen ausgewählt wird Daten Center

n Version 3 war das einfach:

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);
}

Aber jetzt in v4 wurde der Neustart angeblich durch einen Neuversuch ersetzt, wobei die gesamte Dokumentation wie folgt lautet:

In 3.0 war es möglich zurückzukehren (neu zu starten), nachdem festgestellt wurde, dass die Backend-Antwort falsch war.

Dies heißt jetzt return (retry) und springt zurück zu vcl_backend_fetch.

Dies wirkt sich nur auf den Backend-Fetch-Thread aus, die clientseitige Behandlung bleibt davon unberührt.

Aber ich sehe immer noch den Beispielcode einiger Leute, der return (restart) anstatt return (retry) enthält, und kein einziges Beispiel dafür, wie es mit dem retry-Befehl funktioniert.

Ich verstehe, dass Lack nicht die gesamte Arbeit in vcl_recv erneut ausführen muss (z. B. das Entfernen von Cookies), da nur die Kommunikation mit dem Back-End fehlgeschlagen ist. Es ist also sinnvoll, zum Back-End-Abruf zurückzukehren und nicht Wiederholen Sie die gesamte Frontend-Verarbeitung, aber ich erhalte einen Kompilierungsfehler, wenn ich versuche, das Backend in vcl_backend_fetch zu ändern. Wie mache ich das?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage