다음을 통해 공유


App Service Environment 네트워킹

App Service Environment는 Windows 및 Linux 컨테이너, 웹앱, API 앱, 논리 앱 및 함수 앱을 호스트하는 Azure App Service의 단일 테넌트 배포입니다. App Service Environment를 설치할 때 배포하려는 Azure 가상 네트워크를 선택합니다. 모든 인바운드 및 아웃바운드 애플리케이션 트래픽은 지정한 가상 네트워크 내에 있습니다. 가상 네트워크의 단일 서브넷에 배포하면 해당 서브넷에 다른 어떤 것도 배포할 수 없습니다.

참고 항목

이 문서에서는 격리된 v2 App Service 요금제와 함께 사용되는 App Service Environment v3에 대해 알아봅니다.

서브넷 요구 사항

서브넷을 Microsoft.Web/hostingEnvironments에 위임해야 하며, 이 서브넷은 비어 있어야 합니다.

서브넷의 크기는 App Service Environment 내에서 App Service 요금제 인스턴스의 크기 조정 제한에 영향을 줄 수 있습니다. 프로덕션 규모의 경우 서브넷에 /24 주소 공간(256개 주소)을 사용하는 것이 좋습니다. App Service Environment에서 최대 200개의 인스턴스 용량을 확장할 계획이며 자주 확장/축소 작업을 계획하는 경우 서브넷에 /23 주소 공간(512개 주소)을 사용하는 것이 좋습니다.

더 작은 서브넷을 사용하는 경우 다음 제한 사항을 알고 있어야 합니다.

  • 특정 서브넷에는 관리 목적으로 예약된 5개의 주소가 있습니다. 관리 주소 외에도 App Service Environment는 지원 인프라의 크기를 동적으로 조정하고 구성 및 부하에 따라 7~27개의 주소를 사용합니다. 나머지 주소는 App Service 요금제의 인스턴스에 사용할 수 있습니다. 서브넷의 최소 크기는 /27 주소 공간(32개 주소)입니다.
  • I1v2 Windows와 같은 App Service Environment에서 사용되는 App Service 요금제 OS/SKU 조합의 경우 활성 인스턴스 20개마다 대기 인스턴스 1개가 만들어집니다. 대기 인스턴스에도 IP 주소가 필요합니다.
  • App Service Environment에서 App Service 요금제의 크기를 조정/크기 조정할 때 크기 조정 작업이 완료되는 동안 App Service 요금제에서 사용하는 IP 주소의 양이 일시적으로 두 배가 됩니다. 기존 인스턴스의 프로비전이 해제되기 전에 새 인스턴스가 완전히 작동해야 합니다.
  • 플랫폼 업그레이드에는 아웃바운드 트래픽을 중단하지 않고 업그레이드를 수행할 수 있도록 무료 IP 주소가 필요합니다.
  • 스케일 업, 스케일 다운 또는 스케일 인 작업이 완료된 후 IP 주소가 해제되기까지 짧은 시간이 걸릴 수 있습니다. 드문 경우로 이 작업이 최대 12시간이 걸릴 수 있습니다.
  • 서브넷 내에서 주소가 부족한 경우 App Service Environment에서 App Service 요금제를 스케일 아웃하지 못하도록 제한할 수 있습니다. 또 다른 가능성은 Microsoft에서 지원 인프라의 크기를 조정할 수 없는 경우 트래픽 부하가 많이 발생하는 동안 대기 시간이 증가할 수 있다는 것입니다.

참고 항목

Windows 컨테이너는 각 App Service 요금제 인스턴스에 대해 앱당 추가 IP 주소를 사용하므로 이에 따라 서브넷 크기를 조정해야 합니다. 예를 들어 App Service Environment에 각각 25개의 인스턴스가 있고 각각 5개의 앱이 실행되는 2개의 Windows Container App Service 요금제가 있는 경우 수평 크기 조정(인/아웃)을 지원하려면 300개의 IP 주소 및 추가 주소가 필요합니다.

샘플 계산:

각 App Service 요금제 인스턴스에는 다음이 필요합니다. Windows Container Apps 5개 = IP 주소 5개 및 App Service 요금제 인스턴스당 IP 주소 1개, 따라서 5 + 1 = IP 주소 6개

25개 인스턴스에는 다음이 필요합니다. 6 x 25 = App Service 요금제당 IP 주소 150개

2개의 App Service 요금제가 있으므로 2 x 150 = 300개의 IP 주소가 필요합니다.

주소

App Service Environment에는 만들 때 다음과 같은 네트워크 정보가 있습니다.

주소 형식 설명
App Service Environment 가상 네트워크 배포된 가상 네트워크입니다.
App Service Environment 서브넷 배포된 서브넷입니다.
도메인 접미사 만든 앱에서 사용하는 도메인 접미사입니다.
VIP(가상 IP) 사용된 VIP 형식입니다. 가능한 두 값은 내부 및 외부입니다.
인바운드 주소 인바운드 주소는 앱이 도달하는 주소입니다. 내부 VIP가 있으면 App Service Environment 서브넷의 주소입니다. 주소가 외부에 있으면 공용 주소입니다.
기본 아웃바운드 주소 인터넷에 대한 아웃바운드 호출을 수행할 때 앱에서 기본적으로 이 주소를 사용합니다.

다음 스크린샷과 같이 포털의 IP 주소 부분에서 세부 정보를 찾을 수 있습니다.

IP 주소에 대한 세부 정보를 보여 주는 스크린샷

App Service Environment에서 App Service 요금제의 크기를 조정하면 서브넷에서 더 많은 주소를 사용할 수 있습니다. 사용하는 주소 수는 보유한 App Service 요금제 인스턴스 수와 트래픽 양에 따라 달라집니다. App Service Environment의 앱에는 서브넷의 전용 주소가 없습니다. 서브넷의 앱에서 사용하는 특정 주소는 시간이 지남에 따라 변경됩니다.

Bring Your Own 인바운드 주소

App Service Environment에 고유한 인바운드 주소를 가져올 수 있습니다. 내부 VIP가 포함된 App Service Environment를 만드는 경우 서브넷에 고정 IP 주소를 지정할 수 있습니다. 외부 VIP를 사용하여 App Service Environment를 만드는 경우 공용 IP 주소의 리소스 ID를 지정하여 자체 Azure 퍼블릭 IP 주소를 사용할 수 있습니다. 다음은 고유의 인바운드 주소를 가져오는 데 대한 제한 사항입니다.

  • 외부 VIP가 있는 App Service Environment의 경우 Azure 퍼블릭 IP 주소 리소스는 App Service Environment와 동일한 구독에 있어야 합니다.
  • App Service Environment를 만든 후에는 인바운드 주소를 변경할 수 없습니다.

포트 및 네트워크 제한

앱에서 트래픽을 받으려면 인바운드 NSG(네트워크 보안 그룹) 규칙에서 App Service Environment 서브넷이 필요한 포트로부터 트래픽을 받도록 허용해야 합니다. 트래픽을 받으려는 포트 외에도 Azure Load Balancer에서 80 포트의 서브넷에 연결할 수 있는지 확인해야 합니다. 이 포트는 내부 가상 머신의 상태 검사에 사용됩니다. 가상 네트워크에서 서브넷으로의 80 포트 트래픽을 계속 제어할 수 있습니다.

다음 인바운드 NSG 규칙을 구성하는 것이 좋습니다.

소스/대상 포트 Direction 원본 대상 목적
* / 80,443 인바운드 VirtualNetwork App Service Environment 서브넷 범위 앱 트래픽 및 내부 상태 ping 트래픽 허용

App Service Environment가 작동하기 위한 최소 요구 사항은 다음과 같습니다.

소스/대상 포트 Direction 원본 대상 목적
* / 80 인바운드 AzureLoadBalancer App Service Environment 서브넷 범위 내부 상태 ping 트래픽 허용

최소 필수 규칙을 사용하는 경우 애플리케이션 트래픽에 대해 하나 이상의 규칙이 필요할 수 있습니다. 배포 또는 디버깅 옵션을 사용하는 경우 App Service Environment 서브넷에 대한 이 트래픽도 허용해야 합니다. 이러한 규칙의 원본은 가상 네트워크이거나 하나 이상의 특정 클라이언트 IP 또는 IP 범위일 수 있습니다. 대상은 항상 App Service Environment 서브넷 범위입니다. 포트 80의 내부 상태 ping 트래픽은 부하 분산 장치와 내부 서버 간에 격리됩니다. 외부 트래픽은 상태 ping 엔드포인트에 도달할 수 없습니다.

일반적인 앱 액세스 포트 인바운드는 다음과 같습니다.

사용할 용어 Ports
HTTP/HTTPS 80, 443
FTP/FTPS 21, 990, 10001-10020
Visual Studio 원격 디버깅 4022, 4024, 4026
웹 배포 서비스 8172

참고 항목

FTP 액세스의 경우 포트 21에서 표준 FTP를 허용하지 않으려는 경우에도 특히 ftp 서비스에 대한 내부 상태 ping 트래픽에 사용되므로 포트 21에서 LoadBalancer에서 App Service Environment 서브넷 범위로의 트래픽을 허용해야 합니다.

네트워크 라우팅

경로 테이블은 제한 없이 설정할 수 있습니다. App Service Environment의 모든 아웃바운드 애플리케이션 트래픽을 Azure Firewall과 같은 송신 방화벽 디바이스로 터널링할 수 있습니다. 이 시나리오에서는 애플리케이션 종속성만 걱정해야 합니다.

애플리케이션 종속성에는 런타임 중에 앱에 필요한 엔드포인트가 포함됩니다. 앱이 호출하는 API 및 서비스 외에도 종속성은 CRL(인증서 해지 목록) 확인 엔드포인트 및 ID/인증 엔드포인트(예: Microsoft Entra ID)와 같은 파생 엔드포인트가 될 수도 있습니다. App Service에서 지속적인 배포를 사용하는 경우 형식 및 언어에 따라 엔드포인트를 허용해야 할 수도 있습니다. 특히 Linux 지속적인 배포의 경우 oryx-cdn.microsoft.io:443을 허용해야 합니다.

Azure Application Gateway와 같은 웹 애플리케이션 방화벽 디바이스를 인바운드 트래픽 앞에 배치할 수 있습니다. 이렇게 하면 해당 App Service Environment에서 특정 앱을 노출할 수 있습니다.

애플리케이션은 퍼블릭 엔드포인트로의 송신 트래픽에 기본 아웃바운드 주소 중 하나를 사용합니다. App Service Environment에서 애플리케이션의 아웃바운드 주소를 사용자 지정하려는 경우 NAT 게이트웨이를 서브넷에 추가할 수 있습니다.

참고 항목

아웃바운드 SMTP 연결(포트 25)은 App Service Environment v3에서 지원됩니다. 지원 가능성은 가상 네트워크가 배포되는 구독의 설정에 따라 결정됩니다. 2022년 8월 1일 이전에 만들어진 가상 네트워크/서브넷의 경우 구독에서 동기화할 설정을 위해 가상 네트워크/서브넷에 대한 임시 구성 변경을 시작해야 합니다. 예를 들어 임시 서브넷을 추가하거나, NSG를 일시적으로 연결/분리하거나, 서비스 엔드포인트를 일시적으로 구성하는 것이 있습니다. 자세한 내용 및 문제 해결은 Azure에서 아웃바운드 SMTP 연결 문제 해결을 참조하세요.

프라이빗 엔드포인트

프라이빗 엔드포인트를 App Service Environment에서 호스트되는 앱에 사용하도록 설정하려면 먼저 App Service Environment 수준에서 이 기능을 사용하도록 설정해야 합니다.

Azure Portal을 통해 활성화할 수 있습니다. App Service Environment 구성 포털 창에서 Allow new private endpoints 설정을 켭니다. 또는 다음 CLI에서 사용하도록 설정할 수 있습니다.

az appservice ase update --name myasename --allow-new-private-endpoint-connections true

프라이빗 엔드포인트 및 웹앱에 대한 자세한 내용은 Azure Web App 프라이빗 엔드포인트를 참조하세요.

DNS

다음 섹션에서는 App Service Environment에서 인바운드 및 아웃바운드를 적용하는 DNS 고려 사항 및 구성에 대해 설명합니다. 이 예제에서는 Azure 퍼블릭 클라우드의 appserviceenvironment.net 도메인 접미사를 사용합니다. Azure Government 같은 다른 클라우드를 사용하는 경우 해당 도메인 접미사를 사용해야 합니다. App Service Environment 도메인의 경우 DNS 제한으로 인해 사이트 이름이 40자에서 잘립니다. 슬롯이 있는 경우 슬롯 이름은 19자에서 잘립니다.

App Service Environment에 대한 DNS 구성

외부 VIP를 사용하여 App Service Environment를 만든 경우 앱은 자동으로 퍼블릭 DNS에 배치됩니다. App Service Environment가 내부 VIP로 만들어진 경우 App Service Environment를 만들 때 Azure DNS Private Zones가 자동으로 구성되도록 선택하면 가상 네트워크에 DNS가 구성됩니다. DNS를 수동으로 구성하도록 선택한 경우 사용자 고유의 DNS 서버를 사용하거나 Azure DNS 프라이빗 영역을 구성해야 합니다. 인바운드 주소를 찾으려면 App Service Environment 포털로 이동하여 IP 주소를 선택합니다.

사용자 고유의 DNS 서버를 사용하려면 다음 레코드를 추가합니다.

  1. <App Service Environment-name>.appserviceenvironment.net에 대한 영역을 만듭니다.
  2. 해당 영역에서 *를 App Service Environment에서 사용하는 인바운드 IP 주소로 가리키는 A 레코드를 만듭니다.
  3. 해당 영역에서 @를 App Service Environment에서 사용하는 인바운드 IP 주소로 가리키는 A 레코드를 만듭니다.
  4. scm으로 명명된 <App Service Environment-name>.appserviceenvironment.net에 영역을 만듭니다.
  5. scm 영역에서 *를 App Service Environment의 프라이빗 엔드포인트에서 사용하는 IP 주소로 가리키는 A 레코드를 만듭니다.

Azure DNS 프라이빗 영역에서 DNS를 구성하려면 다음을 수행합니다.

  1. <App Service Environment-name>.appserviceenvironment.net이라는 Azure DNS 프라이빗 영역을 만듭니다.
  2. 해당 영역에서 *를 인바운드 IP 주소로 가리키는 A 레코드를 만듭니다.
  3. 해당 영역에서 @를 인바운드 IP 주소로 가리키는 A 레코드를 만듭니다.
  4. 해당 영역에 *.scm으로 인바운드 IP 주소를 가리키는 A 레코드를 만듭니다.

앱을 만들 때 제공되는 기본 도메인 외에도 사용자 지정 도메인을 앱에 추가할 수도 있습니다. 사용자 지정 도메인 이름은 앱에 대한 유효성 검사 없이 설정할 수 있습니다. 사용자 지정 도메인을 사용하는 경우 DNS 레코드가 구성되어 있는지 확인해야 합니다. 앞의 지침에 따라 사용자 지정 도메인 이름에 대한 DNS 영역 및 레코드를 구성할 수 있습니다(기본 도메인 이름을 사용자 지정 도메인 이름으로 바꾸기만 하면 됨). 사용자 지정 도메인 이름은 앱 요청에 대해서는 작동하지만 scm 사이트의 경우에는 작동하지 않습니다. scm 사이트는 <appname>.scm.<asename>.appserviceenvironment.net에서만 사용할 수 있습니다.

FTP 액세스를 위한 DNS 구성

특히 ILB(Internal Load Balancer) App Service Environment v3에 FTP로 액세스하려면 DNS가 구성되어 있어야 합니다. 다음 설정을 사용하여 Azure DNS 개인 영역 또는 동등한 사용자 지정 DNS를 구성합니다.

  1. ftp.appserviceenvironment.net이라는 Azure DNS 프라이빗 영역을 만듭니다.
  2. 해당 영역에서 <App Service Environment-name>을 인바운드 IP 주소로 가리키는 A 레코드를 만듭니다.

DNS를 설정하는 것 외에도 앱 수준뿐만 아니라 App Service Environment 구성에서도 사용하도록 설정해야 합니다.

App Service Environment의 DNS 구성

App Service Environment의 앱은 가상 네트워크가 구성된 DNS를 사용합니다. 일부 앱에서 다른 DNS 서버를 사용하도록 하려면 WEBSITE_DNS_SERVERWEBSITE_DNS_ALT_SERVER 앱 설정을 사용하여 앱별로 수동으로 설정할 수 있습니다. WEBSITE_DNS_ALT_SERVER는 보조 DNS 서버를 설정합니다. 보조 DNS 서버는 주 DNS 서버에서 응답이 없는 경우에만 사용됩니다.

추가 리소스