Azure Load Balancer의 작동 방식
Azure Load Balancer는 OSI 모델의 전송 계층에서 작동합니다. 이 계층 4 기능을 사용하면 트래픽의 특정 속성에 따라 트래픽을 관리할 수 있습니다. 원본 및 대상 주소, TCP 또는 UDP 프로토콜 형식 및 포트 번호를 포함한 속성입니다.
Load Balancer에는 애플리케이션의 고가용성 및 성능을 보장하기 위해 함께 작동하는 여러 요소가 있습니다.
- 프런트 엔드 IP
- 부하 분산 장치 규칙
- 백 엔드 풀
- 상태 프로브
- 인바운드 NAT 규칙
- 고가용성 포트
- 아웃바운드 규칙
프런트 엔드 IP
프런트 엔드 IP 주소는 웹 애플리케이션에 연결하는 클라이언트에서 사용하는 주소입니다. 프런트 엔드 IP 주소는 공용 또는 개인 IP 주소일 수 있습니다. Azure 부하 분산 장치에는 여러 프런트 엔드 IP가 있을 수 있습니다. 공용 또는 개인 IP 주소를 선택하면 만들 부하 분산 장치 유형이 결정됩니다.
공용 IP 주소: 공용 부하 분산 장치: 공용 부하 분산 장치는 들어오는 트래픽의 공용 IP와 포트를 VM의 개인 IP 및 포트에 매핑합니다. 부하 분산 규칙을 적용하여 특정 유형의 트래픽을 여러 VM 또는 서비스에 분산할 수 있습니다. 예를 들어 웹 요청 트래픽의 부하를 여러 웹 서버에 분산할 수 있습니다. 부하 분산 장치는 VM의 개인 IP 및 포트에서 부하 분산 장치의 공용 IP 및 포트로 응답 트래픽을 매핑합니다. 그런 다음, 요청을 요청하는 클라이언트로 응답을 다시 전송합니다.
개인 IP 주소: 내부 부하 분산 장치: 내부 부하 분산 장치는 가상 네트워크 내에 있는 리소스에 트래픽을 분산합니다. Azure는 부하가 분산된 가상 네트워크의 프런트 엔드 IP 주소에 대한 액세스를 제한합니다. 프런트 엔드 IP 주소와 가상 네트워크는 인터넷 엔드포인트에 직접 노출되지 않습니다. 내부 LOB(기간 업무) 애플리케이션은 Azure에서 실행되며 Azure 내에서 또는 온-프레미스 리소스에서 VPN 또는 ExpressRoute 연결을 통해 액세스할 수 있습니다.
부하 분산 장치 규칙
트래픽이 백 엔드 풀에 분산되는 방법을 정의하는 부하 분산 장치 규칙입니다. 이 규칙은 지정된 프런트 엔드 IP와 포트 조합을 백 엔드 IP 주소와 포트 조합 세트에 매핑합니다.
트래픽은 다음 요소에서 만든 5개의 튜플 해시를 사용하여 관리됩니다.
- 원본 IP: 요청하는 클라이언트의 IP 주소입니다.
- 원본 포트: 요청하는 클라이언트의 포트입니다.
- 대상 IP: 요청의 대상 IP 주소입니다.
- 대상 포트: 요청의 대상 포트입니다.
- 프로토콜 종류: 지정된 프로토콜 유형으로, TCP 또는 UDP입니다.
- 세션 선호도: 동일한 풀 노드가 항상 클라이언트에 대한 트래픽을 처리하도록 합니다.
Load Balancer를 사용하면 여러 포트, 여러 IP 주소 또는 둘 다에서 부하 분산 서비스를 할 수 있습니다. 각 프런트 엔드 IP에 대해 서로 다른 부하 분산 규칙을 구성할 수 있습니다. 다중 프런트 엔드 구성은 IaaS VM에서만 지원됩니다.
Load Balancer는 OSI 모델의 계층 4(전송 계층)에서 작동하므로 내부 트래픽 콘텐츠에 따라 다른 규칙을 적용할 수 없습니다. 계층 7(애플리케이션 계층) 속성을 기반으로 트래픽을 관리해야 하는 경우 Azure 애플리케이션 Gateway와 같은 솔루션을 배포해야 합니다.
백 엔드 풀
백 엔드 풀은 들어오는 요청에 응답하는 Virtual Machine Scale Set의 VM 또는 인스턴스 그룹입니다. 대량의 들어오는 트래픽을 충족하도록 비용 효율적으로 크기를 조정하기 위해 컴퓨팅 지침에서는 일반적으로 백 엔드 풀에 더 많은 인스턴스를 추가하는 것을 권장합니다.
Load Balancer는 인스턴스를 확장 또는 축소할 때 변경된 수의 인스턴스에 부하를 재배포하도록 자동 재구성을 구현합니다. 예를 들어 백 엔드 풀에 두 개의 VM 인스턴스를 더 추가한 경우 Load Balancer는 자체적으로 다시 구성하여 이미 구성된 부하 분산 규칙에 따라 해당 인스턴스에 대한 트래픽 분산을 시작합니다.
상태 프로브
상태 프로브는 백 엔드 풀의 인스턴스 상태를 확인하는 데 사용됩니다. 이 상태 프로브는 인스턴스가 정상 상태이고 트래픽을 수신할 수 있는지 여부를 확인합니다. 상태 프로브에 대한 비정상 임계값을 정의할 수 있습니다. 프로브가 응답하지 않으면 부하 분산 장치는 비정상 인스턴스에 새 연결의 전송을 중지합니다. 프로브 오류는 기존 연결에 영향을 주지 않습니다. 연결은 다음까지 계속됩니다.
- 애플리케이션은 흐름을 종료합니다.
- 유휴 제한 시간이 발생합니다.
- VM이 종료됩니다.
Load Balancer를 사용하면 TCP, HTTP 및 HTTPS 등의 다양한 상태 프로브 유형을 구성할 수 있습니다.
- TCP 사용자 지정 프로브: 이 프로브는 정의된 프로브 포트에 대한 성공적인 TCP 세션 설정에 따라 달라집니다. VM에 지정된 수신기가 있기만 하면 프로브는 성공합니다. 연결이 거부되면 프로브는 실패합니다. 포트, 간격 및 비정상 임계값을 지정할 수 있습니다.
- HTTP 또는 HTTPS 사용자 지정 프로브: 부하 분산 장치는 정기적으로 엔드포인트를 검색합니다(기본적으로 15초마다). 시간 제한 기간(기본값 31초) 내에 HTTP 200으로 응답하는 인스턴스는 정상 상태입니다. HTTP 200 이외의 모든 상태에서 이 프로브는 실패합니다. 포트(포트), 백 엔드에서 상태를 요청하는 URI(URI), 프로브 시도 사이의 시간(간격) 및 인스턴스가 비정상으로 간주되기 위해 발생해야 하는 오류 수(비정상 임계값)를 지정할 수 있습니다.
세션 지속성
기본값으로 Load Balancer는 네트워크 트래픽을 여러 VM 인스턴스에 고르게 분산시킵니다. 전송 세션 내에서만 연결이 유지됩니다. 세션 지속성은 클라이언트의 트래픽을 처리하는 방법을 지정합니다. 기본 동작(없음)은 정상 VM이 클라이언트의 연속 요청을 처리할 수 있다는 것입니다.
세션 지속성을 세션 선호도, 원본 IP 선호도 또는 클라이언트 IP 선호도라고도 합니다. 이 분산 모드에서는 2튜플(원본 IP 및 대상 IP) 또는 3튜플(원본 IP, 대상 IP 및 프로토콜 형식) 해시를 사용하여 백 엔드 인스턴스로 라우팅합니다. 세션 지속성을 사용하는 경우 동일한 클라이언트의 연결이 백 엔드 풀 내의 동일한 백 엔드 인스턴스로 이동합니다. 다음 세션 지속성 옵션 중 하나를 구성할 수 있습니다.
- 없음(기본값): 정상 VM이 요청을 처리할 수 있도록 지정합니다.
- 클라이언트 IP(2 튜플): 동일한 백 엔드 인스턴스가 동일한 클라이언트 IP 주소의 연속 요청을 처리할 수 있도록 지정합니다.
- 클라이언트 IP 및 프로토콜(3 튜플): 동일한 백 엔드 인스턴스가 동일한 클라이언트 IP 주소 및 프로토콜 조합의 연속 요청을 처리할 수 있도록 지정합니다.
다음 섹션에 설명된 옵션 중 하나를 구성하여 이 동작을 변경할 수 있습니다.
고가용성 포트
protocol - all and port - 0
로 구성된 부하 분산 장치 규칙을 HA(고가용성) 포트 규칙이라고 합니다. 이 규칙을 사용하면 내부 표준 부하 분산 장치의 모든 포트에 도달하는 모든 TCP 및 UDP 흐름을 단일 규칙으로 부하 분산할 수 있습니다.
부하 분산 의사 결정은 흐름 단위로 이루어집니다. 이 작업은 다음과 같은 5개의 튜플 연결을 기반으로 합니다.
- 원본 IP 주소
- 원본 포트
- 대상 IP 주소
- 대상 포트
- 프로토콜
HA 포트 부하 분산 규칙은 가상 네트워크 내 NVA(네트워크 가상 어플라이언스)의 고가용성 및 확장과 같은 중요한 시나리오를 지원합니다. 이 기능은 많은 수의 포트에서 부하를 분산시켜야 할 때 도움이 될 수 있습니다.
인바운드 NAT 규칙
NAT(Network Address Translation) 규칙과 함께 부하 분산 규칙을 사용할 수 있습니다. 예를 들어, 부하 분산 시스템의 퍼블릭 주소에서 특정 VM의 TCP 3389로의 NAT를 사용할 수 있습니다. 이 규칙 조합을 사용하면 Azure 외부에서 원격 데스크톱에 액세스할 수 있습니다.
아웃바운드 규칙
아웃바운드 규칙은 백 엔드 풀에서 식별된 모든 VM 또는 인스턴스에 대한 SNAT(Source Network Address Translation)를 구성합니다. 이 규칙을 사용하면 백 엔드의 인스턴스가 인터넷 또는 다른 퍼블릭 엔드포인트로 통신(아웃바운드)할 수 있습니다.