Azure Load Balancer 부동 IP 구성

부하 분산 장치는 몇 가지 기능을 UDP 및 TCP 애플리케이션 모두에 제공합니다.

부동 IP

일부 애플리케이션 시나리오는 백 엔드 풀의 단일 VM에서 여러 애플리케이션 인스턴스가 동일한 포트를 사용하는 것을 선호하거나 필요로 합니다. 포트 재사용의 일반적인 예에는 고가용성을 위한 클러스터링, 네트워크 가상 어플라이언스 및 재암호화 없이 다중 TLS 엔드포인트 노출이 포함됩니다.

부동 IP 상태 결과
부동 IP 사용 Azure에서 IP 주소 매핑을 Load Balancer의 프런트 엔드 IP 주소로 변경
부동 IP 사용 안 함 Azure는 VM 인스턴스의 IP 주소를 노출합니다.

여러 규칙 전반에 백 엔드 포트를 재사용하려면 규칙 정의에 부동 IP를 사용하도록 설정해야 합니다. 부동 IP를 사용하도록 설정하면 더 많은 유연성을 확보할 수 있습니다.

다이어그램에서 부동 IP를 사용하도록 설정하기 전과 후의 IP 주소 매핑 작동 방식을 확인할 수 있습니다. 이 다이어그램은 부동 IP가 활성화되기 전의 부하 분산 장치를 통한 네트워크 트래픽을 보여 줍니다.

이 다이어그램은 부동 IP가 활성화된 후의 부하 분산 장치를 통한 네트워크 트래픽을 보여 줍니다.

부동 IP는 Azure Portal, REST API, CLI, PowerShell 또는 기타 클라이언트를 통해 Load Balancer 규칙에서 구성할 수 있습니다. 규칙 구성 외에도 부동 IP를 사용하기 위해 가상 머신의 게스트 OS도 구성해야 합니다.

부동 IP가 있는 여러 프런트 엔드 IP에 대한 부하 분산 장치 트래픽의 다이어그램.

이 시나리오의 경우 백 엔드 풀의 모든 VM에 네트워크 인터페이스가 3개 있습니다.

  • 백 엔드 IP: VM과 연결된 Virtual NIC(Azure NIC 리소스의 IP 구성).
  • 프런트 엔드 1(FIP1): FIP1의 IP 주소로 구성된 게스트 OS 내 루프백 인터페이스.
  • 프런트 엔드 2(FIP2): FIP2의 IP 주소로 구성된 게스트 OS 내 루프백 인터페이스.

이전 시나리오에서와 동일한 프런트 엔드 구성을 가정해 보겠습니다.

프런트 엔드 IP 주소 프로토콜 port
녹색 프런트 엔드 1 65.52.0.1 TCP 80
자주색 프런트 엔드 2 65.52.0.2 TCP 80

두 개의 부동 IP 규칙을 정의합니다.

규칙 프런트 엔드 백 엔드 풀에 매핑
1 녹색 규칙 FIP1:80 녹색 백 엔드 FIP1:80(VM1 및 VM2)
2 자주색 규칙 FIP2:80 자주색 백 엔드 FIP2:80(VM1 및 VM2)

다음 표는 부하 분산 장치에서의 전체 매핑을 보여 줍니다.

규칙 프런트 엔드 IP 주소 프로토콜 port 대상 port
녹색 규칙 1 65.52.0.1 TCP 80 프런트 엔드와 동일(65.52.0.1) 프런트 엔드와 동일(80)
자주색 규칙 2 65.52.0.2 TCP 80 프런트 엔드와 동일(65.52.0.2) 프런트 엔드와 동일(80)

인바운드 흐름의 대상은 VM의 루프백 인터페이스에 있는 프런트 엔드 IP 주소입니다. 각 규칙은 대상 IP 주소 및 대상 포트의 고유한 조합으로 흐름을 생성해야 합니다. 대상 IP 주소를 흐름의 프런트 엔드 IP 주소로 변경하여 동일한 VM에서 포트 재사용이 가능합니다. 프런트 엔드의 IP 주소 및 해당 루프백 인터페이스의 포트에 바인딩하면 서비스가 부하 분산 장치에 노출됩니다.

이 예제에서는 대상 포트가 변경되지 않습니다. 부동 IP 시나리오에서 Azure Load Balancer는 백 엔드 대상 포트를 변경하고 프런트 엔드 대상 포트와 다르게 만드는 부하 분산 규칙을 정의하는 것을 지원합니다.

부동 IP 규칙 유형은 여러 부하 분산 장치 구성 패턴의 기초입니다. 현재 사용할 수 있는 한 가지 예는 하나 이상의 Always On 가용성 그룹 수신기 구성입니다. 앞으로 이러한 시나리오를 더욱 자세히 설명할 것입니다. 부동 IP를 사용하도록 설정하는 데 필요한 특정 게스트 OS 구성에 관한 자세한 내용은 다음 섹션의 Azure Load Balancer 부동 IP 구성을 참조하세요.

부동 IP 게스트 OS 구성

작동하려면 가상 머신의 게스트 OS가 부하 분산 장치의 프런트 엔드 IP 및 포트에 바인딩된 모든 트래픽을 수신하도록 구성해야 합니다. VM을 구성하려면 다음이 필요합니다.

  • 루프백 네트워크 인터페이스 추가
  • 부하 분산 장치의 프런트 엔드 IP 주소로 루프백 구성
  • 시스템이 해당 인터페이스에 할당된 IP 주소가 없는 인터페이스에서 패킷을 보내고 받을 수 있는지 확인합니다. Windows 시스템에서는 “약한 호스트” 모델을 사용하려면 인터페이스를 설정해야 합니다. Linux 시스템의 경우 일반적으로 이 모델은 기본적으로 사용됩니다.
  • 프런트 엔드 IP 포트에서 트래픽을 허용하도록 호스트 방화벽 구성.

참고 항목

아래의 예는 모두 IPv4를 사용합니다. IPv6을 사용하려면 "ipv4"를 "ipv6"으로 대체합니다. 또한 IPv6용 부동 IP는 내부 Load Balancer에서 작동하지 않습니다.

Windows Server

Expand

백 엔드 풀의 각 VM에 대해 서버의 Windows 명령 프롬프트에서 다음 명령을 실행합니다.

VM에 있는 인터페이스 이름 목록을 가져오려면 다음 명령을 입력합니다.

netsh interface ipv4 show interface 

VM NIC (Azure 관리형)의 경우, 다음 명령을 입력합니다.

netsh interface ipv4 set interface "interfacename" weakhostreceive=enabled

(“interfacename”을 이 인터페이스의 이름으로 바꿉니다.)

추가한 각 루프백 인터페이스에 대해 다음 명령을 반복합니다.

netsh interface ipv4 add addr floatingipaddress floatingip floatingipnetmask
netsh interface ipv4 set interface floatingipaddress weakhostreceive=enabled  weakhostsend=enabled 

(loopbackinterface를 이 루프백 인터페이스의 이름으로 바꾸고 floatingipfloatingipnetmask를 부하 분산 장치 프런트 엔드 IP에 해당하는 적절한 값으로 바꿉니다.)

마지막으로 게스트 호스트에서 방화벽을 사용 중인 경우 트래픽이 적절한 포트의 VM에 도달할 수 있도록 규칙을 설정해야 합니다.

이 예제 구성은 1.2.3.4의 부하 분산 장치 프런트 엔드 IP 구성 및 포트 80에 대한 부하 분산 규칙을 가정합니다.

netsh int ipv4 set int "Ethernet" weakhostreceive=enabled
netsh int ipv4 add addr "Loopback Pseudo-Interface 1" 1.2.3.4 255.255.255.0
netsh int ipv4 set int "Loopback Pseudo-Interface 1" weakhostreceive=enabled weakhostsend=enabled
netsh advfirewall firewall add rule name="http" protocol=TCP localport=80 dir=in action=allow enable=yes

Ubuntu

Expand

백 엔드 풀의 각 VM에 대해 SSH 세션을 통해 다음 명령을 실행합니다.

VM에 있는 인터페이스 이름 목록을 가져오려면 다음 명령을 입력합니다.

ip addr

각 루프백 인터페이스에 대해 루프백 별칭에 부동 IP를 할당하는 다음 명령을 반복합니다.

sudo ip addr add floatingip/floatingipnetmask dev lo:0

(floatingipfloatingipnetmask를 부하 분산 장치 프런트 엔드 IP에 해당하는 적절한 값으로 바꿉니다.)

마지막으로 게스트 호스트에서 방화벽을 사용 중인 경우 트래픽이 적절한 포트의 VM에 도달할 수 있도록 규칙을 설정해야 합니다.

이 예제 구성은 1.2.3.4의 부하 분산 장치 프런트 엔드 IP 구성 및 포트 80에 대한 부하 분산 규칙을 가정합니다. 또한 이 예에서는 Ubuntu에서 UFW(복잡하지 않은 방화벽)를 사용한다고 가정합니다.

sudo ip addr add 1.2.3.4/24 dev lo:0
sudo ufw allow 80/tcp

제한 사항

  • 부하 분산 규칙에서 부동 IP를 사용하도록 설정한 경우 애플리케이션은 아웃바운드에 대한 네트워크 인터페이스의 기본 IP 구성을 사용해야 합니다.
  • 부동 IP는 부하 분산 시나리오의 보조 IPv4 구성에서 지원되지 않습니다. 이 제한은 이중 스택 구성(IPv4 및 IPv6)을 사용하는 공용 부하 분산 장치 또는 아웃바운드 연결을 위해 NAT Gateway를 활용하는 아키텍처에는 적용되지 않습니다.
  • 애플리케이션이 게스트 OS의 루프백 인터페이스에 구성된 프런트 엔드 IP 주소에 바인딩하는 경우 Azure의 아웃바운드는 아웃바운드 흐름을 다시 작성하지 않으며 흐름이 실패합니다. 아웃바운드 시나리오를 검토합니다.

다음 단계