기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
네트워크 구성 및 포트 설정
이 섹션은 VPC 설정, 포트 구성, 다중 사이트 배포를 포함한 IIS 마이그레이션의 네트워크 구성 옵션을 다룹니다.
VPC 구성
eb migrate 명령은 Elastic Beanstalk 환경을 위한 유연한 VPC 구성 옵션을 제공합니다. 이 도구는 소스 EC2 인스턴스에서 VPC 설정을 감지하거나, 명령줄 파라미터를 통해 사용자 지정 VPC 구성을 받을 수 있습니다. VPC와 함께 Elastic Beanstalk을 구성하는 방법을 이해하려면 Amazon VPC에서 Elastic Beanstalk 사용을 검토하세요.
자동 VPC 감지
eb migrate가 EC2 인스턴스에서 실행될 때는, 소스 환경의 EC2 인스턴스에서 VPC 구성을 자동으로 검색해 사용합니다. 다음 예시 출력은 감지한 구성 정보를 보여 줍니다.
PS C:\migrations_workspace > eb migrate
Identifying VPC configuration of this EC2 instance (i-0123456789abcdef0):
id: vpc-1234567890abcdef0
publicip: true
elbscheme: public
ec2subnets: subnet-123,subnet-456,subnet-789
securitygroups: sg-123,sg-456
elbsubnets: subnet-123,subnet-456,subnet-789
...
감지된 구성에는 다음이 포함됩니다.
-
VPC 식별자
-
퍼블릭 IP 할당 설정
-
로드 밸런서 체계(퍼블릭/프라이빗)
-
EC2 인스턴스 서브넷 할당
-
보안 그룹 연결
-
로드 밸런서 서브넷 할당
온프레미스 또는 비AWS 클라우드 호스트
eb migrate가 온프레미스 서버 또는 비AWS 클라우드 호스트에서 실행될 경우, Elastic Beanstalk 서비스는 AWS 계정의 기본 VPC를 사용합니다. 다음은 예시 명령 및 출력입니다.
PS C:\migrations_worspace> eb migrate `
-k windows-test-pem `
--region us-east-1 `
-a EBMigratedEnv `
-e EBMigratedEnv-test2 `
--copy-firewall-config
Determining EB platform based on host machine properties
Using .\migrations\latest to contain artifacts for this migration run.
...
Elastic Beanstalk가 환경에 대해 기본 VPC를 어떻게 구성하는지 이해하려면 Amazon VPC에서 Elastic Beanstalk 사용를 검토하세요.
사용자 지정 VPC 구성
특정 VPC 설정이 필요한 모든 소스 환경(EC2, 온프레미스, 또는 비AWS 클라우드)의 경우, 다음 예시와 같은 VPC 구성 파일을 제공하세요.
{ "id": "vpc-12345678", "publicip": "true", "elbscheme": "public", "ec2subnets": ["subnet-a1b2c3d4", "subnet-e5f6g7h8"], "securitygroups": "sg-123456,sg-789012", "elbsubnets": ["subnet-a1b2c3d4", "subnet-e5f6g7h8"] }
다음 명령을 사용하여 이 구성을 적용합니다.
PS C:\migrations_workspace>eb migrate --vpc-config vpc-config.json
참고
VPC 구성 파일에는 VPC ID를 지정하는 id 필드가 필요합니다. 나머지 필드는 선택 사항이며, Elastic Beanstalk은 지정하지 않은 필드에 대해 기본값을 사용합니다.
중요
--vpc-config 파라미터를 지정하면, 마이그레이션 시 소스 환경의 기존 VPC 설정은 무시됩니다. 이 파라미터를 사용하면 마이그레이션은 전달되는 구성 파일에 지정된 VPC 설정만 사용합니다. 이 파라미터를 사용하면 기본 동작(소스 인스턴스의 VPC 구성을 자동으로 탐색하거나 기본 VPC를 사용하는 동작)이 재정의됩니다.
다음과 같은 시나리오에서는 --vpc-config 파라미터를 사용하세요.
-
탐지 가능한 VPC 설정이 없는 비EC2 환경을 마이그레이션할 경우
-
소스 환경에서 사용한 VPC와 다른 VPC로 마이그레이션할 경우
-
서브넷 선택 또는 보안 그룹 구성을 사용자 지정해야 하는 경우
-
자동 검색에서 원하는 VPC 설정을 올바르게 식별하지 못하는 경우
-
온프레미스에서 마이그레이션할 때 기본 VPC를 사용하고 싶지 않은 경우
네트워크 보안 구성
기본적으로 eb migrate는 대상 인스턴스에서 포트 80만 엽니다. 그러나 소스 시스템의 다른 Windows 방화벽 규칙은 복사하지 않습니다. 모든 방화벽 구성을 포함하려면 다음 명령을 사용하세요.
PS C:\migrations_workspace>eb migrate --copy-firewall-config
이 명령은 다음 작업을 수행합니다.
-
IIS 사이트 바인딩에서 사용하는 포트 식별
-
해당 방화벽 규칙 검색
-
PowerShell 스크립트를 생성하여 대상 인스턴스에 대한 규칙 재생성
-
소스 시스템에서 포트 80에 대한 모든 거부 규칙 보존(그렇지 않으면 포트 80이 기본적으로 허용됨)
소스 시스템에 다음 예제에 지정된 방화벽 규칙이 있는 사용 사례를 고려합니다.
# Source machine firewall configuration Get-NetFirewallRule | Where-Object {$_.Enabled -eq 'True'} | Get-NetFirewallPortFilter | Where-Object {$_.LocalPort -eq 80 -or $_.LocalPort -eq 443 -or $_.LocalPort -eq 8081} # Output shows rules for ports 80, 443, and 8081
마이그레이션은 다음 구성을 포함하는 스크립트(modify_firewall_config.ps1)를 생성합니다.
New-NetFirewallRule -DisplayName "Allow Web Traffic" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 80,443 New-NetFirewallRule -DisplayName "Allow API Traffic" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 8081
마이그레이션 도구는 다음 작업을 자동으로 수행합니다.
-
모든 IIS 사이트 바인딩에서 HTTP/HTTPS 포트 추출
-
INetFwPolicy2
인터페이스를 사용해 방화벽 규칙 열거 -
지정한 포트를 명시적으로 참조하는 규칙만 포함하도록 필터링
-
HTTP 및 HTTPS 사이트 바인딩과 해당 바인딩에 연결된 방화벽 규칙만 처리
-
표시 이름, 작업, 프로토콜 및 활성화 상태를 포함한 규칙 속성 유지
-
방화벽 규칙에서 개별 포트와 포트 범위를 모두 처리
-
배포 매니페스트에 방화벽 구성 스크립트를 추가합니다.
로드 밸런서 구성
--vpc-config 인수를 통해 로드 밸런서 구성을 지정할 수 있습니다. 다음 예시는 해당 파라미터의 사용 방법을 보여줍니다.
- 스키마 선택
-
퍼블릭 및 프라이빗 로드 밸런서 방식을 선택합니다.
{ "id": "vpc-12345678", "elbscheme": "private", "elbsubnets": ["subnet-private1", "subnet-private2"] } - 서브넷 배포
-
고가용성을 위해 로드 밸런서 서브넷을 여러 가용 영역에 분산하세요.
{ "elbsubnets": [ "subnet-az1", // Availability Zone 1 "subnet-az2", // Availability Zone 2 "subnet-az3" // Availability Zone 3 ] }
참고
Elastic Beanstalk은 Application Load Balancer, Network Load Balancer 및 Classic Load Balancer를 사용하는 환경 생성을 지원하지만, eb migrate 명령은 Application Load Balancer만 지원합니다. 로드 밸런서 유형에 대한 자세한 내용은 Elastic Beanstalk 환경의 로드 밸런서을 참조하세요.
포트 구성이 포함된 다중 사이트 배포
이 eb migrate 명령은 애플리케이션이 종속성을 공유하거나 비표준 포트를 사용할 수 있는 복잡한 다중 사이트 IIS 배포를 처리합니다. 다중 사이트를 포함한 일반적인 엔터프라이즈 설정의 다음 예시를 고려하세요.
<!-- IIS Configuration --> <sites> <site name="Default Web Site" id="1"> <bindings> <binding protocol="http" bindingInformation="*:80:www.example.com" /> </bindings> </site> <site name="InternalAPI" id="2"> <bindings> <binding protocol="http" bindingInformation="*:8081:api.internal" /> </bindings> </site> <site name="ReportingPortal" id="3"> <bindings> <binding protocol="http" bindingInformation="*:8082:reports.internal" /> </bindings> </site> </sites>
이 구성을 마이그레이션하려면 다음 예제 명령과 파라미터를 사용하세요.
PS C:\migrations_workspace>eb migrate ` --sites "Default Web Site,InternalAPI,ReportingPortal" ` --copy-firewall-config ` --instance-type "c5.large"
eb migrate 명령은 각 사이트의 ID와 구성을 유지하는 배포 패키지를 생성합니다. 명령은 이러한 사이트가 어떻게 배포되어야 하는지 정의하는 aws-windows-deployment-manifest.json를 생성합니다. 다음 예제에서는 생성된 JSON 파일을 보여 줍니다.
{ "manifestVersion": 1, "deployments": { "msDeploy": [ { "name": "DefaultWebSite", "parameters": { "appBundle": "DefaultWebSite.zip", "iisPath": "/", "iisWebSite": "Default Web Site" } } ], "custom": [ { "name": "InternalAPI", "scripts": { "install": { "file": "ebmigrateScripts\\install_site_InternalAPI.ps1" }, "restart": { "file": "ebmigrateScripts\\restart_site_InternalAPI.ps1" }, "uninstall": { "file": "ebmigrateScripts\\uninstall_site_InternalAPI.ps1" } } }, { "name": "ReportingPortal", "scripts": { "install": { "file": "ebmigrateScripts\\install_site_ReportingPortal.ps1" }, "restart": { "file": "ebmigrateScripts\\restart_site_ReportingPortal.ps1" }, "uninstall": { "file": "ebmigrateScripts\\uninstall_site_ReportingPortal.ps1" } } } ] } }
마이그레이션 프로세스는 원래 라우팅 로직을 유지하는 다음과 같은 Application Load Balancer 리스너 규칙을 생성합니다.
-
포트 80 트래픽은 Default Web Site로 라우팅됨
-
포트 8081 트래픽은 InternalAPI로 라우팅됨
-
포트 8082 트래픽은 ReportingPortal로 라우팅됨
공유 구성 및 종속성
사이트가 구성을 공유하거나 종속성을 갖는 경우, eb migrate는 이러한 관계를 적절하게 처리합니다. 여러 사이트가 공통 구성을 공유하는 다음 예제를 참조하세요.
<!-- Shared configuration in applicationHost.config --> <location path="Default Web Site"> <system.webServer> <asp enableSessionState="true" /> <caching enabled="true" enableKernelCache="true" /> </system.webServer> </location>
마이그레이션 프로세스는 다음 작업을 완료합니다.
-
사이트 간에 공유되는 구성 식별
-
이러한 설정을 적용하기 위한 적절한 PowerShell 스크립트를 생성합니다.
-
구성 계층 구조와 상속 유지
모범 사례
마이그레이션된 애플리케이션의 네트워크 구성을 설정할 때에는 모범 사례를 따르는 것이 좋습니다. 다음 그룹은 요약 지침을 제공합니다.
- VPC 설계
-
-
AWS VPC 설계 모범 사례 준수
-
로드 밸런서 및 EC2 인스턴스에 별도의 서브넷 사용
-
적절한 라우팅 테이블과 NACL 구현
-
AWS 서비스에 대한 VPC 엔드포인트 고려
-
- 높은 가용성
-
-
여러 가용 영역에 걸쳐 배포
-
로드 밸런서에 두 개 이상의 서브넷 사용
-
AZ 전반에 오토 스케일링 구성
-
적절한 상태 확인 구현
-
- 보안
-
-
보안 모범 사례 준수
-
보안 그룹을 기본 액세스 제어로 사용
-
추가적인 보안을 위해 네트워크 액세스 제어 목록(ACL) 구현
-
VPC 흐름 로그 모니터링
-
문제 해결
일반적인 네트워크 구성 문제에는 다음 영역이 포함됩니다. 각 주제 뒤에는 환경의 네트워크 구성과 상태에 대한 정보를 더 확인할 수 있는 예시 명령이 제공됩니다.
- 서브넷 구성
-
# Verify subnet availabilityPS C:\migrations_workspace>aws ec2 describe-subnets --subnet-ids subnet-id# Check available IP addressesPS C:\migrations_workspace>aws ec2 describe-subnets --subnet-ids subnet-id --query 'Subnets[].AvailableIpAddressCount' - 보안 그룹 액세스
-
# Verify security group rulesPS C:\migrations_workspace>aws ec2 describe-security-groups --group-ids sg-id# Test network connectivityPS C:\migrations_workspace>aws ec2 describe-network-interfaces --filters Name=group-id,Values=sg-id - 로드 밸런서 상태
-
# Check load balancer healthPS C:\migrations_workspace>aws elbv2 describe-target-health --target-group-arn arn:aws:elasticloadbalancing:region:account-id:targetgroup/group-name/group-id