기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
네트워크 구성 및 포트 설정
이 섹션에서는 VPC 설정, 포트 구성 및 다중 사이트 배포를 포함한 IIS 마이그레이션을 위한 네트워크 구성 옵션을 다룹니다.
VPC 구성
eb migrate 명령은 Elastic Beanstalk 환경에 대한 유연한 VPC 구성 옵션을 제공합니다. 도구는 소스 EC2 인스턴스에서 VPC 설정을 감지하거나 명령줄 파라미터를 통해 사용자 지정 VPC 구성을 수락할 수 있습니다. Amazon VPC에서 Elastic Beanstalk 사용를 검토하여 VPC로 Elastic Beanstalk를 구성하는 방법을 이해합니다.
자동 VPC 감지
가 EC2 인스턴스에서 eb migrate 실행되면 소스 환경의 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 클라우드 호스트
가 온프레미스 서버 또는 클라우드가 아닌AWS 호스트에서 eb migrate 실행되면 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 설정을 무시합니다--vpc-config
. 이 파라미터를 사용하는 경우 마이그레이션은 전달하려는 구성 파일에 지정된 VPC 설정만 사용합니다. 이 파라미터를 사용하면 소스 인스턴스의 VPC 구성을 검색하거나 기본 VPC를 사용하는 기본 동작이 재정의됩니다.
다음 시나리오에서 --vpc-config
파라미터를 사용합니다.
-
검색 가능한 VPC 설정이 없는 non-EC2 환경을 마이그레이션하는 경우
-
소스 환경에서 사용하는 VPC와 다른 VPC로 마이그레이션하는 경우
-
서브넷 선택 또는 보안 그룹 구성을 사용자 지정해야 하는 경우
-
자동 검색이 원하는 VPC 설정을 올바르게 식별하지 못하는 경우
-
온프레미스에서 마이그레이션하고 기본 VPC를 사용하지 않으려는 경우
네트워크 보안 구성
기본적으로는 대상 인스턴스에서 포트 80을 eb migrate 열지만 소스 시스템에서 다른 Windows 방화벽 규칙은 복사하지 않습니다. 모든 방화벽 구성을 포함하려면 다음 명령을 사용합니다.
PS C:\migrations_workspace>
eb migrate --copy-firewall-config
이 명령은 다음 작업을 수행합니다.
-
IIS 사이트 바인딩에서 사용하는 포트를 식별합니다.
-
해당 방화벽 규칙을 검색합니다.
-
PowerShell 스크립트를 생성하여 대상 인스턴스에 대한 규칙을 다시 생성합니다.
-
소스 시스템에서 포트 80에 대한 모든 DENY 규칙을 보존합니다(그렇지 않으면 포트 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 포트를 추출합니다.
-
Windows 방화벽 INetFwPolicy2
인터페이스를 사용하여 방화벽 규칙을 열거합니다. -
지정된 포트를 명시적으로 참조하는 규칙만 포함하도록 규칙을 필터링합니다.
-
HTTP 및 HTTPS 사이트 바인딩과 관련 방화벽 규칙만 처리
-
표시 이름, 작업, 프로토콜 및 활성화 상태를 포함한 규칙 속성을 보존합니다.
-
방화벽 규칙에서 개별 포트와 포트 범위를 모두 처리합니다.
-
배포 매니페스트에 방화벽 구성 스크립트를 추가합니다.
로드 밸런서 구성
--vpc-config
인수를 통해 Load Balancer 구성을 지정할 수 있습니다. 다음 예제에서는 파라미터를 보여줍니다.
- 스키마 선택
-
퍼블릭 및 프라이빗 로드 밸런서 체계 중에서 선택합니다.
{ "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를 사용한 환경 생성을 지원하지만 명령은 Application Load Balancereb migrate만 지원합니다. 로드 밸런서 유형에 대한 자세한 내용은 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 명령은 각 사이트의 자격 증명과 구성을 보존하는 배포 패키지를 생성합니다. 명령은 이러한 사이트를 배포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 트래픽 경로
-
InternalAPI로 연결되는 포트 8081 트래픽 경로
-
ReportingPortal로 향하는 포트 8082 트래픽 경로
공유 구성 및 종속성
사이트가 구성 또는 종속성을 공유하는 경우는 이러한 관계를 적절하게 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 인스턴스에 별도의 서브넷 사용
-
적절한 라우팅 테이블 및 NACLs 구현
-
AWS 서비스에 대한 VPC 엔드포인트 고려
-
- 높은 가용성
-
-
여러 가용 영역에 걸쳐 배포
-
로드 밸런서에 최소 2개의 서브넷 사용
-
AZs 간 Auto Scaling 구성
-
적절한 상태 확인 구현
-
- 보안
-
-
보안 모범 사례 준수
-
보안 그룹을 기본 액세스 제어로 사용
-
추가 보안을 위한 네트워크 액세스 제어 목록(ACLs) 구현
-
VPC 흐름 로그 모니터링
-
문제 해결
일반적인 네트워크 구성 문제는 다음과 같습니다. 다음 각 주제는 환경의 네트워크 구성 및 상태에 대한 자세한 정보를 얻기 위한 예제 명령입니다.
- 서브넷 구성
-
# Verify subnet availability
PS C:\migrations_workspace>
aws ec2 describe-subnets --subnet-ids subnet-id
# Check available IP addresses
PS C:\migrations_workspace>
aws ec2 describe-subnets --subnet-ids subnet-id --query 'Subnets[].AvailableIpAddressCount'
- 보안 그룹 액세스
-
# Verify security group rules
PS C:\migrations_workspace>
aws ec2 describe-security-groups --group-ids sg-id
# Test network connectivity
PS C:\migrations_workspace>
aws ec2 describe-network-interfaces --filters Name=group-id,Values=sg-id
- 로드 밸런서 상태
-
# Check load balancer health
PS C:\migrations_workspace>
aws elbv2 describe-target-health --target-group-arn arn:aws:elasticloadbalancing:region:account-id:targetgroup/group-name/group-id