Cómo funciona la característica de afinidad para Load Balancer

Para los componentes Dispatcher y CBR: habilite la característica de afinidad cuando configure un puerto de clúster para que sea permanente en memoria. Si configura que el puerto de un clúster sea permanente en memoria, las solicitudes de cliente subsiguientes se podrán dirigir al mismo servidor. Esto se lleva a cabo estableciendo stickytime en el nivel de ejecutor, clúster o puerto en algunos segundos. Esta característica se inhabilita estableciendo el tiempo de permanencia en memoria (stickytime) en el valor cero.

Si está habilitando la afinidad entre puertos, los valores de tiempo de permanencia en memoria (stickytime) de los puertos compartidos deben ser valores iguales (no cero). Consulte el apartado Afinidad entre puertos para obtener más información.

Para el componente Site Selector: habilite la característica de afinidad cuando configure un nombre de sitio para que sea permanente en memoria. Si configura un nombre de sitio para que sea permanente en memoria, el cliente podrá utilizar el mismo servidor para varias peticiones del servicio de nombres. Esto se lleva a cabo estableciendo stickytime del nombre del sitio en algunos segundos. Esta característica se inhabilita estableciendo el tiempo de permanencia en memoria (stickytime) en el valor cero.

El período de permanencia en memoria es el intervalo entre el cierre de una conexión y la apertura de una conexión nueva, durante el cual un cliente se volverá a enviar al mismo servidor utilizado durante la primera conexión. Cuando caduca el tiempo de permanencia en memoria, el cliente puede enviarse a un servidor distinto del primero. El valor de tiempo de permanencia en memoria para un servidor se configura mediante los mandatos dscontrol, executor, port o cluster.

Comportamiento cuando la afinidad está inhabilitada

Con la característica de afinidad inhabilitada, siempre que se recibe una nueva conexión TCP de un cliente, Load Balancer elige el servidor correcto en dicho momento y le reenvía los paquetes. Si llega una conexión subsiguiente procedente del mismo cliente, Load Balancer la trata como si fuera una nueva conexión no relacionada y elige de nuevo el servidor apropiado para dicho momento.

Comportamiento cuando la afinidad está habilitada

Con la característica de afinidad habilitada, si se recibe una solicitud subsiguiente del mismo cliente, la solicitud se dirige al mismo servidor.

Con el tiempo, el cliente terminará el envío de transacciones y el registro de afinidad desaparecerá. De ahí el significado de "tiempo de permanencia en memoria." Cada registro de afinidad existe durante el "tiempo de permanencia en memoria" en segundos. Cuando se reciben conexiones subsiguientes dentro del tiempo de permanencia en memoria, el registro de afinidad seguirá siendo válido y la solicitud se dirigirá al mismo servidor. Si no se recibe una conexión subsiguiente dentro del tiempo de permanencia en memoria, el registro se depura; una conexión que se recibe después de dicho tiempo tendrá un nuevo servidor seleccionado para la misma.

El mandato server down (dscontrol server down) se utiliza para poner un servidor fuera de línea. El servidor pasará a estar inactivo una vez que caduque el valor de tiempo de permanencia en memoria (stickytime).

Afinidad entre puertos

La afinidad entre puertos sólo se aplica a los métodos de reenvío MAC y NAT/NATP del componente Dispatcher.

La afinidad entre puertos es la característica de permanencia en memoria que se ha ampliado para cubrir varios puertos. Por ejemplo, si una petición de cliente se recibe primero en un puerto y la siguiente se recibe en otro puerto, la afinidad entre puertos permite a Dispatcher enviar la petición de cliente al mismo servidor. Para utilizar esta característica, los puertos deben:

Más de un puerto puede enlazar con el mismo crossport. Cuando llegan conexiones subsiguientes del mismo cliente al mismo puerto o a un puerto compartido, se accederá al mismo servidor. A continuación se muestra un ejemplo de cómo configurar varios puertos con una afinidad entre puertos para el puerto 10:

dscontrol port set clúster:20 crossport 10
dscontrol port set clúster:30 crossport 10
dscontrol port set clúster:40 crossport 10

Una vez que se ha establecido la afinidad entre puertos, tiene la flexibilidad de modificar el valor de tiempo de permanencia en memoria para el puerto. No obstante, se recomienda cambiar los valores de tiempo de permanencia en memoria para todos los puertos compartidos por el mismo valor; de lo contrario, pueden producirse resultados inesperados.

Para eliminar la afinidad entre puertos, establezca el valor de crossport de nuevo en el número de su propio puerto. Consulte el apartado dscontrol port — configurar puertos, para obtener información detallada sobre la sintaxis de mandato para la opción crossport.

Máscara de dirección de afinidad (stickymask)

La máscara de dirección de afinidad sólo se aplica al componente Dispatcher.

La máscara de dirección de afinidad es una mejora de la característica de permanencia en memoria para agrupar clientes basándose en las direcciones de subred comunes. Si especifica stickymask en el mandato dscontrol port se podrán ocultar los bits de orden superior comunes de la dirección IP de 32 bits. Si se configura esta característica, la primera vez que una petición de cliente realiza una conexión con el puerto, todas las peticiones subsiguientes procedentes de clientes con la misma dirección de subred (representada por la parte de la dirección que está enmascarada) se dirigirán al mismo servidor.

Nota:
Para poder habilitar skickymask, el valor stickytime debe ser un valor no cero.

Por ejemplo, si desea que todas las peticiones de clientes entrantes con la misma dirección de Clase A de red se dirijan al mismo servidor, establezca el valor de stickymask en 8 (bits) para el puerto. Para agrupar peticiones de clientes con la misma dirección de Clase B de red , establezca el valor de stickymask en 16 (bits). Para agrupar peticiones de clientes con la misma dirección de Clase C de red , establezca el valor de stickymask en 24 (bits).

Para obtener los mejores resultados, establezca el valor stickymask la primera vez que inicie Load Balancer. Si cambia el valor de stickymask de forma dinámica, los resultados pueden ser imprevisibles.

Interacción con afinidad entre puertos: si está habilitando la afinidad entre puertos, los valores de stickymask de los puertos compartidos deben ser los mismos. Consulte el apartado Afinidad entre puertos para obtener más información.

Para habilitar la máscara de dirección de afinidad, emita un mandato dscontrol port parecido al siguiente:

dscontrol port set cluster:port stickytime 10 stickymask 8

Los posibles valores de stickymask son 8, 16, 24 y 32. El valor 8 especifica los 8 primeros bits de orden superior de la dirección IP (dirección de Clase A de red) se ocultará. El valor 16 especifica los 16 primeros bits de orden superior de la dirección IP (dirección de Clase B de red) se ocultará. El valor 24 especifica los 24 primeros bits de orden superior de la dirección IP (dirección de Clase C de red) se ocultará. Si especifica el valor 32, está ocultando toda la dirección IP que inhabilita de hecho la característica de máscara de dirección de afinidad. El valor por omisión de stickymask es 32.

Consulte el apartado dscontrol port — configurar puertos, para obtener información detallada sobre la sintaxis de mandato para stickymask (característica de máscara de dirección de afinidad).

Desactivar temporalmente el manejo de conexiones de servidor

Desactivar temporalmente el manejo se aplica a Dispatcher y componentes CBR.

Para eliminar un servidor de la configuración de Load Balancer por cualquier razón (actualizaciones, ampliaciones, servicio, etc.), puede utilizar el mandato dscontrol manager quiesce. El submandato quiesce permite que las conexiones existentes finalicen (sin ser atendidas) y sólo remite las nuevas conexiones posteriores del cliente al servidor desactivado temporalmente si la conexión se ha designado como de permanencia en memoria y el tiempo de permanencia en memoria no ha caducado. El submandato quiesce no deja que se realicen otras conexiones nuevas al servidor.

Desactivar temporalmente el manejo de conexiones de permanencia en memoria

Utilice la opción quiesce “now" si ha fijado el tiempo de permanencia en memoria y desea enviar nuevas conexiones a otro servidor (en lugar de enviarlas al servidor desactivado temporalmente) antes de que caduque el tiempo de espera. A continuación se muestra un ejemplo de utilización de la opción now para desactivar temporalmente el servidor 9.40.25.67:

dscontrol manager quiesce 9.40.25.67 now

La opción now determina cómo se manejarán las conexiones de permanencia en memoria: