Persistencia de sesiones del equilibrador de carga
Utilice la perseverancia de sesión con un equilibrador de carga para dirigir todas las solicitudes de un único cliente lógico a un único servidor web backend.
La persistencia de sesiones es un método para dirigir todas las solicitudes que se originan desde un cliente lógico independiente a un servidor web de 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.
Cookies fijadas
El servicio Load Balancer ofrece dos configuraciones basadas en cookies que se excluyen mutuamente para permitir la persistencia de sesiones:
Persistencia de sesiones basada en dirección IP
Algunos productos ofrecen soporte para la persistencia de sesiones 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 colapsarse, servidor por servidor, aunque sea posible hacer un equilibrio de carga efectivo.
Otro punto débil de la persistencia de sesiones controlada basada en 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 cookie de aplicación
Para configurar la persistencia de sesiones de cookie de aplicación, debe especificarse un nombre de cookie y decidir si se desactiva la reserva para los servidores no disponibles.
El servicio Load Balancer activa la persistencia (persistencia) de sesión de cookie de aplicación cuando un servidor backend envía una cabecera Set-Cookie
de respuesta que contiene un nombre del 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 de carga.
Requisitos:
- El equilibrador de carga debe funcionar en modo HTTP para que admita la persistencia de sesiones del servidor basada en cookies.
- El equipo cliente debe aceptar cookies para que la función de persistencia de sesiones de Load Balancer funcione.
El servicio Load Balancer calcula un hash de la cookie configurada y otros parámetros del pedido, y envía dicho valor al cliente en una cookie. El valor almacenado en la cookie permite al servicio direccionar las solicitudes del cliente posterior 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.
Le recomendamos que trate los datos de cookies como una entidad opaca. No los utilice en las aplicaciones.
El servidor backend puede detener la persistencia de cookie 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 Load Balancer direcciona las solicitudes posteriores utilizando la directiva 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 del backend web que no puedan generar sus propias cookies.
Para configurar la persistencia de sesiones de cookie del equilibrio de carga, debe especificarse:
- El nombre de la cookie.
Si usted no especifica un nombre de cookie, el nombre predeterminado es
X-Oracle-BMC-LBS-Route
.Nota
Asegúrese de que el nombre del cookie utilizado en los servidores de aplicaciones backend sea diferente al nombre del cookie utilizado en el equilibrador de carga. Para minimizar la posibilidad de conflicto de nombres, le recomendamos que utilice un prefijo comoX-Oracle-OCI-
.Si un servidor de 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 de backend) y la cabeceraSet-cookie
(generada por el equilibrador de carga) son iguales, el cliente o el explorador los tratarán como una cookie. El cliente solo devuelve uno de los valores del cookie en solicitudes futuras. Si ambos nombres deSet-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 equilibrador de carga contiene un atributo de dominio con el valor especificado.Este atributo no tiene valor predeterminado. Si usted 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
esexample.com
en la cabeceraSet-cookie
, el cliente incluye la misma cookie en la cabeceraCookie
al realizar solicitudes HTTP aexample.com
,www.example.com
ywww.abc.example.com
. Si el atributoDomain
no se encuentra, 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 cabeceraSet-cookie
no incluye el dominio al que se realizó la solicitud original, el cliente o un explorador podrán rechazar la cookie. Como se especifica en el RFC 6265, el cliente acepta una cookie con el valor del atributoDomain
example.com
owww.example.com
enviado desdewww.example.com
. No acepta ni una cookie con el atributoDomain
abc.example.com
owww.abc.example.com
enviado dewww.example.com
.
- 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
- Ruta de URI en la que la cookie es válida. La cabecera
Set-cookie
insertada por el equilibrador de carga contiene un atributoPath
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 atributoPath
de la cookie.El valor por defecto es `/`.
- Cantidad de tiempo que la cookie sigue siendo válida. La cabecera
Set-cookie
insertada por el equilibrador de carga contiene un atributoMax-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
Max-Age
en la cabeceraSet-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 atributoSecure
. El atributoSecure
dirige el cliente o el explorador para que envíe la cookie usando únicamente un protocolo seguro.Nota
Si define este campo en true, no podrá asociar el juego que corresponda a un listener HTTP.
- Si la cabecera
Set-cookie
debe contener el atributoHttpOnly
. El atributoHttpOnly
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. - Indica si desactivar la reserva para servidores no disponibles.
Las reglas de ruta de acceso tienen prioridad para decidir el servidor 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 Load Balancer dirige el tráfico de un cliente de sesión persistente a un servidor de backend diferente cuando el servidor original no está disponible. Es posible configurar el juego de backends para desactivar este comportamiento de reserva. Cuando se desactiva la reserva, el equilibrador de carga falla la solicitud y devuelve un código HTTP 502. El servicio sigue devolviendo un HTTP 502 hasta que el cliente deja de presentar una cookie de sesión persistente.
Si la reserva está desactivada, las cookies con una fecha de caducidad futura distante pueden causar una interrupción del cliente.
El servicio de equilibrador de carga tiene en cuenta un servidor marcado como drain
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.