본문 바로가기

Server Infra/AWS

EC2 인스턴스 상태 검사 문제 해결과정

728x90

고객사의 요청으로 비용 절감을 위해 Instance Type 수정과정 부하 테스트를 위해 기존에 테스트로 사용하던  EC2의 AMI를 생성하여 Instance를 만들었다. 

 

처음에는 자연스럽게 잘 되겠거니 Type을 변경해서 실행했는데 상태검사가 오랫동안 지속되다 시스템 상태 검사는 통과했는데 인스턴스 상태 검사는 실패하는 일이 계속 발생했다. 심지어 Type을 동일하게 해도 발생했다. 그래서 원인 분석에 들어갔다.

이게 만약 시스템 상태 검사 실패면 그냥 이미지가 깨졌거나 스냅샷에 문제가 있어서 AMI를 다시 뜨면 대부분 정상적으로 되는데...

이건...로그를 뒤져봐야한다.

우선 문제가 있는 EC2는 위처럼

작업 -> 모니터링 및 문제 해결 -> 시스템 로그 가져오기 or 인스턴스 스크린샷 가져오기

를 통해서 초기 부팅 로그를 모니터링 할 수 있다.

로그를 보니 누가 봐도 문제가 있어보이는 오류가 엄청 생겼다. 사실 생각해보면 Root로 Python 버전을 변경하면 Redhat 계열의 서버들은 Yum이 꼬여버리는 문제가 발생한다.

 

이처럼 이 서버도 마개조가 되어 있던것. 그런데...기존 서버는 몇번을 재부팅 해도 괜찮았다. 왜 그럴까?

 

여기서 문제가 발생한 부분은 저 cloud-init 부분이다.

 AWS의 EC2는 최초 생성시 cloud-init을 통해 AWS와 통신하는 절차를 진행한다. 그런데 이때 urllib3을 사용하는데 python version이 변경되며 urllib3이 호환되지 않거나 package 위치가 변경되며 누락이 발생하면 등록되지 않는다. 

 

따라서 상태 체크 실패로 빠지게 되는것.

 

그렇다면 기존 인스턴스는? 이지 초기에 정상적으로 등록 되었기 때문에 후에 Python 버전 변경이든 마개조를 하든 정상이었던것.

 

그러니 계정내에서 따로 Python 설치하여 쓰거나 Vitual env를 최대한 활용하자. 아니면 절대경로로 잡아서 따로 실행하거나...Root의 환경 변수를 꼬이게 하지 말자!

 

 

728x90