안녕하세요.

베스핀글로벌 클라우드기술지원팀 이주원 입니다.


고객 문의 중 AMI 를 생성해 새로운 인스턴스로 복사하는 과정에서 오류가 발생한 내용을 바탕으로 작성한 FAQ 입니다.




Question


AMI 생성 완료 후 서버가 죽음. ssh 접속 불가하고 재부팅 및 중지 후 시작을 여러번 해보았으나 상태검사 실패(1/2) 됨. (인스턴스 연결성 검사 실패)


AMI 생성 시 서버가 종종 죽는 경우는 보았으나 금방 다시 복구되었었는데 이번같은 경우는 여러 시도를 해보았으나 AMI 대상 서버 및 생성된 AMI 모두 사용 불가능하였습니다. 낮은 타입의 인스턴스(t2.micro) 에서 AMI 를 생성해서 발생한 이슈일까요?






Answer


결론부터 말씀드리면 확인 결과 인스턴스 타입 사양 문제는 아니었고, AMI를 생성한 원본 인스턴스 구성사항으로 발생하는 문제였습니다.


AMI 생성 시 원본 인스턴스의 OS 및 프로그램, 구성된 모든 환경을 복제하기 때문에 오류 또한 동일하게 복사가 됩니다.


AMI를 통해 새로 생성된 인스턴스를 보면 문의주신 내용대로 인스턴스 상태검사가 실패로 인스턴스를 정상적으로 실행할 수 없는 상태였습니다.

인스턴스 상태검사 실패인 경우 주로 인스턴스 - 작업 - 모니터링 및 문제 해결 - 시스템 로그 가져오기 를 통해 문제를 확인해 볼 수 있습니다.


확인결과 아래와 같이 Python 스크립트를 실행하며 특정 모듈이 존재하지 않아 오류가 발생한 부분을 확인할 수 있었습니다.




단순히 생성된 AMI 를 통해 시작한 인스턴스에서 해당 오류가 발생한 이유는 당연하게도 AMI 의 원본 인스턴스에서 해당 부분에 문제가 있어 발생한 것으로 유추할 수 있습니다.

같은 방법으로 원본 인스턴스의 시스템 로그를 확인해본 결과 같은 오류가 발생한 것으로 확인했습니다.



즉, 원본 인스턴스에서 기본적으로 제공하는 Python 설정을 변경하였고 이 과정에서 특정 모듈이 누락되어 발생한 문제로 이러한 구성설정으로 이미지를 생성하여 인스턴스를 시작한 결과 제대로 시작할 수 없는 상태가 된 것 입니다.


그렇다면, 원본 인스턴스에서는 문제가 발생하지 않고 복제된 인스턴스에서만 문제가 발생한 이유는 원본 인스턴스 초기 구성 시 문제가 없는 AWS에서 제공하는 이미지를 통해 인스턴스를 시작 후 Python 환경을 수정한 것이지만 대상의 경우 이미 변경된 Python 환경으로 인스턴스를 시작하는 과정에서 오류가 발생하기 때문에 실행할 수 없는 것으로 확인됩니다.


또한, 인스턴스 시작시 Python이 문제를 일으키는 이유는 인스턴스 시작과 함께 cloud-init 명령이 실행되기 때문입니다. 이러한 명령은 Python을 통해 실행되는데 이때 Python이 정상적으로 실행되지 않아 발생한 문제입니다.



참고문서 : https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/user-data.html#user-data-shell-scripts


해당 문의는 원본 인스턴스에서 오류에서 확인한 해당 모듈을 추가 후 Python 오류가 발생하지 않도록 해결하고, 다시 AMI 생성 후 인스턴스 시작한 결과 정상적으로 실행되었습니다.



AMI를 만들기 전에 아래와 같은 정보들을 확인하는 작업들이 필요합니다.

�- 시작 프로그램 : 인스턴스 새롭게 시작 되면서 프로세스가 시작 될 수 있도록 되어 있는지,

- Disk 정보 : 리눅스의 경우, fstab과 같은 마운트 정보 확인

- 인스턴스 고유 정보 여부 : 직접적으로 IP가 들어가 있다거나, 대상 인스턴스에만 사용 되는 정보가 있지 않은지

- 외부 연결 정보 : 새롭게 만들어지는 인스턴스들과 연결 될 수 있는 구조인지



정리하자면 이번과 같은 문제는 원본 AMI 에서 발생하는 이슈로 인해 새로 시작한 인스턴스에서도 문제가 발생했던 것 입니다.

인스턴스 AMI 생성 후 실행하는 과정에서 문제가 발생했을 시 이번과 같이 원본 인스턴스에서 발생하는 문제가 없는 지, 시스템 로그 등을 통해 확인해보시기 바랍니다.



작성한 FAQ 가 도움이 되셨기를 바랍니다.




베스핀글로벌

클라우드기술지원팀

이주원