Cambiar el backend durante el reintento en Varnish 4

Me gustaría poder cambiar el backend en un reintento en Varnish 4. Tenemos esto funcionando en una aplicación diferente (más antigua) usando Varnish 3, pero no he podido resolverlo para v4, ni Encuentra mucha documentación. La configuración que queremos es tener 2 conjuntos de directores: uno para la solicitud inicial que prueba un servidor local en el mismo centro de datos que el barniz porque esto es mucho más rápido, y luego solo si eso falla, elija al azar de un director diferente para servidores en otro centros de datos.

En v3, esto fue fácil:

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

Pero ahora en v4, el reinicio supuestamente ha sido reemplazado por reintento, con toda la documentación siendo:

En 3.0 fue posible hacer un retorno (reinicio) después de notar que la respuesta del backend era incorrecta, para cambiar a un backend diferente.

Esto ahora se denomina retorno (reintento) y vuelve a saltar a vcl_backend_fetch.

Esto solo influye en el subproceso de recuperación del backend, el manejo del lado del cliente no se ve afectado.

Sin embargo, todavía veo el código de ejemplo de algunas personas que contiene return (restart) en lugar de return (retry), y no hay un solo ejemplo de que funcione con el comando retry.

Entiendo que el barniz no debería tener que hacer todo el trabajo en vcl_recv nuevamente (como eliminar las cookies), ya que fue solo la comunicación con el backend lo que falló, por lo que tiene sentido volver a la recuperación del backend en lugar de rehacer todo el procesamiento frontend, pero obtengo un error de compilación si intento cambiar el backend en vcl_backend_fetch. ¿Cómo hago para que esto funcione?

Respuestas a la pregunta(1)

Su respuesta a la pregunta