-
pm2를 활용한 클러스터링 :: 마이구미Nodejs 2016. 7. 26. 10:50반응형
이번 글에서는 pm2를 활용해 클러스터링을 해보자.
먼저, 이전에 작성한 글을 읽어보고 오는 것이 좋다.
일단 모듈을 설치하자.
npm install cluster
npm install http
npm install os
기본적인 클러스터 예제이다.
var cluster = require('cluster'); var http = require('http'); var os = require('os'); var numCPUs = os.cpus().length; if (cluster.isMaster) { // Master: // Let's fork as many workers as you have CPU cores console.log(numCPUs); for (var i = 0; i < numCPUs-1; ++i) { cluster.fork(); console.log('fork'); } } else { // Worker: // Let's spawn a HTTP server // (Workers can share any TCP connection. // In this case its a HTTP server) console.log('else'); http.createServer(function(req, res) { res.writeHead(200); res.end("hello world"); }).listen(8181); }
위의 예제를 실행해보면 아래와 같은 형태로 나온다.
4 // cpu갯수
fork
fork
fork
fork
else
else
else
else
현재 CPU 개수를 아래의 명령어로 확인할 수 있다.
grep -c processor /proc/cpuinfo
출력 결과는 cpu 갯수만큼 fork와 else가 나온다.
cpu가 1개이면 1, fork, else 이런식으로 말이다.
노드를 통해 스크립트 파일 실행 시 처음에는 기본적으로 마스터가 된다.
for문을 통해 새로운 Worker들을 생성하게 된다. ( Worker는 instance라고 보면 된다)
그렇다면, 잘 만들어졌는지 확인해보자.
ps -aux | grep node
위 명령어를 통해 확인해보면 CPU 갯수만큼 생성되어있는 걸 알 수 있다.
잘 만들어졌다.
node는 자체적으로 로드밸런싱을 균등하게 해주기 때문에 더욱 좋다. (node 0.12버전 이후)
로드밸런싱이란 간단히 적절하게 분산처리해주는 기능이라고 보면 된다.
이번 주제는 pm2를 보자.
다른 모듈 필요없이 pm2만으로 클러스터링이 가능하다.
pm2 start <filename> -i 0 <n>
pm2의 기존 start 명령어에서 -i 옵션을 달아주면 된다.
뒤에 숫자를 통해 갯수를 지정할 수 있다.
0으로 지정하면 cpu 최대 갯수로 생성되게 된다.
var http = require('http'); http.createServer(function(req, res) { res.writeHead(200); res.end("hello world"); }).listen(8181);또한 확장 또는 삭제를 통해 제어할 수 있다.
pm2 scale <appname> <n>
pm2 scale test +3 // 3개 더 생성
pm2 scale test 2 // 2개로 생성 ( 현재 4개라면 2개 삭제됨 )
마지막으로 모니터링 기능을 통해 확인하자.
pm2 monit
참고한 자료
반응형'Nodejs' 카테고리의 다른 글
라우팅 모듈화를 통한 MVC 패턴 ::마이구미 (0) 2017.01.21 [nodejs] redis session 저장소 관리 :: 마이구미 (0) 2017.01.08 죽지 않고 유지하는 pm2 사용법 :: 마이구미 (0) 2016.07.02 euc-kr 문제 해결을 위한 iconv :: 마이구미 (0) 2016.06.17 nodejs를 이용해 데이터베이스에 삽입하기(객체배열) (0) 2016.06.12