본문 바로가기
서버 개발 (AWS, Linux, DevOps)

AWS : 인스턴스 재부팅시 PM2 자동 시작 시키기 (pm2 startup)

by 번데기 개발자 2023. 10. 23.
반응형

EC2에서 PM2 실행

 

EC2 인스턴스는 AWS의 컴퓨팅 서비스 중 하나로 클라우드에서 가상 서버를 띄우기 위해 사용되며, PM2는 Node.js 애플리케이션을 실행, 관리, 모니터링 하기 위해 사용되는 프로세스 관리자입니다.

 

보통 EC2 서버에 Node.js 애플리케이션을 띄워야할때 클라우드 환경에서 EC2에 배포할수 있는데요, node.js 서비스를 단독으로 띄우는 것이 아니라 PM2를 이용하여 구성을 하게 되면 안정성과 신뢰성을 보장하고 클러스터링 기능을 사용할수 있으며 그 밖에도 여러 이점이 있기 때문에 대부분 PM2와 같은 Node.js 프로세스 관리자를 사용하여 배포하게 됩니다.

 

 

 

AWS EC2 재부팅시 PM2 자동 시작의 필요성

 

PM2 는 기본적으로 프로세스를 모니터링하여 프로세스가 죽으면 자동으로 재시작(Auto-Restart) 시켜줍니다. 또 일정한 횟수 이상의 연속된 재시작을 방지하고, 재시작 간격을 설정할 수도 있습니다.

 

하지만 EC2 서버 자체를 재부팅할 경우에는 PM2 관리자 자체가 죽어버리기 때문에 PM2를 통해 관리되고 있는 프로세스 자체도 죽어버리게 되는데요, 이를 해결하기 위한 몇가지 방법이 있습니다. 

 

아래 2가지 방법을 선택하면 EC2 서버의 부팅시에 PM2를 자동으로 실행되도록 설정할 수 있습니다.

 

 

 

PM2의 Startup 을 사용한 PM2 자동 시작

 

PM2의 기능중에 startup이라고 하는 명령어을 이용하면 부팅시에 PM2를 자동으로 시작하도록 설정할수 있습니다. 보통 리눅스의 부팅 시스템 init.d 와 같은 곳에 스크립트를 만들어 넣어야 하는데, pm2의 startup 명령어는 이러한 절차를 자동으로 제공해주고 있습니다.

 

 

예를 들어 위와 같이 app 이라고 하는 프로세스가 PM2를 통해 서비스되고 있다고 가정해보도록 하겠습니다.

 

pm2 startup

현재 돌고 있는 서비스에 대해서 startup 명령어를 통해 부팅 시스템에 등록을 할 수 있습니다. 

 

이때 뒤에 추가 옵션으로 플랫폼을 선택할 수 있기는 하지만 생략하는 경우 자동으로 리눅스 플랫폼을 찾아서 위와 같이 현재 부팅 시스템에 등록 사용가능한 명령어를 반환하여 줍니다.
(pm2 startup 뒤에 systemd, upstart, init 등을 추가적으로 붙이게 되면 해당 부팅 플랫폼에서 부팅 시스템을 설정하는 명령어 반환)

 

 

startup으로 생성된 명령어를 입력해주면 현재 운영체제의 부팅시스템에 PM2가 등록되는것을 확인할 수 있습니다.

 

pm2 unstartup

 

만약 pm2 자동 시작을 끄고싶으면 pm2 unstartup 명령어을 이용하여 명령어를 생성한뒤 입력해주시면 됩니다.

 

참고로, pm2 unstartup 이후에 다시 등록하려고 할 때는 pm2 startup 전에 pm2 save 를 한번 해줘야 이전 정보들이 말끔히 정리됩니다.

 

 

마치며

 

이번에는 pm2의 기능을 이용하여 EC2가 재부팅될때 pm2의 application 을 다시 구동시키는 방법에 대해 알아보았습니다.

 

다음 시간에는 이어서 EC2의 사용자데이터를 이용하여 PM2를 자동실행시키는 방법에 대해 알아보도록 하겠습니다.

 

감사합니다. 

 

 

참고 

 

 

pm2 모듈을 부트 스크립트로 등록하기

pm2 에서 관리되는 모듈은 대부분이 데몬 형태이고 각각은 메모리에 항상 상주해야 하는 서비스일 것이다. 운영중에 죽는 모듈은 pm2 에 의해서 자동으로 재시작되겠지만 시스템이 재부팅된다면

jybaek.tistory.com

 

반응형