본문 바로가기
DevOps/클라우드

jenkins를 사용하여 배포중 EC2 인스턴스가 터지는 증상 발생 해결법

by yongckim 2022. 8. 27.
728x90
반응형

CI/CD 파이프라인을 구축한후 EC2 인스턴스에 배포 후 프로젝트를 진행중에 권한이 있는데도 불구하고 계속 다음과 같이 접근거부가 되었습니다.

인스턴스를 재부팅하면 해결되었지만 배포할때마다 계속 서버가 내려간다면 서비스가 힘들어지므로 원인을 찾아보았습니다.

그래서 배포 중에 인스턴스 상태를 모니터링으로 확인해보았는데 배포가 진행될때 CPU 사용률이 99.9%에 도달하는 것을 확인할 수 있었습니다.

왜 이렇게 많이 트래픽이 발생했는지 확인해보았는데 현재 인프라 구성이 다음과 같이 되어있었는데 MySQL 컨테이너가 너무 많은 리소스를 차지하고 있었습니다.

인스턴스는 현재 메모리로 부족해서 스왑메모리로 처리하려고 했으나 스왑 메모리를 처리하는 kswapd0 프로세스가 너무 많은 CPU를 사용하여 인스턴스가 터지는 현상임을 파악했습니다.

이 문제를 해결하기 위해서 가장 많은 리소스를 차지하는 MySQL이 문제라고 생각해서 두가지 해결책을 생각했습니다.

  • RDS를 띄워서 EC2 인스턴스 내에 MySQL 컨테이너를 띄우지 않도록 한다
  • 인스턴스 사이즈를 t2.small로 키워 메모리 부족 현상을 해결한다.

저는 RDS를 추가적으로 띄워서 EC2 인스턴스에서 MySQL 컨테이너를 띄우지않는 방법을 사용했습니다.

자체적으로 DB를 관리하는 것보다 RDS에 DB 관리를 맡기는게 데이터베이스를 직접 관리하지 않아도 알아서 해주기 때문에( DB 설치 및 업데이트와 같은 관리 + 일정 주기마다 백업 등) 더 편하다고 생각해서 해당 방법을 적용했습니다.

이제 실제로 배포를 진행해보니 정상적으로 배포가 잘 되는 것을 확인했습니다.

반응형