로드 밸런서 뒤에 있는 잘못된 서버 방지

로드 밸런서 뒤에 있는 잘못된 서버 방지

환경

Twitter API와 상호 작용하는 솔루션이 실행 중입니다. Twitter API 엔드포인트는 다음과 같습니다.

api.twitter.com

우리는 엔드포인트에 많은 호출을 하지만 Twitter에서 정의한 API 제한에 거의 도달하지 않습니다.

Twitter에는 해당 URL에 로드 밸런서가 설정되어 있고 내부적으로 다른 시스템으로 리디렉션된다고 가정합니다.

솔루션은 부분적으로 데이터 폴링을 수행하는 실행 파일인 .Net 애플리케이션과 트윗에 응답하고 게시하는 데 사용되는 웹 애플리케이션입니다.

문제

일주일에 한 번(때로는 그 이상) 몇 시간 동안 실행 파일과 웹 애플리케이션의 로그 파일에 다음 예외가 기록됩니다.

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 ...

NSLOOKUP서버 자체에서 수행하면 다음과 같은 결과가 나타납니다.

>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

이 조회를 수행할 때마다 결함이 있는 185.45.5.33서버가 나열되고 대체 IP 주소는 하나만 존재합니다.

참고: 우리는 프로덕션 서버에서 이 두 개의 IP 주소만 가지고 있으며 다른 시스템(다른 국가)에서는 nslookup199.* 범위에서 최소 4개의 IP 주소를 반환합니다.

>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

해결책 ?

C:\Windows\System32\Drivers\etc\hosts나는 이 잘못된 기간 동안 이 줄로 파일을 편집하려고 시도했습니다.

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

그러나 이것은 작동하지 않는 것 같습니다. 문제는 계속됩니다. 문제는 트위터 서버에 있을 수 있지만 작동을 완전히 멈추는 기능이 중단됩니다. 따라서 트위터가 문제를 해결할 때까지 기다리기보다는 더욱 적극적으로 나서야 합니다.

이는 아마도 이 문제를 해결하는 가장 좋은 방법은 아니지만지금은. 우리는 이러한 운영 문제에 능숙한 사람을 채용했지만 12월 이전에는 시작하지 않을 것입니다. 따라서 경험이 부족한 사람에게 이 문제에 대한 임시 해결책을 제공하는 친절한 조언을 주시면 감사하겠습니다.

그렇다면 가능한 최선의 방법으로 이 문제를 해결하는 데 도움이 될 수 있는 제안이나 단서가 있는 사람이 있습니까?

기사를 읽는 데 뛰어들지는 않지만 올바른 방향으로의 리드나 추진은 큰 도움이 될 것입니다.

시간 내 주셔서 감사합니다

답변1

짧은 대답: 아니요.

사용자에게 업스트림 문제가 있음을 알리는 것 외에 타사 공급자 문제를 완화하기 위해 할 수 있는 일은 거의 없습니다.

"Twitter와 통신하는 데 문제가 발생했습니다. 잠시만 기다려 주세요."와 같은 설명적인 오류 메시지를 표시하거나 오류를 자동으로 삭제하고 잠시 후 다시 시도할 수 있습니다.

중단 기간이 길어질 경우 애플리케이션 내에서 전 세계 사용자에게 알림을 표시하는 것이 좋습니다.

이 외에도 Twitter의 API에 그렇게 많은 문제가 있는지 심각하게 의심됩니다. 어떤 방식으로든 속도가 제한될 가능성이 높습니다. Twitter에 연락하여 지원 사례를 제기하시기 바랍니다.

관련 정보