A.
"Guía de resolución de problemas del Data Center": blog de Gilles Dufour.
Pegajosidad (2a parte)
La resolución de problemas de adhesividad no es una tarea fácil.
No existe ninguna opción de depuración para saber por qué ACE decidió enviar una conexión a un servidor específico.
Hay algunos errores comunes que podemos detectar al observar las estadísticas.
Aquí está el más conocido.
1. Sea cual sea el tipo de pegajosa que seleccionó, cuando la razón para no pegarse a un servidor es si la entrada pegajosa agotó el tiempo de espera o fue eliminada debido a la falta de recursos pegajosos. Por lo tanto, verifique su asignación de recursos persistente con el siguiente comando :
AceC6k2 Admin# show np 1 me-stats "-slb -v"
LB Perf stats at address 0x82e05000
LB Perf stats at address 0x82e05000
Estadísticas de LB
--------------
(Estadísticas de contexto de ALL)
...
Núm. Robado Para Reutilización: 0 0
Número de entrada persistente activa: 0 0
Número de entradas adhesivas inversas activas: 0 0
Recuento de conexiones activas: 0 0
Recuento de entradas rápidas gratuitas: 1794111 0
Núm. de nodos de tiempo de espera o grupo: 4 0
Recuento de lista de entradas estáticas: 0 0
Nº de entradas configuradas: 1794111 0
Solicitud de recursos anteriores: 1794111 0
Descartar la clave remota máxima:
0 0
El "Num Stolen For Reuse" indica que no tiene suficientes recursos pegajosos y que las entradas pegajosas antiguas se eliminaron para guardar las nuevas. Esta es una posible razón para errores persistentes. Para resolver este problema, puede incrementar el recurso persistente o para sticky source ip, puede cambiar la máscara de modo que una entrada pueda ser utilizada para todos los clientes que pertenecen a la misma subred.
"Drop Max Remote Stky" cuenta el número de búsquedas rápidas que fallaron porque la comunicación entre los componentes internos es demasiado lenta para procesar todas las búsquedas rápidas.
2. Si ha configurado cualquier forma de adhesividad HTTP (cookie, encabezado, ...), una razón para ver las fallas persistentes son los errores de análisis http. ACE tendrá que analizar el encabezado HTTP para encontrar la información necesaria para realizar la adhesividad (por ejemplo: cookie). Si la solicitud HTTP está mal formada, ACE no analizará correctamente los datos y ni siquiera intentará realizar una búsqueda persistente. Verifique si no hubo ningún error de análisis con el comando :
AceC6k2/Admin# show np 1 me-stats "-shttp -v" | i partes
Análisis de segunda pasada: 0 0
Errores de análisis estático: 0 0
Máximo de errores de análisis: 0 0
AceC6k2/Admin#
Si ve "Errores de análisis estático" que podrían explicar su falla persistente. Desafortunadamente, no hay solución aquí. Con ddts CSCtj42969
agregamos un nuevo comando para continuar analizando los datos http incluso cuando se detectó un error. Consulte la entrada de blog anterior para obtener más información.
"Max parselen errors" es el resultado de que los encabezados http son demasiado grandes y los datos que necesitamos están más allá de nuestro buffer. Puede ajustar el tamaño del búfer de análisis con un mapa de parámetros
AceC6k2/Admin(config)# parámetro-map type http ParseLen
AceC6k2/Admin(config-parammap-http)# set ?
content-maxparse-length Configurar contenido maxparse length
header-maxparse-length Configure header maxparse length
secondary-cookie-delimiters Configurar el delimitador de URL/COOKIE (cookie-in-url-query)
Claramente, las estadísticas anteriores no pueden explicar todos los posibles problemas persistentes. A menudo tenemos que capturar rastros de sabueso y volcar la tabla pegajosa regularmente para tratar de entender lo que está pasando.
Esta es la razón por la que he introducido un nuevo comando en la versión 4.1.x para enumerar las conexiones vinculadas a una entrada fija en particular.
CSCti03084
: Enh: show conn sticky - muestra las conexiones vinculadas a un sticky
A continuación se explica cómo utilizar este nuevo comando.
Primero, enumere las entradas adhesivas en el modo "detalle" (el comando está oculto) y extraiga la ID de entrada interna.
Scimitar1/Admin# show sticky data detail
processor (0/0): 0
results index: 1 of 1
sticky group: RESERVATIONS_STICKY
sticky type: IP
rserver: vmware-46
realPort: 80
timeout (secs): 1200
sticky-entry: 192.168.20.0
internal entry-id: 0x200004
time-to-expire (secs): 1198
stcky-hit-count: 63402
active-conn-count: 1
in-use reference count: 0
static entry: FALSE
reverse entry: FALSE
active entry: TRUE
timeout-active-conns: FALSE
created-from-HA-peer: FALSE
HA-replicated-at-least-once: TRUE
With the internal entry-id you can list all connections using that entry.
Scimitar1/Admin# show conn sticky 0x200004
conn-id np dir proto vlan source destination state
----------+--+---+-----+----+---------------------+---------------------+------+
653622 1 in TCP 20 192.168.20.45:47377 192.168.20.15:80 SYNSEEN
658234 1 out TCP 40 192.168.40.46:80 192.168.20.45:47377 INIT
Scimitar1/Admin#
También puede recuperar el id de entrada interno utilizado por una conexión.
Para ello, necesita conocer el conn-id y el NP al que está asociada la conexión.
switch/Admin# show np 1 me-stats "-c 242"
Connection ID:seq: 242[0xf2].0
Other ConnID : 243[0xf3].0
Proxy ConnID : 0[0x0].0
Next Q : 0[0x0]
192.168.20.45:44425 -> 192.168.20.15:80 [RX-NextHop: TX] [TX-NextHop: TX]
Flags: PAT: No DynNAT: No Implicit PAT: No On_Reuse: No
L3 Protocol : IPv4 L4 Protocol : 6
Inbound Flag : 1
Interface Match : Yes
Interface MatchID: 3
EncapsID:ver : 45:0 TCP ACK delta : 0xc8228d7e
MSS : 1460 TOS Stamp : 0
Repeat mode : No Punt Flag : No
TOS Stamp : No TCP Window Check: No
ACE ID : 98 NAT Policy ID : 0
Post NAT hop : 0
Packet Count : 5 Byte Count : 309
TCP Information: (State = 3)
Window size : 6432 Window scale : 0
FIN seen : No FIN/ACK seen : No
FIN/ACK exp : No Close initiator : No
FIN/ACK expval: 5b40000 Last seq : 9f50cfc0
timestamp_delta: 0 Last ack : 947b3980
Data/ACK Trigger : 947b3980 Trigger Status : 1
Timestamp : 39cd8
TCP options negotiated:
Sack:Clear TS:Clear Windowscale: Clear
Reserved: Allow Exceed MSS: Deny Window var: Allow
Sticky Internal Entry-id : 0x200006
Raw Connection Entry
0000 0x00000000 0xc0a8142d 0xc0a8140f 0x06090003
0010 0xad890050 0xc8228d7e 0x002d0000 0x05b40000
0020 0x000000f3 0x00000000 0x080a2480 0x24450000
0030 0x00000005 0x00000135 0x19200030 0x05b40000
0040 0x9f50cfc0 0x947b3980 0x00039cd8 0x00000000
0050 0x00000062 0x947b3980 0x00039cb1 0x00000000
0060 0x00000000 0x00000000 0x00000000 0x00000000
0070 0x0000bc90 0x00000000 0x00000000 0x00000000
switch/Admin#
Can not view this . file attachment inline, please click on the following link to view the attachment.
http://cdetsweb-prd.cisco.com/apps/dumpcr_att?identifier=CSCti03084&title=Diffs-commit-converge_dev&ext=&type=FILE
Can not view this . file attachment inline, please click on the following link to view the attachment.
Can not view this . file attachment inline, please click on the following link to view the attachment.
http://cdetsweb-prd.cisco.com/apps/dumpcr_att?identifier=CSCti03084&title=Diffs-commit-converge_dev.p2&ext=&type=FILE
Can not view this . file attachment inline, please click on the following link to view the attachment.
Can not view this . file attachment inline, please click on the following link to view the attachment.
http://cdetsweb-prd.cisco.com/apps/dumpcr_att?identifier=CSCti03084&title=Scimitar-code-review&ext=&type=FILE
Can not view this . file attachment inline, please click on the following link to view the attachment.
Otra nueva función que introduje en la versión 4.1.x es CSCth64697
: Enh: Nuevo comando show para mostrar el resultado de hash de http url/cookie
| Qué | Qué Malo | Who | Versiones | ||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
|
| Historial |
|---|
Histogram of CSCti03084 N -> A [ 0] | <-----------------------------------+-----------------------------------> |
| cdetsadm | 11/30/2010 15:15:24 | Versiones integradas: | —> 3.0(0)A90(7.0.12) |
| cdetsadm | 11/01/2010 13:42:20 | Versiones integradas: | —> 3.0(0)A4(1.0) |
| gdufour | 10/19/2010 00:22:06 | Indicador de aprobación de RNE: | N —> |
| gdufour | 10/19/2010 00:22:06 | Título de la nota: | —> V-comments |
| gdufour | 10/19/2010 00:22:05 | Activado por comprobación: | —> 19/10/2010 00:22:05 |
| gdufour | 10/19/2010 00:22:05 | Verificador: | —> gdufour |
| gdufour | 10/19/2010 00:21:59 | Confianza verificada: | —> probado |
| gdufour | 10/19/2010 00:20:32 | Estado: | R —> V |
| gdufour | 10/19/2010 00:22:05 | Versión verificada: | —> 3.0(0)A4(1.0.5) |
| cms | 10/04/2010 07:12:07 | Nombre de archivo: | —> Scimitar-code-review |
| cdetsadm | 09/23/2010 10:30:36 | Versiones integradas: | —> 3.0(0)A90(4.0.38) |
| cdetsadm | 09/07/2010 11:35:29 | Versiones integradas: | —> 3.0(0)A4(0.99.214) |
| gdufour | 09/06/2010 00:56:13 | Indicador de aprobación de RNE: | N —> |
| gdufour | 09/06/2010 00:56:13 | Título de la nota: | —> R-comments |
| gdufour | 09/06/2010 00:56:13 | Resuelto el: | 29/07/2010 04:09:36 —> 09/06/2010 00:56:12 |
| gdufour | 09/06/2010 00:55:57 | Estado: | A —> R |
| divjain | 09/06/2010 00:51:22 | Indicador de aprobación de RNE: | N —> |
| divjain | 09/06/2010 00:51:22 | Título de la nota: | —> A-comments |
| divjain | 09/06/2010 00:51:22 | Asignador: | gdufour —> divjain |
| divjain | 09/06/2010 00:51:22 | Fecha asignada: | 26/07/2010 06:19:33 —> 09/06/2010 00:51:22 |
| divjain | 09/06/2010 00:51:07 | Estado: | R —> A |
| gdufour | 09/06/2010 00:42:03 | Nombre de archivo: | —> Diffs-commit-converge_dev.p2 |
| cdetsadm | 08/25/2010 13:05:01 | Versiones integradas: | —> 3.0(0)A90(4.0.27) |
| rahul | 08/01/2010 23:52:20 | Encontrado: | de-test —> development |
| cdetsadm | 07/31/2010 07:09:49 | Versiones integradas: | —> 3.0(0)A4(0.99.180) |
| kavenkat | 07/29/2010 14:19:33 | Atributo2: | Fusión —> FUSIÓN |
| gdufour | 07/29/2010 04:09:36 | Resuelto el: | —> 29/07/2010 04:09:36 |
| gdufour | 07/29/2010 04:09:28 | Documentos cambiados: | —> ninguno |
| gdufour | 07/29/2010 04:09:28 | Estado: | O —> R |
| gdufour | 07/29/2010 04:05:46 | Nombre de archivo: | —> Diffs-commit-converge_dev |
| gdufour | 07/28/2010 02:03:37 | Regresión: | —> N |
| gdufour | 07/28/2010 02:03:47 | Revisor de código: | —> bblanco |
| gdufour | 07/28/2010 02:02:52 | Nota: | Static-analysis-runinfo —> Static-analysis-runinfo |
| gdufour | 07/28/2010 01:59:11 | Indicador de aprobación de RNE: | N —> |
| gdufour | 07/28/2010 01:59:11 | Título de la nota: | —> Static-analysis-runinfo |
| gdufour | 07/26/2010 08:04:54 | Indicador de aprobación de RNE: | N —> |
| gdufour | 07/26/2010 08:04:54 | Título de la nota: | —> AUT |
| gdufour | 07/26/2010 07:21:27 | Estado: | A —> O |
| cms | 07/26/2010 07:17:50 | Nombre de archivo: | —> Scimitar-code-review |
| gdufour | 07/26/2010 06:24:00 | Indicador de aprobación de RNE: | N —> |
| gdufour | 07/26/2010 06:24:00 | Título de la nota: | —> Prueba unitaria |
| gdufour | 07/26/2010 06:19:54 | Título de la nota: | —> Release-note |
| gdufour | 07/26/2010 06:19:33 | Asignador: | —> gdufour |
| gdufour | 07/26/2010 06:19:33 | Fecha asignada: | —> 26/07/2010 06:19:33 |
| gdufour | 07/26/2010 06:19:33 | Ingeniero: | —> gdufour |
| gdufour | 07/26/2010 06:19:28 | Estado: | N —> A |
| gdufour | 07/26/2010 06:19:18 | Defecto creado: | -- > |
A continuación se muestra un ejemplo de cómo utilizar este comando.
Una función fija con frecuencia convierte los datos de entrada en un valor de 64 bits. Este es el valor que guardamos en nuestra entrada fija y que utilizamos para hacer coincidir los nuevos datos de entrada con las entradas existentes.
Por lo tanto, cuando se muestra una base de datos pegajosa, por lo general una entrada pegajosa que es un gran número.
Es imposible recuperar los datos originales del valor hash.
ctw1prod001/maxcon# show sticky database group group1
sticky group : group1
type : HTTP-COOKIE
timeout : 5 timeout-activeconns : TRUE
sticky-entry rserver-instance time-to-expire flags
---------------------+--------------------------------+--------------+-------+
18119923635054054134 rser3:0 293 -
5834233610907968705 rser2:0 6 -
Until version 4.1.x it was also impossible to know the hash value from the original data.
This is why the command show sticky hash is useful. This command will hash whatever text you provide and return the hash value in hexadecimal and decimal.
ctw1prod001/maxcon# show sticky hash cisco123
Hash: 0x50f75c8edad064c1 - 5834233610907968705
ctw1prod001/maxcon# show sticky hash testing123
Hash: 0xfb76e68ae89a0af6 - 18119923635054054134
ctw1prod001/maxcon#
In the example above, the text cisco123 is hashed into value 5834233610907968705
This value correspond to the sticky entry pointing to rser2:0
Below is another example with cookie insert.
ctw1prod001/maxcon# sh sticky cookie-insert group group1
Cookie | HashKey | rserver-instance
------------+----------------------+----------------------------------------+
R876364218 | 8016668853981260554 | s1/rser1:0
R876365307 | 1555693097661300743 | s1/rser2:0
R876366396 | 9600904050871858939 | s1/rser3:0
R876367485 | 3122196043780649991 | s1/rser4:0
R2830679934 | 17805359266603035579 | s2/rser4:0
R2830681023 | 81717080676150073 | s2/rser5:0
ctw1prod001/maxcon# sh sticky hash R876364218
Hash: 0x6f40edd93b7dab0a - 8016668853981260554
ctw1prod001/maxcon# sh sticky hash R2830681023
Hash: 0x12251407dc8ab39 - 81717080676150073
ctw1prod001/maxcon#
Y esto terminará nuestra revisión de la adherencia.
Gracias,
Gilles Dufour
| Revisión | Fecha de publicación | Comentarios |
|---|---|---|
1.0 |
15-Jul-2026
|
Versión inicial |