Evite un servidor defectuoso detrás del balanceador de carga

Evite un servidor defectuoso detrás del balanceador de carga

Ambiente

Tenemos una solución en ejecución que interactúa con la API de Twitter. El punto final de la API de Twitter es:

api.twitter.com

Realizamos muchas llamadas al punto final, pero muy raramente alcanzamos los límites de API definidos por Twitter.

Supongo que Twitter tiene un equilibrador de carga configurado en esa URL y redirige internamente a diferentes máquinas.

La solución es una aplicación .Net, en parte un ejecutable que realiza sondeos de datos y una aplicación web que se utiliza para responder y publicar tweets.

La cuestión

Una vez a la semana (a veces más) durante algunas horas, obtenemos la siguiente excepción registrada en los archivos de registro de nuestra aplicación web y ejecutable.

Inner Exception : System.Net.WebException: Unable to connect to the remote    
server ---> System.Net.Sockets.SocketException: A connection attempt failed 
because the connected party did not properly respond after a period of time, 
or established connection failed because connected host has failed to 
respond 185.45.5.33:443
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.GetResponse()
at Hammock.Web.WebQuery.ExecuteGetDeleteHeadOptions(WebRequest request, WebException& exception) in f:\src\hammock\src\net35\Hammock\Web\WebQuery.cs:line 1021

... Ommited rest of exception ...

Cuando hago un NSLOOKUPdesde el propio Servidor tengo el siguiente resultado

>nslookup api.twitter.com
Server:  4201082000200000000g00g021.ip.ssc.net
Address:  2001:820:2::9:218

Non-authoritative answer:
Name:    api.twitter.com
Addresses:  185.45.5.33
            185.45.5.44

Cada vez que hago esta búsqueda, 185.45.5.33aparece el servidor defectuoso y solo hay una dirección IP alternativa presente.

Nota: Solo tenemos estas dos direcciones IP de nuestro servidor de producción; de otras máquinas (en diferentes países), nslookupdevuelve al menos 4 direcciones IP en un rango 199.*.

>nslookup api.twitter.com
Server:  kdns1.task.gda.pl
Address:  213.192.64.1

Non-authoritative answer:
Name:    api.twitter.com
Addresses:  199.16.156.104
          199.16.156.72
          199.16.156.231
          199.16.156.8

La solución ?

He intentado durante estos períodos defectuosos editar el C:\Windows\System32\Drivers\etc\hostsarchivo con esta línea

# localhost name resolution is handled within DNS itself.
#   127.0.0.1       localhost
#   ::1             localhost
    185.45.5.44     api.twitter.com

Pero esto no parece funcionar, los problemas simplemente continúan. Aunque el problema probablemente esté en los servidores de Twitter, interrumpe nuestra funcionalidad y deja de funcionar por completo. Por eso debemos ser más proactivos en lugar de esperar hasta que Twitter resuelva el problema.

Probablemente esta ni siquiera sea la mejor manera de resolver este problema, pero tenemosPor ahora. Contratamos a alguien capacitado para estos temas de operaciones, pero no comenzará antes de diciembre. Por lo tanto, cualquier tipo de consejo para una persona con experiencia limitada sería muy apreciado para tener una solución temporal para este problema.

Entonces, ¿alguien tiene alguna sugerencia o pista que pueda ayudarnos a solucionar este problema de nuestra parte de la mejor manera posible?

No me importa lanzarme a leer artículos, pero una pista o un empujón en la dirección correcta sería de gran ayuda.

Gracias por tu tiempo

Respuesta1

Respuesta corta: no.

Es muy poco lo que puede hacer para mitigar los problemas de los proveedores externos, aparte de notificar a sus usuarios que existen problemas ascendentes.

Puede mostrar mensajes de error descriptivos como "Hubo un problema al comunicarse con Twitter, espere", o descartar silenciosamente el error y volver a intentarlo después de un tiempo.

Para períodos de interrupción más prolongados, sugeriría mostrar un aviso a sus usuarios globalmente dentro de la aplicación.

Además de esto, dudo mucho que la API de Twitter tenga tantos problemas; es probable que tenga una velocidad limitada de alguna manera. Le sugiero encarecidamente que se comunique con Twitter y presente un caso de soporte.

información relacionada