0

System.Net.HttpWebRequest를 사용하여로드 밸런서 뒤에있는 AWS 내에서 호스팅되는 API 응용 프로그램을 사용하고 있습니다. LB에는 6 개의 인스턴스가 있으며, 2 개의 다른 AZ에 3 개가 있습니다. 결과적으로 LB에 대한 DNS 항목에는 2 개의 IP 주소 (각 AZ에 1)가 있습니다.DNS 항목이 여러 주소에 바인딩되어있는 경우 .NET HttpWebRequest가 사용하는 IP 주소

C# 응용 프로그램을 실행할 때 웹 요청은 단일 AZ 내의 3 개 서버간에 완벽하게 균형을 이룬 것으로 보입니다. 2 위 AZ를 치지는 않습니다.

WebRequest 객체가 LB DNS 항목에 바인딩 된 첫 번째 IP를 치는 것만 같아서 트래픽이 균형을 이루지 만 단일 AZ에서만 나타납니다.

의미가 있습니까? 다른 IP 경계를 DNS 항목으로 타겟팅하도록 WebRequest를 얻으려면 어떻게해야합니까?

+0

C# WebRequest 란 무엇입니까? .NET WebRequest 클래스를 의미합니까? –

+0

@ JohnSaunders System.Net.HttpWebRequest – manu08

+0

그게 C#과 관련이 있습니까? 그것은 ".NET WebRequest"또는 "System.Net.WebRequest"입니다. –

답변

0

HttpWebRequest는 항상 목록의 첫 번째 IP 주소를 사용합니다. Route53은 단일로드 밸런서의 IP 주소를 임의의 순서로 반환하여 AZ에서로드 균형을 조정합니다.

0

C#에서 .NET을 통해 DNS 조회를 수행하면 해당 결과가 캐시됩니다. 즉, 처음에 다시 돌아 오는 IP를 계속 사용합니다.

How do I clear System.Net client DNS cache?을보세요. 올바른 방향으로 안내 할 수 있습니다.

+0

-1로 변경했습니다. C#은 DNS 조회를 수행하지 않습니다. –

+0

.NET DNS 조회는 단일 DNS 호스트 이름에 대해 2 개의 IP 주소를 반환합니다. C#에서 사용할 IP 주소를 결정하는 방법을 묻습니다. – manu08

+0

C#은 어떤 경우에도 DNS를 사용하지 않습니다. 네트워크 지원이 없습니다. 아마 당신은 .NET을 언급하고 있습니까? –

0

AWS ELB의 약점 중 하나에 부딪혔습니다. 단일 IP의 모든 요청은 하나의 AZ로 라우팅됩니다. 이것은 트래픽이 많은 웹 서비스에는 문제가되지만, 작은 IP 서브셋에서만 문제가됩니다.

+0

TLA를 영어로 번역 하시겠습니까? –

+0

이것이 사실 일지 모르겠습니다. ELB의 주소에서 DNS 요청을 수행하면 동일한 클라이언트 IP에서 DNS 요청을 여러 번 만들지 만 무작위 순서로 IP 주소를 반환합니다. – manu08