cluster 모듈을 이용해 HTTP 서버를 실행하는 예제 코드입니다. cluster 모듈과 http 모듈을 로드합니다(➊, ➋). CPU 코어 수만큼 자식 프로세스로 실행하려고 os 모듈을 이용해 코어 수를 알아 옵니다(➌). cluster 모듈의 isMaster 값을 이용해 부모 프로세스와 자식 프로세스를 구분할 수 있습니다(➍). 부모 프로세스라면 코어 수만큼 자식 프로세스를 실행합니다(➎). fork 함수를 이용해 실행된 자식 프로세스가 종료되면 부모 프로세스에서 이를 감지할 수 있도록 exit 이벤트를 설정합니다(➏). 자식 프로세스로 실행되었다면 http 모듈을 이용해 HTTP 서버를 실행합니다(➐).
이제 cluster.js가 위치한 경로에서 다음과 같이 실행하면 자식 프로세스가 생성됩니다.
> node cluster.js
Master 3596 is running
Worker 4324 started
Worker 4520 started
Worker 6056 started
Worker 5644 started
처음 부모 프로세스를 실행하면서 “Master 3596 is running” 메시지를 출력하고, 코어 수만큼 생성된 자식 프로세스들이 “Worker xxxx started” 메시지를 출력했습니다. 실행한 환경의 코어 수가 4개라서 자식 프로세스가 총 4개 생성되었습니다. 참고로 프로세스 아이디는 실행할 때마다 계속 변경됩니다.