View a markdown version of this page

문제 해결 - AWS의 분산 로드 테스트

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

문제 해결

알려진 문제 해결은 알려진 오류를 완화하기 위한 지침을 제공합니다. 이러한 지침으로 문제가 해결되지 않는 경우 AWS Support에 문의하세요.이 솔루션에 대한 AWS Support 사례를 개설하기 위한 지침을 제공합니다.

알려진 문제 해결

문제: 기존 VPC를 사용 중이며 테스트가 실패하고 상태가 실패인 경우 다음 오류 메시지가 표시됩니다.

Test might have failed to run.

  • ​해결 방법:

서브넷이 지정된 VPC에 존재하고 인터넷 게이트웨이 또는 NAT 게이트웨이가 있는 인터넷 경로가 있는지 확인합니다. AWS Fargate는 테스트를 성공적으로 실행하기 위해 퍼블릭 리포지토리에서 컨테이너 이미지를 가져올 수 있는 액세스 권한이 필요합니다.

문제: 테스트가 실행하는 데 너무 오래 걸리거나 무기한으로 실행되지 않음

  • ​해결 방법:

테스트를 취소하고 AWS Fargate를 확인하여 모든 작업이 중지되었는지 확인합니다. 중지하지 않은 경우 모든 Fargate 작업을 수동으로 중지합니다. 계정의 온디맨드 Fargate 작업 제한을 확인하여 원하는 작업 수를 시작할 수 있는지 확인합니다. 또한 Lambda 태스크 러너 함수에 대한 CloudWatch 로그를 확인하여 Fargate 태스크를 시작할 때 실패를 더 자세히 파악할 수 있습니다. 실행 중인 Fargate 컨테이너에서 발생하는 상황에 대한 자세한 내용은 CloudWatch ECS 로그를 확인하세요.

문제: 테스트가 시작되었지만 완료되지 않거나 ECS 작업의 상태를 알 수 없음

  • ​해결 방법:

솔루션이 배포된 계정에서 기존 VPC를 제공하는 옵션을 선택한 경우 ECS 작업에서 사용 중인 VPC에 테스트 입력에 제공된 작업 수를 시작하기에 충분한 여유 IP 주소가 있는지 확인합니다. ECS 작업 정의는 인터넷 게이트웨이 또는 인터넷 경로가 필요한 ECR 이미지를 사용하므로 ECS 서비스는 aws-solutions/distributed-load-testing-on-aws-load-tester에서 솔루션 ECR 이미지를 다운로드하여 작업을 프로비저닝할 수 있습니다. VPC의 모든 서브넷이 프라이빗이므로 인터넷 경로를 제공할 수 없는 경우 ECR 풀스루 캐시를 사용하여 계정에서 ECR 이미지를 호스팅할 수 있습니다. 작업 정의를 새 ECR 이미지 URI로 업데이트하고 새 개정을 생성합니다. 작업 정의가 업데이트되면 새 개정을 사용하려면 DynamoDB 테이블의 솔루션 구성을 업데이트해야 합니다. DynamoDB 테이블 이름은 키 ScenariosTable 아래의 CloudFormation 스택 출력 탭에서 찾을 수 있습니다. 키 testId 및 값 region-[SOLUTION-DEPLOYED-REGION]을 사용하여 항목에 대한 속성 taskDefinition을 업데이트합니다.

문제: 테스트는 프라이빗이거나 인터넷 게이트웨이를 통해 사용할 수 없는 엔드포인트를 사용해야 합니다.

  • ​해결 방법:

인터넷 게이트웨이를 통해 액세스할 수 없는 프라이빗 API 엔드포인트를 테스트할 때는 다음 접근 방식을 고려하세요.

  1. 네트워크 구성: ECS 작업에서 사용하는 서브넷 라우팅 테이블이 테스트 중인 프라이빗 엔드포인트의 IP 주소 범위에 대한 경로로 업데이트되었는지 확인합니다. 이렇게 하면 테스트 트래픽이 VPC 내의 프라이빗 엔드포인트에 도달할 수 있습니다.

  2. DNS 확인: 사용자 지정 도메인의 경우 프라이빗 엔드포인트의 도메인 이름을 확인하도록 VPC의 DNS 설정을 구성합니다. 자세한 지침은 VPC DNS 설명서를 참조하세요.

  3. VPC 엔드포인트: AWS 서비스를 테스트하는 경우 VPC 엔드포인트(AWS PrivateLink)를 사용하여 프라이빗 연결을 설정하는 것이 좋습니다. 예를 들어 프라이빗 API Gateway를 테스트하려면 API Gateway에 대한 VPC 엔드포인트를 생성할 수 있습니다. 프라이빗 API Gateway 설명서를 참조하세요.

  4. VPC 피어링: 프라이빗 엔드포인트가 다른 VPC에 있는 경우 솔루션이 배포되는 VPC와 프라이빗 엔드포인트가 포함된 VPC 간에 VPC 피어링을 설정합니다. 두 VPCs 구성합니다. VPC 피어링 설명서를 참조하세요.

  5. Transit Gateway: 여러 VPCs 포함된 보다 복잡한 네트워킹 시나리오의 경우 AWS Transit Gateway를 사용하여 솔루션의 VPC와 프라이빗 엔드포인트가 포함된 VPC 간에 트래픽을 라우팅하는 것이 좋습니다. Transit Gateway 설명서를 참조하세요.

  6. 보안 그룹: ECS 태스크와 연결된 보안 그룹이 프라이빗 엔드포인트로의 아웃바운드 트래픽을 허용하고 프라이빗 엔드포인트의 보안 그룹이 ECS 태스크의 인바운드 트래픽을 허용하는지 확인합니다.

내부 Application Load Balancer 또는 EC2 인스턴스를 테스트하려면 VPC CIDR 범위가 겹치지 않고 필요한 경로가 라우팅 테이블에 구성되어 있는지 확인합니다.

문제: 테스트가 완료되었지만 UI에서 결과를 사용할 수 없음

  • ​해결 방법:

테스트가 완료되었지만 UI에서 결과를 사용할 수 없는 경우 테스트를 실행한 ECS 작업의 S3 버킷에서 결과 파일을 계속 사용할 수 있어야 합니다. 이는 솔루션에서 알려진 제한 사항입니다. 현재 아키텍처에서 솔루션은 결과 구문 분석 Lambda 함수를 사용하여 여러 ECS 작업의 결과를 요약한 다음 DynamoDB 테이블에 항목으로 저장됩니다. DynamoDB 테이블의 최대 항목 크기는 400KB입니다. 이 제한은 테스트 스크립트의 복잡성, 동시성 및 사용 중인 작업 수에 따라 결정됩니다. 오류는 테스트가 실패하고 있음을 의미하지 않으며, 결과를 요약하고 CRUD 작업을 위해 DynamoDB 테이블에 저장하는 프로세스가 실패했음을 나타냅니다. 결과는 테스트 시나리오의 S3 버킷에서 계속 사용할 수 있습니다.

ALB + ECS Fargate 배포 문제

문제: ACM 인증서 검증이 "검증 보류 중" 상태에서 멈춤

  • ​해결 방법:

DNS 검증을 사용하여 퍼블릭 ACM 인증서를 요청한 경우 ACM에서 제공하는 CNAME 레코드를 DNS 구성에 추가해야 합니다. ACM 콘솔로 이동하여 인증서 세부 정보를 확장하고 DNS 검증 레코드를 도메인의 DNS 공급자에 추가합니다. 이메일 검증을 사용한 경우 도메인과 연결된 이메일 주소에서 AWS의 검증 이메일을 확인합니다. 자세한 내용은 AWS Certificate Manager 사용 설명서DNS 검증을 참조하세요.

문제: 웹 콘솔이 배포 후 "502 Bad Gateway" 또는 "503 Service Temporarily Unavailable" 오류를 반환합니다.

  • ​해결 방법:

EC2 콘솔에서 ALB 대상 그룹 상태 확인을 확인합니다. ECS Fargate 작업이 비정상으로 표시되면 ECS 콘솔에서 작업이 실행 중인지 확인하고 CloudWatch의 작업 로그에 오류가 있는지 확인합니다. ECS 태스크에 연결된 보안 그룹이 ALB 보안 그룹의 인바운드 트래픽을 허용하는지 확인합니다.

문제: DNS가 구성되었지만 사용자 지정 도메인이 웹 콘솔로 확인되지 않음

  • ​해결 방법:

사용자 지정 도메인(예: console.example.com)을 CloudFormation 출력의 ALB DNS 이름에 매핑하여 CNAME 레코드가 DNS 공급자에 올바르게 구성되어 있는지 확인합니다. DNS 전파는 DNS 공급자 및 TTL 설정에 따라 최대 48시간이 걸릴 수 있습니다. dig console.example.com CNAME 또는를 사용하여 DNS 레코드를 확인할 수 있습니다nslookup console.example.com.

문제: 배포 후 웹 콘솔에서 “403 금지됨” 오류 반환

  • ​해결 방법:

ALB 앞에 배포된 AWS WAF 웹 ACL이 합법적인 요청을 차단하고 있을 수 있습니다. AWS WAF 콘솔을 열고 ALB와 연결된 웹 ACL을 선택한 다음 샘플링된 요청 탭을 확인하여 트래픽을 차단하는 규칙을 식별합니다. 차단된 요청을 허용하도록 WAF 규칙을 수정할 수 있습니다. 예를 들어 관리형 규칙 그룹이 거짓 긍정을 생성하는 경우 특정 규칙 작업을 차단 대신 개수로 설정하여 트래픽을 로깅하는 동안 트래픽을 허용할 수 있습니다. 자세한 내용은 AWS WAF 개발자 안내서의 AWS WAF 보호 테스트 및 튜닝을 참조하세요. AWS WAF

헤드리스(자체 웹 서버 제공) 배포 문제

문제: API에 연결할 때 웹 콘솔에 CORS 오류 표시

  • ​해결 방법:

도메인에 호스팅된 웹 콘솔이 솔루션의 API Gateway 엔드포인트를 호출하려고 할 때 CORS(Cross-Origin Resource Sharing) 오류가 발생합니다. API Gateway 엔드포인트에는 HTTPS가 필요하므로 웹 서버가 HTTPS를 통해 콘솔을 제공하고 있는지 확인합니다. 웹 서버의 오리진 도메인이 API Gateway CORS 설정에 구성된 허용된 오리진과 일치하는지 확인합니다. 사용자 지정 도메인을 사용하는 경우 도메인을 포함하도록 API Gateway CORS 구성을 업데이트해야 할 수 있습니다.

문제: 웹 콘솔이 로드되지만 인증이 실패하거나 잘못 리디렉션됨

  • ​해결 방법:

웹 콘솔 자산에는 Cognito 사용자 풀 설정 및 API 엔드포인트 URL이 있는 구성 파일이 포함됩니다. 추출 중에이 구성 파일이 수정되지 않았는지 확인합니다. Cognito는 콜백 URLs에 HTTPS를 요구하므로 웹 서버가 HTTPS를 통해 콘솔을 제공하고 있는지 확인합니다. Cognito 앱 클라이언트 콜백 URL에 웹 서버의 도메인이 포함되어 있는지 확인합니다.