ADC

Personalizar el algoritmo hash para persistencia en servidores virtuales

El dispositivo NetScaler 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 del mismo servidor, el algoritmo genera diferentes valores de hash. Por lo tanto, diferentes servidores virtuales de equilibrio de carga pueden enviar solicitudes para la misma aplicación a diferentes servicios, lo que interrumpe la pseudopersistencia.

Como alternativa a utilizar el número de puerto para generar el valor de hash, puede especificar un identificador de 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 a más de un tipo de aplicación, cada tipo de aplicación debe tener un identificador de hash único.

El algoritmo para calcular el valor de hash de 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 de hash.
  • Si configura un identificador de hash para un servicio, se usa y no el número de puerto, independientemente de la configuración global.
  • Si no configura un identificador de hash, sino que cambia el valor predeterminado de la configuración global para que no especifique el uso del número de puerto, el valor del hash se basará únicamente en la dirección IP del servicio.
  • Si no configura un identificador de hash ni cambia el valor predeterminado de la configuración global para usar el número de puerto, el valor de hash se basa en la dirección IP y el número de puerto del servicio.

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

Para cambiar la configuración global de uso del número de puerto mediante la CLI

En la línea de comandos, escriba:

parámetro set lb -usePortForHashLb (SÍ) 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
<!--NeedCopy-->

Para cambiar la configuración global de uso del número de puerto mediante la interfaz gráfica

  1. Vaya a Administración del tráfico > Equilibrio de carga > Configurar los 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 la línea de comandos, escriba los siguientes comandos para establecer el identificador de hash y comprobar la configuración:

añadir servicio < name > (< ip > < serverName >) < serviceType > < port > - HaShid < positive_integer >
show service <name>
<!--NeedCopy-->

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
<!--NeedCopy-->

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

Escriba el comando set service, el nombre del servicio y -HaShiD seguidos del valor de ID.

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

Para especificar un identificador hash para cada miembro que se va a añadir al grupo y comprobar la configuración, en la línea de comandos, escriba los siguientes comandos (asegúrese de especificar un HashID único para cada miembro). ):

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

show servicegroup <serviceGroupName>
<!--NeedCopy-->

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

<!--NeedCopy-->

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

  1. Vaya a Traffic Management > Load Balancing > Services.
  2. Cree un nuevo servicio o abra un servicio existente y especifique el identificador de hash.

Para especificar un identificador de hash para un miembro del grupo de servicios ya configurado mediante la GUI

  1. Vaya a Administración del tráfico > Equilibrio de carga > Grupos de servicios.
  2. Abre un miembro y escribe un identificador de hash único.