Personalizar el algoritmo hash para la persistencia en los servidores virtuales

El dispositivo Citrix ADC utiliza algoritmos basados en hash para mantener la persistencia en los servidores virtuales. De forma predeterminada, el método de equilibrio de carga basado en hash utiliza un valor hash de la dirección IP y el número de puerto del servicio. Si un servicio está disponible en diferentes puertos en el mismo servidor, el algoritmo genera diferentes valores hash. Por lo tanto, diferentes servidores virtuales de equilibrio de carga pueden enviar solicitudes para la misma aplicación a diferentes servicios, rompiendo la pseudo-persistencia.

Como alternativa al uso del número de puerto para generar el valor hash, puede especificar un identificador hash único para cada servicio. Para un servicio, se debe especificar el mismo valor de identificador de hash en todos los servidores virtuales. Si un servidor físico sirve más de un tipo de aplicación, cada tipo de aplicación debe tener un identificador hash único.

El algoritmo para calcular el valor hash para un servicio funciona de la siguiente manera:

  • De forma predeterminada, una configuración global especifica el uso del número de puerto en un cálculo hash.
  • Si configura un identificador hash para un servicio, se utiliza y el número de puerto no lo es, independientemente de la configuración global.
  • Si no configura un identificador hash, pero cambia el valor predeterminado de la configuración global para que no especifique el uso del número de puerto, el valor hash se basa únicamente en la dirección IP del servicio.
  • Si no configura un identificador hash o cambia el valor predeterminado de la configuración global para utilizar el número de puerto, el valor hash se basa en la dirección IP y el número de puerto del servicio.

También puede especificar identificadores hash cuando utilice la CLI para enlazar servicios a un grupo de servicios. En la utilidad de configuración, puede abrir un grupo de servicios y agregar identificadores hash en la ficha Miembros.

Para cambiar la configuración global use-port-number mediante la CLI

En el símbolo del sistema, escriba:

set lb parámetro -UsePortForHashLB (YES NO)

Ejemplo:

> set lb parameter -usePortForHashLb NO
 Done
>show lb parameter
Global LB parameters:
        Persistence Cookie HttpOnly Flag: DISABLED
        Use port for hash LB: NO
 Done

Para cambiar la configuración global use-port-number mediante la interfaz gráfica de usuario

  1. Vaya a Administración del tráfico > Equilibrio de carga > Configurar parámetros de Equilibrio de carga.
  2. Seleccione o desactive Usar puerto para métodos LB basados en hash.

Para crear un nuevo servicio y especificar un identificador hash para un servicio mediante la CLI

En el símbolo del sistema, escriba los siguientes comandos para establecer el ID de hash y verificar la configuración:

< ip >agregar servicio < name > ( < serverName > < positive_integer >) < serviceType > < port > -Hashid
show service <name>

Ejemplo:

> add service flbkng 10.101.10.1 http 80 -hashId 12345
 Done
>show service flbkng
        flbkng (10.101.10.1:80) - HTTP
        State: DOWN
        Last state change was at Thu Nov  4 10:14:52 2010
        Time since last state change: 0 days, 00:00:15.990
        Server Name: 10.101.10.1
        Server ID : 0   Monitor Threshold : 0

        Down state flush: ENABLED
        Hash Id: 12345

1)      Monitor Name: tcp-default
                State: DOWN     Weight: 1

 Done

Para especificar un identificador hash para un servicio existente mediante la CLI

Escriba el comando set service, el nombre del servicio y -hashid seguido del valor de ID.

Para especificar un identificador hash al agregar un miembro del grupo de servicios

Para especificar un identificador hash para cada miembro que se agregará al grupo y verificar la configuración, en el símbolo del sistema, escriba los comandos siguientes (Asegúrese de especificar un HaShid único para cada miembro. ):

bind servicegroup <serviceGroupName> <memberName> <port> -hashId <positive_integer>

show servicegroup <serviceGroupName>

Ejemplo:

 bind servicegroup http_svc_group 10.102.27.153 80 -hashId 2222222

>show servicegroup SRV
        SRV - HTTP
        State: ENABLED  Monitor Threshold : 0
        …

        1)         1.1.1.1:80   State: DOWN     Server Name: 1.1.1.1    Server ID: 123  Weight: 1
        Hash Id: 32211

                Monitor Name: tcp-default       State: DOWN
        …

        2)         2.2.2.2:80   State: DOWN     Server Name: 2.2.2.2    Server ID: 123  Weight: 1
        Hash Id: 12345

                Monitor Name: tcp-default       State: DOWN
        …
Done

Para especificar un identificador hash para un servicio mediante la interfaz gráfica de usuario

  1. Vaya a Gestión del Tráfico > Equilibrio de Carga > Servicios.
  2. Cree un nuevo servicio o abra un servicio existente y especifique el ID de hash.

Para especificar un identificador hash para un miembro del grupo de servicios ya configurado mediante la interfaz gráfica de usuario

  1. Vaya a Gestión de tráfico > Equilibrio de carga > Grupos de servicio.
  2. Abra un miembro y escriba un ID de hash único.