M2의 고급 기능을 활용하여 Node.js 애플리케이션의 클러스터링을 최적화하고, 로그 관리 및 세션 관리를 설정하는 방법을 다룹니다.
PM2를 사용한 Node.js 클러스터링 설정 - 고급 기능 및 관리
이전 파트에서 우리는 PM2의 기본 설치 및 클러스터링 설정에 대해 다루었습니다. 이번 파트에서는 PM2의 고급 기능을 활용하여 애플리케이션의 성능을 더욱 최적화하고, 로그 관리 및 세션 관리와 같은 중요한 기능들을 설정하는 방법을 살펴보겠습니다.
2.3 고급 기능
PM2는 기본적인 클러스터링 기능 외에도 다양한 고급 기능을 제공합니다. 이 기능들을 통해 애플리케이션의 가용성과 성능을 한층 더 강화할 수 있습니다.
2.3.1 애플리케이션 자동 재시작 및 장애 복구
PM2는 애플리케이션이 비정상적으로 종료되었을 때 자동으로 이를 재시작하는 기능을 기본적으로 제공합니다. 이 기능은 서비스의 가용성을 높이고, 예상치 못한 다운타임을 최소화하는 데 중요한 역할을 합니다.
pm2 start app.js --watch
위 명령어에서 --watch 옵션을 추가하면, 파일 시스템의 변경을 감지하여 애플리케이션을 자동으로 재시작합니다. 이 옵션은 개발 환경에서 특히 유용하며, 코드 변경 사항을 즉시 반영할 수 있습니다.
2.3.2 PM2 모니터링
PM2는 애플리케이션의 상태를 실시간으로 모니터링할 수 있는 다양한 도구를 제공합니다. 예를 들어, pm2 monit 명령어를 사용하면 CPU 및 메모리 사용량, 각 프로세스의 상태 등을 실시간으로 확인할 수 있습니다.
pm2 monit
이 명령어는 대시보드 형태로 시스템의 전반적인 상태를 보여주며, 문제가 발생할 경우 신속하게 대응할 수 있게 해줍니다.
2.4 로그 관리
애플리케이션의 로그는 서버 운영에 있어 매우 중요한 데이터를 제공합니다. PM2는 각 프로세스의 로그를 효율적으로 관리하고 분석할 수 있는 기능을 내장하고 있습니다.
2.4.1 실시간 로그 확인
실시간으로 로그를 확인하려면 다음 명령어를 사용합니다,
pm2 logs
이 명령어는 현재 실행 중인 모든 프로세스의 로그를 실시간으로 출력하며, 애플리케이션이 발생시키는 모든 로그를 모니터링할 수 있습니다.
2.4.2 로그 파일 관리
PM2는 자동으로 로그 파일을 관리하며, 일정 기간이 지나거나 파일 크기가 일정 수준을 초과하면 로그를 순환(rotate)할 수 있습니다. 이는 서버 디스크 공간을 효율적으로 사용하고, 오래된 로그가 서버 성능에 영향을 미치지 않도록 합니다.
pm2 start app.js --log-date-format="YYYY-MM-DD HH:mm Z"
위 명령어를 사용하면 로그에 날짜와 시간을 포함시켜 저장할 수 있으며, 이로 인해 나중에 로그를 분석할 때 더 유용한 정보를 얻을 수 있습니다.
2.5 세션 관리
Node.js 애플리케이션이 세션을 관리해야 하는 경우, 클러스터링된 여러 인스턴스 간에 세션을 공유하기 위한 방법이 필요합니다. PM2는 Redis와 같은 외부 스토리지와 쉽게 통합되어 클러스터 간 세션 관리를 가능하게 합니다.
2.5.1 Redis 설치 및 설정
먼저 Redis를 설치하고 Node.js 애플리케이션에서 사용할 수 있도록 설정해야 합니다. 다음 명령어를 사용하여 Redis를 설치합니다.
npm install redis
설치가 완료되면, 애플리케이션에서 Redis를 사용하여 세션을 관리할 수 있습니다.
2.5.2 Node.js에서 Redis 세션 관리 설정
애플리케이션 코드에서 Redis를 사용해 세션을 관리하도록 설정합니다. 이를 통해 클러스터링된 모든 인스턴스가 동일한 세션 데이터를 사용할 수 있습니다.
const session = require('express-session');
const RedisStore = require('connect-redis')(session);
const redis = require('redis');
const client = redis.createClient();
app.use(session({
store: new RedisStore({ client }),
secret: 'your-secret-key',
resave: false,
saveUninitialized: false
}));
이 코드는 Express.js를 사용한 예시로, 다른 프레임워크에서도 유사한 방식으로 Redis를 통해 세션을 관리할 수 있습니다.
다음글에서는 pm2와 세션괄리에 대해서 더 알아보겠습니다.
'서버 > Node.js' 카테고리의 다른 글
PM2와 Node.js Cluster: 효율적인 프로세스 관리 가이드(3): PM2 네트워크 기반 로드 밸런싱 (0) | 2024.09.01 |
---|---|
PM2와 Node.js Cluster: 효율적인 프로세스 관리 가이드(2): PM2 로드 밸런싱 (0) | 2024.09.01 |
PM2와 Node.js Cluster: 효율적인 프로세스 관리 가이드(1): PM2를 사용한 Node.js 클러스터링 설정 (0) | 2024.08.27 |
Node.js를 활용한 파일 처리 시스템 구축: 대용량 파일 처리 (0) | 2024.07.29 |
Node.js를 활용한 데이터 수집 및 분석 도구 구축: 실제 데이터 분석 (0) | 2024.07.28 |