Amazon GameLift Servers 플릿 문제 디버깅
이 주제에서는 Amazon GameLift Servers 관리형 EC2 플릿의 문제를 해결하는 방법에 대한 지침을 제공합니다.
플릿 생성 문제
관리형 EC2 플릿을 생성하면 Amazon GameLift Servers 서비스가 플릿 생성, 게임 서버 빌드가 설치된 EC2 인스턴스 배포, 각 인스턴스에서 게임 서버 프로세스 시작을 실행하는 워크플로를 시작합니다. 자세한 설명은 섹션을 참조하세요. 플릿은 활성 상태에 도달할 때까지 게임 세션과 플레이어를 호스팅할 수 없습니다.
문제가 발생한 플릿 생성 단계를 식별하고 플릿 생성 이벤트 및 로그를 검토하여 플릿이 활성화되지 않도록 하는 문제를 디버깅할 수 있습니다. 만약 로그에서 유용한 정보를 찾을 수 없다면, 문제는 내부 서비스 오류일 가능성이 있습니다. 이 경우, 플릿을 다시 생성해 보세요. 문제가 지속되면 게임 빌드를 다시 업로드하여 파일 손상 가능성을 해결하세요. Amazon GameLift Servers 지원에 문의하거나 포럼에 질문을 게시해도 됩니다.
- 빌드 다운로드 및 검증
-
이 단계에서 Amazon GameLift Servers는 업로드된 게임 서버 빌드를 가져오고, 파일을 추출하고, 모든 설치 스크립트를 실행합니다. 이러한 단계에서 플릿 생성이 실패하면 플릿 이벤트와 로그를 확인하여 정확한 문제를 파악합니다. 가능한 원인은 다음과 같습니다.
-
Amazon GameLift Servers가 압축된 빌드 파일(이벤트
FLEET_BINARY_DOWNLOAD_FAILED)을 가져올 수 없습니다. 빌드의 스토리지 위치에 액세스할 수 있는지, 빌드와 동일한 AWS 리전에서 플릿을 생성하는지, Amazon GameLift Servers에 액세스할 수 있는 올바른 권한이 있는지 확인합니다. -
Amazon GameLift Servers가 빌드 파일(이벤트
FLEET_CREATION_EXTRACTING_BUILD)을 추출할 수 없습니다. -
빌드 파일의 설치 스크립트가 성공적으로 완료되지 않았습니다(이벤트
FLEET_CREATION_FAILED_INSTALLER).
-
- 플릿 리소스 구축
-
이 단계의 문제는 일반적으로 플릿 리소스의 할당 및 배포와 관련이 있습니다. 가능한 원인은 다음과 같습니다.
-
요청한 인스턴스 유형을 사용할 수 없습니다.
-
요청한 플릿 유형(스팟 또는 온디맨드)을 사용할 수 없습니다.
-
- 게임 서버 프로세스 활성화
-
이 단계에서는 Amazon GameLift Servers가 게임 서버 실행 가능성, 런타임 구성 설정, 서버 SDK를 사용하여 Amazon GameLift Servers 서비스와 상호 작용하는 게임 서버 기능을 비롯해 여러 요소에 대한 테스트와 같은 주요 요소를 테스팅하고 다양한 작업을 시도합니다.
참고
이 단계에서는 플릿 인스턴스에 원격으로 액세스하여 문제를 추가로 조사할 수 있습니다. Amazon GameLift Servers 플릿 인스턴스에 원격 액세스을(를) 참조하세요.
가능한 문제 양상은 다음과 같습니다.
서버 프로세스가 실행되지 않습니다. 이는 플릿의 런타임 구성 설정(이벤트
FLEET_VALIDATION_LAUNCH_PATH_NOT_FOUND또는FLEET_VALIDATION_EXECUTABLE_RUNTIME_FAILURE)과 관련한 문제일 수 있습니다. 시작 경로와 선택적 시작 파라미터를 올바르게 설정했는지 확인합니다.-
서버 프로세스가 시작되지만 플릿을 활성화할 수 없습니다. 서버 프로세스가 시작되고 계속 성공적으로 실행되지만 플릿이 활성 상태로 변경되지 않는 경우는 서버 프로세스가 Amazon GameLift Servers와 통신하는 데 실패했기 때문일 가능성이 높습니다. 게임 서버가 이러한 올바른 서버 SDK 호출을 수행하고 있는지 확인합니다(서버 프로세스 초기화 참조).
-
서버 프로세스가 초기화되지 않습니다(이벤트
SERVER_PROCESS_SDK_INITIALIZATION_TIMEOUT). 서버 프로세스가InitSdk()를 성공적으로 호출하지 못했습니다. -
서버 프로세스가 게임 세션을 호스팅할 준비가 되었음을 Amazon GameLift Servers에 알리지 못합니다(이벤트
SERVER_PROCESS_PROCESS_READY_TIMEOUT). 서버 프로세스가 초기화되었지만ProcessReady()호출이 제시간에 이뤄지지 않았습니다.
-
-
VPC 피어링 연결 요청에 실패했습니다. VPC 피어링 연결로 생성되는 플릿은(새 플릿으로 VPC 피어링을 설정하려면 참조) 이 활성화 단계에서 VPC 피어링이 실행됩니다. 어떤 이유로든 VPC 피어링에 실패할 경우 새 플릿이 활성 상태로 바뀌지 못합니다. describe-vpc-peering-connections를 호출하여 피어링 요청이 성공했는지 여부를 추적할 수 있습니다. 유효한 VPC 피어링 권한 부여가 존재하는지 확인해야 합니다(describe-vpc-peering-authorizations). 권한 부여는 24시간 동안만 유효하기 때문입니다.
서버 프로세스 문제
- 서버 프로세스가 시작되었지만 곧 실패했거나 상태 불량을 보고합니다.
-
게임 빌드와 관련된 문제 외에, 인스턴스에서 동시에 너무 많은 서버 프로세스를 실행하려고 할 경우에도 이런 결과가 발생할 수 있습니다. 동시에 실행 가능한 최적 프로세스 수는 인스턴스 유형과 게임 서버의 리소스 요구 사항에 따라 다릅니다. 성능이 개선되는지 보려면 플릿의 런타임 구성에 설정되어 있는 동시 프로세스 수를 줄여보세요. Amazon GameLift Servers 콘솔(플릿의 용량 할당 설정 편집)을 사용하거나 AWS CLI 명령 update-runtime-configuration을 호출하여 플릿의 실행 시간 구성을 변경할 수 있습니다.
플릿 삭제 문제
- 최대 인스턴스 카운트 때문에 플릿을 종료할 수 없습니다.
-
이 오류 메시지는 삭제되어 허용되면 안 되는 플릿의 인스턴스가 여전히 활성 상태임을 나타냅니다. 먼저 플릿의 활성 인스턴스를 0으로 축소해야 합니다. 플릿의 인스턴스 카운트를 “0”으로 직접 설정한 후 스케일 다운이 적용될 때까지 기다립니다. 수동 설정에 방해가 되므로 Auto Scaling 기능을 해제해야 합니다.
- VPC 작업이 허용되지 않습니다.
-
이 문제는 특히 VPC 피어링 연결을 생성한 플릿에만 적용됩니다(Amazon GameLift Servers의 VPC 피어링 설정 참조). 이 시나리오는 플릿 삭제 프로세스에 플릿의 VPC 및 모든 VPC 피어링 연결 삭제도 포함되기 때문에 발생합니다. 먼저 Amazon GameLift Servers용 API CreateVpcPeeringAuthorization()을 호출하거나 AWS CLI 명령
create-vpc-peering-authorization을 사용하여 승인을 받아야 합니다. 권한을 받은 후에 플릿을 삭제할 수 있습니다.