Jaa


내부 서버에서 부하 분산을 수행하는 방법

내부 서버에서 부하 분산을 수행하는 방법

이 포스트는 10 월 31 일에 게시된 How to Load-Balance Internal Servers 의 번역입니다.

편집 메모 : 이번에는 Windows Azure 고객 상담 팀의 프로그램 관리자를 맡고 있는 Chris Clayton 의 포스팅을 소개합니다.

나는 2009 년부터 Windows Azure의 업무에 종사하고 있으며, 이 중 대기업 및 중소 기업의 다수의 고객을 위한 솔루션 구축의 지원을 담당해 왔습니다. 이러한 가운데 솔루션의 발전에 따라 내부 서버에 부하 분산을 알아두는 것이 종종 있었습니다. 이 글을 쓰는 지금 시점에서는 Windows Azure 부하 분산에 대한 기본 솔루션은 아니지만, 공용 끝점에 대한 액세스 제어 목록 (ACL, 영어) 을 도입하여 기본적으로 지원되는 Windows Azure 서비스와 구성 요소에서 이 문제를 해결할 수 있습니다.

여기에는 가상 컴퓨터에서 실행 중인 ASP.NET Web API로 외부에 연결된 내부 외관으로 기능하는 한 쌍의 Internet Information Services (IIS) 서버 부하 분산을 수행하는 경우에 대해 설명합니다. 로드 균형 조정 공용 끝점을 만들어 각 IIS 서버에서 공유하는 모든 공용 끝점에 액세스하는 Windows Azure의 부하 분산 장치를 사용하여 서버 간에 모든 쿼리에 대한 로드 균형 조정을 수행할 수 있습니다.

인터넷에 연결하는 사람이나 서비스에 액세스할 수 있는 것은 아닐까 걱정했지만, ACL을 끝점에 적용하여 내 클라우드 서비스에 대한 액세스를 제한할 수 있습니다. 아래 그림과 같이 ACL을 사용하여 부하가 분산된 대상 끝점에 대한 액세스를 클라우드 서비스에서 쿼리 허용하도록 제한할 수 있습니다.

 

이것은 정말 놀라운 기능을 아주 쉽게 사용할 수 있습니다. 이 기능을 사용하는 경우 영향력으로 생각하는 장점과 단점을 소개합니다.

장점

  • 파트너 솔루션을 사용하지 않고 부하 분산에 사용할 ASP.NET Web API 계층을 제공할 수 있습니다.
  • 마이크로소프트가 지원하는 서비스와 기능을 사용하여 지원되는 구조입니다.
  • 현재 이 기능을 제공하지 않기 때문에 솔루션에 대해 제품 팀과 면담하여 제품 팀은 현재 지원함에 동의했습니다.

단점

  • Windows Azure 클라우드 서비스에서 만들 수 있는 공용 포트의 수는 현재 25개 있지만 이 기능은 그 중의 하나로 생각됩니다.
  • 클라우드 서비스에서 통신은 모두 동일한 공용 IP 주소에서 발생 합니다. 따라서 모든 클라이언트의 사용량의 합계가 TCP 64 KB 통신 제한을 받을 수 있습니다. 이 제한은 동일한 원본 포트 및 원본 IP 주소에서 동일한 대상 포트와 대상 IP 주소에 대한 통신에 적용됩니다.
  • ACL은 서비스로서 인프라 (IaaS) 솔루션만 지원되는 플랫폼 서비스(PaaS) 솔루션에 사용할 수 없습니다.

완화

솔루션에는 단점이 있지만, 일반적으로 단점을 줄일 수 있는 방법이 있습니다. 첫번째 2 개의 단점 (공용 포트 최대 클라우드 서비스 하나에 대한 단일 IP 주소를 할당하는 것)은 클라우드 서비스에 적용되는 제한에서 비롯된 것이지만, 검토한 결과, 이것은 여러 클라우드 서비스에 여러 가상 컴퓨터에 배포할 수 있다는 것을 알게 되었습니다. 가상 네트워크를 사용하여 이를 분리하여 통신능력을 유지할 수 있습니다. 그러나 이 경우 ACL에서 IP 주소 구성을 추가해야 합니다.

단계별 해결 방법

여기에서 나가 실제로 두 대의 가상 컴퓨터에 부하 분산 솔루션을 설치하는 방법을 설명 합니다.

먼저 IIS에서 구성 된 두 대의 가상 머신을 제공하는 ACL이 할당 된 로드 균형 조정 대상 끝점을 Windows PowerShell에서 작성했습니다.

 

클라우드 서비스 대시보드 보기에서 가상 컴퓨터를 볼 수 있는 공용 IP 주소를 쉽게 확인할 수 있습니다. 아래에 있는 대시보드 이미지를 보면 나의 클라우드 서비스는 IP 주소는 137.135.81.135 임을 알 수 있습니다.

 

Windows PowerShell을 열고 Windows Azure 모듈의 명령을 사용하여 다음 명령을 실행 합니다. 이 명령을 실행하면 각 가상 컴퓨터에 80 번 포트를 수신 하는 끝점을 만듭니다. 또한, 클라우드 서비스의 IP 주소 (137.135.81.135)에 대한 액세스를 제한하도록 ACL이 설정됩니다.

 

자신의 서비스에 대해 로드 균형 조정을 제대로 작동하는지 테스트하려면 기본 IIS 페이지를 수정하여 가상 컴퓨터의 이름을 나타내는 텍스트를 표시했습니다. 다음 클라우드 서비스를 외부에서 가상 컴퓨터에 액세스를 시도했는데, ACL이 제대로 작동하는 것을 확인할 수 있었습니다.

 

그런 다음 원격 데스크톱을 사용하여 클라우드 서비스에서 가상 컴퓨터에 연결하고 같은 테스트를 수행하는 웹 사이트 및 가상 컴퓨터의 이름이 표시됩니다.

 

페이지의 내용을 정기적으로 업데이트와 부하 분산 장치에서 요청을 처리하는데 가상 컴퓨터 이름 변경하는 것을 알았습니다.

Windows Azure에서 사용 가능한 기존 지원되는 서비스를 결합함으로 써, 내부 IaaS는 가상 컴퓨터에서 로드 균형 조정 기능을 구현할 수 있습니다. 이 솔루션은 앞서 언급 한 대로 불완전 한 점도 있지만, 다양한 상황에서 매우 효과적이라고 생각합니다.

여러분의 의견을 듣고 싶은 생각을 하기 때문에 부담 없이 Chris Clayton 주소로 이메일을 보내주십시오.