Persistencia de sesiones

La persistencia de sesiones está soportada en Compute Cloud@Customer.

La persistencia de sesiones es un método para dirigir todas las solicitudes procedentes de un cliente lógico único a un servidor web backend independiente. Los servidores backend que utilizan el almacenamiento en caché para mejorar el rendimiento, o para activar sesiones de conexión o carros de compra, se pueden beneficiar de la persistencia de sesiones.

La persistencia de sesiones se activa al crear un equilibrador de carga o al crear un juego de backends. También se puede editar un juego de backends existente para activar, desactivar o cambiar la configuración de persistencia de sesiones.

El servicio de equilibrio de carga ofrece dos configuraciones basadas en cookies que se excluyen mutuamente para permitir la persistencia de sesiones: la permanencia de cookies de la aplicación y la permanencia de cookies del equilibrador de carga.

Nota

Persistencia de sesiones basada en dirección IP

Algunos productos ofrecen soporte para la sesión sin cookies. Estos productos dependen de la dirección IP de la solicitud entrante. Los proxies ISP y los gateways de salida de la compañía pueden emitir muchas solicitudes desde una única dirección IP. En este caso, un único servidor backend puede estar sujeto a grandes volúmenes de tráfico. El conjunto de backends puede verse abrumado, servidor por servidor, aunque sea posible hacer un equilibrio de carga efectivo.

Otro punto débil de la persistencia de sesiones controlada por dirección IP es que la dirección IP de origen puede cambiar. En ese caso, puede haberse perdido la persistencia de sesiones o haberse redireccionado la solicitud al servidor backend incorrecto.

Persistencia de cookies de aplicación

Para configurar la persistencia de sesiones de cookie de aplicación, solo tiene que especificar un nombre de cookie. Por defecto, el tráfico de un cliente de sesión persistente se redirige a un servidor backend diferente cuando el servidor original no está disponible. Este comportamiento de reserva no se puede desactivar.

El servicio de equilibrio de carga activa la persistencia de sesiones de cookies de aplicación (persistencia) cuando un servidor backend envía una cabecera de respuesta Set-Cookie que contiene un nombre de cookie reconocido. El nombre de cookie debe coincidir con el nombre especificado en la configuración del juego de backends. Si la configuración especifica un patrón de coincidencia total ( "*") cualquier cookie definida por el servidor activará la persistencia de sesiones. A menos que un servidor backend active la persistencia de sesiones, el servicio sigue la política de equilibrio de carga especificada al crear el equilibrador.

Requisitos:

  • El equilibrador de carga debe funcionar en modo HTTP para que admita la persistencia de sesiones del servidor basada en cookies.

  • El cliente debe aceptar cookies para que la persistencia de la sesión de equilibrio de carga funcione.

Cómo Funciona:

El servicio de equilibrio de carga calcula un hash de la cookie configurada y otros parámetros de solicitud, y envía dicho valor al cliente en una cookie. El valor almacenado en la cookie permite al servicio direccionar las solicitudes de cliente posteriores al servidor backend correcto. Si los servidores backend cambian cualquiera de las cookies definidas, el servicio vuelve a calcular el valor de la cookie y lo vuelve a enviar al cliente.

Nota

Le recomendamos que trate los datos de cookie como una entidad opaca. No los utilice en las aplicaciones.

El servidor backend puede detener la persistencia de cookies de aplicación eliminando la cookie de persistencia de sesiones. Si se ha utilizado el patrón de coincidencia total, deben eliminarse todas las cookies. Las cookies se eliminan enviando una cabecera de respuesta Set-Cookie con una fecha de caducidad pasada. El servicio de equilibrio de carga direcciona las solicitudes posteriores utilizando la política de equilibrio de carga configurada.

Persistencia de cookie de equilibrador de carga

Al configurar la persistencia de cookie del equilibrador de carga, el equilibrador de carga inserta una cookie en la respuesta. Los parámetros configurados en la cookie permiten la persistencia de sesiones. Este método resulta útil si dispone de aplicaciones y servicios de backend web que no pueden generar sus propias cookies.

Para configurar la persistencia de sesiones de cookies del equilibrio de carga, debe especificar estos parámetros y valores:

El nombre de la cookie

Si no especifica un nombre de cookie, el nombre predeterminado será X-Oracle-BMC-LBS-Route.

Nota

Asegúrese de que el nombre de cookie utilizado en los servidores de aplicaciones backend sea diferente al nombre de cookie utilizado en el equilibrador de carga. Para minimizar la posibilidad de conflicto de nombres, se recomienda utilizar un prefijo como X-Oracle-OCI-.

Si un servidor backend y el equilibrador de carga insertan cookies con el mismo nombre, el comportamiento del cliente o el explorador puede variar en función del valor de dominio asociado a la cookie. Si los valores de dominio y nombre de la cabecera Set-cookie (generada por un servidor backend) y la cabecera Set-cookie (generada por el equilibrador de carga) son iguales, el cliente o el explorador los tratará como una cookie. El cliente solo devuelve uno de los valores de cookie en solicitudes posteriores. Si ambos nombres de Set-cookie son los mismos, pero los nombres de dominio son diferentes, el cliente o el explorador los considera como dos cookies diferentes.

Dominio en el que la cookie es válida

La cabecera Set-cookie insertada por el equilibrio de carga contiene un atributo de dominio con el valor especificado. Este atributo no tiene valor predeterminado. Si no especifica un valor, el equilibrador de carga no inserta el atributo de dominio en la cabecera Set-cookie.

Nota

  • RFC 6265: el mecanismo de gestión de estado HTTP describe el comportamiento del cliente y del explorador cuando el atributo de dominio está o no presente en la cabecera Set-cookie.

    Si el valor del atributo Domain es example.com en la cabecera Set-cookie, el cliente incluye la misma cookie en la cabecera Cookie al realizar solicitudes HTTP a example.com, www.example.com y www.abc.example.com. Si el atributo Domain no está presente, el cliente devuelve la cookie solo para el dominio al que se ha realizado la solicitud original.

  • Asegúrese de que este atributo especifique el valor de dominio correcto. Si el atributo Domain de la cabecera Set-cookie no incluye el dominio al que se realizó la solicitud original, el cliente o el explorador podrá rechazar la cookie. Como se especifica en RFC 6265, el cliente acepta una cookie con el valor del atributo Domain example.com o www.example.com enviado desde www.example.com. No acepta ninguna cookie con el atributo Domain abc.example.com o www.abc.example.com enviado de www.example.com.

Ruta de URI en la que la cookie es válida

La cabecera Set-cookie insertada por el equilibrio de carga contiene un atributo Path con el valor especificado. Los clientes incluyen la cookie en una solicitud HTTP solo si la parte de ruta de acceso de request-uri coincide o es un subdirectorio del atributo de ruta de acceso de la cookie. El valor por defecto es "/".

La cantidad de tiempo que la cookie sigue siendo válida

La cabecera Set-cookie insertada por el equilibrio de carga contiene un atributo Max-Age con el valor especificado. El valor especificado debe ser al menos un segundo. No existe ningún valor por defecto para este atributo. Si no especifica un valor, el equilibrador de carga no incluye el atributo de edad máxima en la cabecera Set-cookie. Normalmente, el cliente o el explorador retienen la cookie hasta que finaliza la sesión actual, según lo definido por el cliente.

Si la cabecera Set-cookie debe contener el atributo Secure

El atributo Secure dirige el cliente o el explorador para que envíe la cookie utilizando únicamente un protocolo seguro.

Nota

Si define este campo en true, no puede asociar el juego de backends correspondiente a un listener HTTP.

Si la cabecera Set-cookie debe contener el atributo HttpOnly

El atributo HttpOnly limita el ámbito de la cookie a las solicitudes HTTP. Este atributo dirige al cliente o explorador para que omita la cookie al proporcionar acceso a cookies mediante API que no son HTTP. Por ejemplo, restringe la cookie de los canales de JavaScript.

Si desactivar la reserva para servidores no disponibles

Consulte la sección Reserva a continuación.

Nota

Las reglas de ruta de acceso tienen prioridad para determinar el servidor de backend de destino. El equilibrador de carga verifica que la persistencia de sesión está activada para el servidor backend y que la configuración de cookie es válida para el destino. El sistema ignora las cookies no válidas.

Reserva

Por defecto, el servicio de equilibrio de carga direcciona el tráfico de un cliente de sesión persistente a un servidor backend diferente cuando el servidor original no está disponible. Es posible configurar el juego de backends para desactivar este comportamiento de reserva. Al desactivar la reserva, el equilibrador de carga falla la solicitud y devuelve un código HTTP 502. El servicio devuelve un HTTP 502 hasta que el cliente deja de presentar una cookie de sesión persistente.

Atención

Si la reserva está desactivada, las cookies con una fecha de caducidad futura lejana pueden provocar una interrupción del cliente.

Nota

El servicio de equilibrio de carga tiene en cuenta un servidor marcado como vaciado disponible para las sesiones persistentes existentes. Las nuevas solicitudes que no forman parte de una sesión persistente existente no se envían a ese servidor.