요새 yona 서버가 자주 중단되는 상황이 발생하고 있네요. 당장 원인을 찾기도 힘들고 일단 무중단으로 운영할 수 있도록 Node.js 진영의 프로세스 관리자 PM2 를 도입해 보았습니다.
기존에는 nohup 을 이용해 아래와 같이 간단히 띄워두고 쓰고 있었습니다.
> nohup ./bin/yona &
최근 들어 자꾸 yona 서버가 중단되어 이참에 PM2 를 도입하도록 했습니다.
우분투 22.04 환경 기준에서 아래와 같이 nodejs 를 설치합니다. (현재 LTS 버전인 16.x 를 기준으로 합니다.)
> curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - \ &&
> sudo apt-get install -y nodejs
PM2 는 npm 을 이용해 설치합니다.
> sudo npm install pm2@latest -g
이제 PM2 를 사용할 수 있습니다. 이제 yona 설치 경로로 이동합니다. 여기선 /var/www/yona 로 간주하겠습니다.
> cd /var/www/yona
아래와 같이 실행 스크립트를 만들어 줍니다.
> vi yona-pm2.sh
bash 스크립트 내용은 아래와 같습니다. YONA_DATA 의 경로는 운영할 환경에 맞게 변경하시면 됩니다. 스크립트 내용을 yona 소스중 https://github.com/yona-projects/yona/blob/next/restart.sh 를 참고해서 수정해봤습니다. nohup 을 사용하지 않고 pm2 를 이용할 예정이므로 이에 맞게 수정했습니다.
#!/bin/bash
# 포트번호 및 경로 설정
PORT=9000
YONA_DATA=/var/www/yona
export YONA_DATA
# 현재 프로세스 중단시키기..
pid=`ps -ef | grep java | grep com.typesafe.play | awk '{print $2}'`
if [ -n "$pid" ]; then
kill $pid
fi
# RUNNING_PID 제거
cd $YONA_DATA
if [ -e $RUNNING_PID ]; then
rm RUNNING_PID
fi
# Play Framework 방식으로 yona 실행
JAVA_OPTS="-Xmx2048m -Xms1024m -Dyona.data=$YONA_DATA -DapplyEvolutions.default=true -Dhttp.port=$PORT" ./bin/yona </dev/null >/dev/null 2>&1
:wq 로 저장하고 아래와 같이 실행 권한을 줍니다.
> chmod 777 yona-pm2.sh
이제 PM2 로 쉘스크립트를 시작해주면 됩니다.
> pm2 start yona-pm2.sh
이제 아래와 같은 명령어로 간단한 서버 프로세스의 모니터링도 가능하고 몇번 재시작했는지도 알 수 있습니다.
> pm2 list
테이블에 status 가 online 으로 뜬다면 정상입니다. 또한 ↺ 값을 보면 몇 번이나 재시작했는지 알 수 있습니다.
기타 운용관련해서 사용 설명은 PM2 의 설명서를 참조하시기 바랍니다.
감사합니다. ^ㅇ^
참고 URLs >
답글 남기기
댓글을 달기 위해서는 로그인해야합니다.