Azure Load Balancer에 대 한 여러 프런트 엔드Multiple frontends for Azure Load Balancer

Azure Load Balancer를 사용해 여러 포트, 여러 IP 주소 또는 둘 다에서 부하 분산 서비스를 할 수 있습니다.Azure Load Balancer allows you to load balance services on multiple ports, multiple IP addresses, or both. 공용 및 내부 부하 분산 장치 정의를 VM 집합 전반에 대한 부하 분산 흐름에 사용할 수 있습니다.You can use public and internal load balancer definitions to load balance flows across a set of VMs.

이 문서에서는 이 기능, 중요한 개념 및 제약 조건에 대한 기본 사항을 설명합니다.This article describes the fundamentals of this ability, important concepts, and constraints. 서비스를 하나의 IP 주소에 노출만 하려는 경우 공용 또는 내부 부하 분산 장치 구성에 대한 단순화된 지침을 찾을 수 있습니다.If you only intend to expose services on one IP address, you can find simplified instructions for public or internal load balancer configurations. 여러 프런트 엔드를 추가하면 단일 프런트 엔드 구성이 증가합니다.Adding multiple frontends is incremental to a single frontend configuration. 이 문서의 개념을 사용하여 단순화된 구성을 언제라도 확장할 수 있습니다.Using the concepts in this article, you can expand a simplified configuration at any time.

Azure Load Balancer를 정의할 때 프런트 엔드 및 백 엔드 풀 구성이 규칙과 연결됩니다.When you define an Azure Load Balancer, a frontend and a backend pool configuration are connected with rules. 규칙에서 참조하는 상태 프로브는 새로운 흐름을 백 엔드 풀의 노드로 전송하는 방법을 결정하는 데 사용됩니다.The health probe referenced by the rule is used to determine how new flows are sent to a node in the backend pool. 프런트 엔드(일명 VIP)는 IP 주소(공용 또는 내부), 전송 프로토콜(UDP 또는 TCP) 및 부하 분산 규칙의 포트 번호로 구성된 3 튜플로 정의됩니다.The frontend (aka VIP) is defined by a 3-tuple comprised of an IP address (public or internal), a transport protocol (UDP or TCP), and a port number from the load balancing rule. 백 엔드 풀은 부하 분산 장치 백 엔드 풀을 참조하는 가상 머신 IP 구성(NIC 리소스의 일부)의 컬렉션입니다.The backend pool is a collection of Virtual Machine IP configurations (part of the NIC resource) which reference the Load Balancer backend pool.

다음 표에는 프런트 엔드 구성의 몇 가지 예가 들어 있습니다.The following table contains some example frontend configurations:

프런트 엔드Frontend IP 주소IP address protocolprotocol 포트port
11 65.52.0.165.52.0.1 TCPTCP 8080
22 65.52.0.165.52.0.1 TCPTCP 80808080
33 65.52.0.165.52.0.1 UDPUDP 8080
44 65.52.0.265.52.0.2 TCPTCP 8080

표에 다른 네 개의 프런트엔드가 나옵니다.The table shows four different frontends. 프런트 엔드 #1, #2 및 #3은 여러 규칙이 있는 단일 프런트 엔드입니다.Frontends #1, #2 and #3 are a single frontend with multiple rules. 같은 IP 주소가 사용되지만 포트 또는 프로토콜은 각 프런트 엔드마다 다릅니다.The same IP address is used but the port or protocol is different for each frontend. 프런트 엔드 #1과 #4번은 다중 프런트 엔드의 한 예로 동일한 프런트 엔드 프로토콜 및 포트가 여러 프런트 엔드에서 다시 사용됩니다.Frontends #1 and #4 are an example of multiple frontends, where the same frontend protocol and port are reused across multiple frontends.

Azure Load Balancer는 부하 분산 규칙을 정의하는 데 유연성을 제공합니다.Azure Load Balancer provides flexibility in defining the load balancing rules. 규칙은 프런트 엔드의 주소 및 포트가 백 엔드의 대상 주소 및 포트에 매핑되는 방식을 선언합니다.A rule declares how an address and port on the frontend is mapped to the destination address and port on the backend. 백 엔드 포트를 규칙 전반에 재사용할지 여부는 규칙 유형에 따라 달라집니다.Whether or not backend ports are reused across rules depends on the type of the rule. 각 규칙 유형에는 호스트 구성 및 프로브 디자인에 영향을 줄 수 있는 특정 요구 사항이 있습니다.Each type of rule has specific requirements that can affect host configuration and probe design. 다음과 같은 두 가지 규칙 유형이 있습니다.There are two types of rules:

  1. 백 엔드 포트 재사용이 없는 기본 규칙The default rule with no backend port reuse
  2. 백 엔드 포트가 재사용되는 부동 IP 규칙The Floating IP rule where backend ports are reused

Azure Load Balancer를 사용하면 동일한 부하 분산 장치 구성에서 두 규칙 유형을 혼합할 수 있습니다.Azure Load Balancer allows you to mix both rule types on the same load balancer configuration. 부하 분산 장치는 규칙의 제약 조건을 준수하는 한 주어진 VM이나 어떠한 조합에 대해서도 그것들을 동시에 사용할 수 있습니다.The load balancer can use them simultaneously for a given VM, or any combination, as long as you abide by the constraints of the rule. 어떤 규칙 유형을 선택하는지는 애플리케이션의 요구 사항 및 해당 구성을 지원하는 복잡성에 따라 달라집니다.Which rule type you choose depends on the requirements of your application and the complexity of supporting that configuration. 어떤 규칙 유형이 시나리오에 가장 적합한지 평가해야 합니다.You should evaluate which rule types are best for your scenario.

기본 동작을 시작으로 이러한 시나리오를 더 자세히 알아봅니다.We explore these scenarios further by starting with the default behavior.

규칙 유형 #1: 백 엔드 포트 재사용하지 않음.Rule type #1: No backend port reuse

녹색과 자주색 프런트 엔드가 포함된 다중 프런트 엔드 설명

이 시나리오에서 프런트 엔드는 다음과 같이 구성됩니다.In this scenario, the frontends are configured as follows:

프런트 엔드Frontend IP 주소IP address protocolprotocol 포트port
녹색 프런트 엔드 11 65.52.0.165.52.0.1 TCPTCP 8080
자주색 프런트 엔드 22 65.52.0.265.52.0.2 TCPTCP 8080

DIP는 인바운드 흐름의 대상입니다.The DIP is the destination of the inbound flow. 백 엔드 풀에서 각 VM은 DIP의 고유한 포트에 원하는 서비스를 노출합니다.In the backend pool, each VM exposes the desired service on a unique port on a DIP. 이 서비스는 규칙 정의 통해 프런트 엔드와 연결됩니다.This service is associated with the frontend through a rule definition.

두 가지 규칙을 정의합니다.We define two rules:

규칙Rule 맵 프론트 엔드Map frontend 백 엔드 풀에To backend pool
11 녹색 프런트 엔드 프런트 엔드1:80Frontend1:80 녹색 백 엔드 DIP1:80,DIP1:80, 녹색 백 엔드 DIP2:80DIP2:80
22 VIP 프런트 엔드2:80Frontend2:80 자주색 백 엔드 DIP1:81,DIP1:81, 자주색 백 엔드 DIP2:81DIP2:81

Azure Load Balancer에서 전체 매핑은 이제 다음과 같습니다.The complete mapping in Azure Load Balancer is now as follows:

규칙Rule 프런트 엔드 IP 주소Frontend IP address protocolprotocol 포트port 대상Destination 포트port
녹색 규칙 11 65.52.0.165.52.0.1 TCPTCP 8080 DIP IP 주소DIP IP Address 8080
자주색 규칙 22 65.52.0.265.52.0.2 TCPTCP 8080 DIP IP 주소DIP IP Address 8181

각 규칙은 대상 IP 주소 및 대상 포트의 고유한 조합으로 흐름을 생성해야 합니다.Each rule must produce a flow with a unique combination of destination IP address and destination port. 흐름의 대상 포트를 변경함으로써 여러 규칙이 다른 포트의 동일한 DIP로 흐름을 전달할 수 있습니다.By varying the destination port of the flow, multiple rules can deliver flows to the same DIP on different ports.

상태 프로브는 언제나 VM의 DIP에 전달됩니다.Health probes are always directed to the DIP of a VM. 프로브가 VM의 상태를 반영하는지 확인해야 합니다.You must ensure you that your probe reflects the health of the VM.

규칙 유형 #2: 부동 IP를 사용하여 백엔드 포트 재사용Rule type #2: backend port reuse by using Floating IP

Azure Load Balancer는 사용된 규칙 유형에 관계없이 여러 프런트 엔드 전반에 걸쳐 프런트 엔드 포트를 재사용할 수 있는 유연성을 제공합니다.Azure Load Balancer provides the flexibility to reuse the frontend port across multiple frontends regardless of the rule type used. 또한 일부 애플리케이션 시나리오는 백 엔드 풀의 단일 VM에서 여러 애플리케이션 인스턴스가 동일한 포트를 사용하는 것을 선호하거나 필요로 합니다.Additionally, some application scenarios prefer or require the same port to be used by multiple application instances on a single VM in the backend pool. 포트 재사용의 일반적인 예에는 고가용성을 위한 클러스터링, 네트워크 가상 어플라이언스 및 재암호화 없이 다중 TLS 엔드포인트 노출이 포함됩니다.Common examples of port reuse include clustering for high availability, network virtual appliances, and exposing multiple TLS endpoints without re-encryption.

여러 규칙 전반에 백 엔드 포트를 재사용하려면 규칙 정의에 부동 IP를 사용하도록 설정해야 합니다.If you want to reuse the backend port across multiple rules, you must enable Floating IP in the rule definition.

"부동 IP"는 DSR(Direct Server Return)로 알려진 부분에 대한 Azure의 용어입니다."Floating IP" is Azure's terminology for a portion of what is known as Direct Server Return (DSR). DSR는 흐름 토폴로지와 IP 주소 매핑 구성표라는 두 부분으로 구성됩니다.DSR consists of two parts: a flow topology and an IP address mapping scheme. 플랫폼 수준에서 Azure Load Balancer는 부동 IP 사용 여부에 관계 없이 DSR 흐름 토폴로지에서 항상 작동합니다.At a platform level, Azure Load Balancer always operates in a DSR flow topology regardless of whether Floating IP is enabled or not. 이는 아웃바운드 부분의 흐름이 다시 원점으로 직접 흘러가도록 언제나 올바르게 다시 작성되는 것을 의미합니다.This means that the outbound part of a flow is always correctly rewritten to flow directly back to the origin.

기본 규칙 유형을 사용하여 Azure는 사용 편의성을 위해 기존의 부하 분산 IP 주소 매핑 체계를 노출 합니다.With the default rule type, Azure exposes a traditional load balancing IP address mapping scheme for ease of use. 부동 IP를 사용하도록 설정하면 아래에 설명한대로 IP 주소 매핑 구성표가 추가적인 유연성을 허용하도록 변경됩니다.Enabling Floating IP changes the IP address mapping scheme to allow for additional flexibility as explained below.

아래 다이어그램은 이 구성을 보여 줍니다.The following diagram illustrates this configuration:

녹색 및 자주색 프런트 엔드와 DSR이 포함된 다중 프런트 엔드 설명

이 시나리오의 경우 백 엔드 풀의 모든 VM에 네트워크 인터페이스가 3개 있습니다.For this scenario, every VM in the backend pool has three network interfaces:

  • DIP: VM과 연결된 Virtual NIC(Azure NIC 리소스의 IP 구성)DIP: a Virtual NIC associated with the VM (IP configuration of Azure's NIC resource)
  • 프런트 엔드 1: 프런트 엔드 1의 IP 주소로 구성된 게스트 OS 내 루프백 인터페이스Frontend 1: a loopback interface within guest OS that is configured with IP address of Frontend 1
  • 프런트 엔드 2: 프런트 엔드 2의 IP 주소로 구성된 게스트 OS 내 루프백 인터페이스Frontend 2: a loopback interface within guest OS that is configured with IP address of Frontend 2

백 엔드 풀의 각 VM에 대해 Windows 명령 프롬프트에서 다음 명령을 실행 합니다.For each VM in the backend pool, run the following commands at a Windows Command Prompt.

VM에 있는 인터페이스 이름 목록을 가져오려면 다음 명령을 입력 합니다.To get the list of interface names you have on your VM, type this command:

netsh interface show interface 

VM NIC (Azure 관리)의 경우 다음 명령을 입력 합니다.For the VM NIC (Azure managed), type this command:

netsh interface ipv4 set interface “interfacename” weakhostreceive=enabled

(interfacename을이 인터페이스의 이름으로 바꿉니다.)(replace interfacename with the name of this interface)

추가한 각 루프백 인터페이스에 대해 다음 명령을 반복 합니다.For each loopback interface you added, repeat these commands:

netsh interface ipv4 set interface “interfacename” weakhostreceive=enabled 

(interfacename을이 루프백 인터페이스의 이름으로 바꿉니다.)(replace interfacename with the name of this loopback interface)

netsh interface ipv4 set interface “interfacename” weakhostsend=enabled 

(interfacename을이 루프백 인터페이스의 이름으로 바꿉니다.)(replace interfacename with the name of this loopback interface)

중요

루프백 인터페이스에 대한 구성은 게스트 OS 내에서 수행됩니다.The configuration of the loopback interfaces is performed within the guest OS. 이 구성은 Azure에서 수행하거나 관리하지 않습니다.This configuration is not performed or managed by Azure. 이 구성 없이는 규칙이 작동하지 않습니다.Without this configuration, the rules will not function. 상태 프로브 정의에는 DSR 프런트 엔드를 나타내는 루프백 인터페이스가 아닌 VM의 DIP가 사용됩니다.Health probe definitions use the DIP of the VM rather than the loopback interface representing the DSR Frontend. 따라서 서비스는 DSR 프런트 엔드를 나타내는 루프백 인터페이스에서 제공되는 서비스의 상태를 반영하는 DIP 포트에서 프로브 응답을 제공해야 합니다.Therefore, your service must provide probe responses on a DIP port that reflect the status of the service offered on the loopback interface representing the DSR Frontend.

이전 시나리오에서와 동일한 프런트 엔드 구성을 가정해 보겠습니다.Let's assume the same frontend configuration as in the previous scenario:

프런트 엔드Frontend IP 주소IP address protocolprotocol 포트port
녹색 프런트 엔드 11 65.52.0.165.52.0.1 TCPTCP 8080
자주색 프런트 엔드 22 65.52.0.265.52.0.2 TCPTCP 8080

두 가지 규칙을 정의합니다.We define two rules:

규칙Rule 프런트 엔드Frontend 백 엔드 풀에 매핑Map to backend pool
11 녹색 규칙 프런트 엔드1:80Frontend1:80 녹색 백 엔드 프런트 엔드1:80 (VM1 및 VM2)Frontend1:80 (in VM1 and VM2)
22 자주색 규칙 프런트 엔드2:80Frontend2:80 자주색 백 엔드 프런트 엔드2:80 (VM1 및 VM2)Frontend2:80 (in VM1 and VM2)

다음 표는 부하 분산 장치에서의 전체 매핑을 보여 줍니다.The following table shows the complete mapping in the load balancer:

규칙Rule 프런트 엔드 IP 주소Frontend IP address protocolprotocol 포트port 대상Destination 포트port
녹색 규칙 11 65.52.0.165.52.0.1 TCPTCP 8080 프런트 엔드와 동일(65.52.0.1)same as frontend (65.52.0.1) 프런트 엔드와 동일(80)same as frontend (80)
자주색 규칙 22 65.52.0.265.52.0.2 TCPTCP 8080 프런트 엔드와 동일(65.52.0.2)same as frontend (65.52.0.2) 프런트 엔드와 동일(80)same as frontend (80)

인바운드 흐름의 대상은 VM에서 루프백 인터페이스의 프런트 엔드 IP 주소입니다.The destination of the inbound flow is the frontend IP address on the loopback interface in the VM. 각 규칙은 대상 IP 주소 및 대상 포트의 고유한 조합으로 흐름을 생성해야 합니다.Each rule must produce a flow with a unique combination of destination IP address and destination port. 흐름의 대상 IP 주소를 변경하면 동일한 VM에서 포트 재사용이 가능합니다.By varying the destination IP address of the flow, port reuse is possible on the same VM. 프런트 엔드의 IP 주소 및 해당 루프백 인터페이스의 포트에 바인딩하면 서비스가 부하 분산 장치에 노출됩니다.Your service is exposed to the load balancer by binding it to the frontend’s IP address and port of the respective loopback interface.

이 예는 대상 포트를 변경하지 않는지 확인합니다.Notice that this example does not change the destination port. 비록 부동 IP 시나리오이지만 Azure Load Balancer는 또한 백 엔드 대상 포트를 다시 작성하여 프런트 엔드 대상 포트와 다르도록 규칙을 정의하는 것을 지원합니다.Even though this is a Floating IP scenario, Azure Load Balancer also supports defining a rule to rewrite the backend destination port and to make it different from the frontend destination port.

부동 IP 규칙 유형은 여러 부하 분산 장치 구성 패턴의 기초입니다.The Floating IP rule type is the foundation of several load balancer configuration patterns. 현재 사용할 수 있는 한 가지 예로 Multiple Listeners를 사용한 SQL AlwaysOn 구성을 들 수 있습니다.One example that is currently available is the SQL AlwaysOn with Multiple Listeners configuration. 앞으로 이러한 시나리오 더욱 자세히 설명할 것입니다.Over time, we will document more of these scenarios.

제한 사항Limitations

  • 다중 프런트 엔드 구성은 IaaS VM에서만 지원됩니다.Multiple frontend configurations are only supported with IaaS VMs.
  • 부동 IP 규칙을 사용 하는 경우 응용 프로그램은 아웃 바운드 SNAT 흐름에 기본 IP 구성을 사용 해야 합니다.With the Floating IP rule, your application must use the primary IP configuration for outbound SNAT flows. 응용 프로그램이 게스트 OS에서 루프백 인터페이스에 구성 된 프런트 엔드 IP 주소에 바인딩하는 경우 아웃 바운드 흐름을 다시 작성 하는 데 Azure의 아웃 바운드 SNAT를 사용할 수 없으며 흐름이 실패 합니다.If your application binds to the frontend IP address configured on the loopback interface in the guest OS, Azure's outbound SNAT is not available to rewrite the outbound flow and the flow fails. 아웃 바운드 시나리오를 검토 합니다.Review outbound scenarios.
  • 부동 IP는 현재 Load Balancing 시나리오의 보조 IP 구성에서 지원되지 않습니다.Floating IP is not currently supported on secondary IP configurations for Internal Load Balancing scenarios.
  • 공용 IP 주소는 대금 청구에 영향을 미칩니다.Public IP addresses have an effect on billing. 자세한 내용은 IP 주소 가격 책정For more information, see IP Address pricing
  • 구독 제한이 적용됩니다.Subscription limits apply. 자세한 내용은 서비스 제한 을 참조하세요.For more information, see Service limits for details.

다음 단계Next steps

  • 아웃바운드 연결 동작에서 여러 프런트 엔드의 영향을 파악하려면 아웃바운드 연결을 검토합니다.Review Outbound connections to understand the impact of multiple frontends on outbound connection behavior.