nodejs cluster를 분석해보자

·4분 읽기·조회 2

서론

nodejs에는 cluster모드가 있다.
cluster모드를 쉽게 지원해주는 pm2 라이브러리를 이용해서 사용 해 보겠습니다.
다음은 테스트 목록이다.

  1. 포트가 중복된 경우 (같은 프로젝트는 어차피 같으니 서로 다른 프로젝트라고 가정)
  2. 이 상황에서 cluster모드와 pork모드의 차이

본론

cluster모드를 실행하기 위해서 미리 같은 port를 사용하고, return 값만 다른 3개의 폴더를 서로 다른 프로젝트라고 가정하고 준비 해 놓았습니다.

폴더 dist, dist2, dist3
결과 난 1이야, 난 2이야, 난 3이야

일단 pm2로 cluster모드를 사용하기 위해서 명령어를 입력해줍니다.
pm2 start dist/main.js -i 1
pm2 start dist2/main.js -i 1
pm2 start dist3/main.js -i 1

모두 정상 작동이 됩니다.
그런데 node dist/main.js 로 실행하면 port 충돌로 에러가 납니다.

pork모드를 사용한 pm2 실행 명령어도 마찬가지 입니다.

하지만 cluster모드로 실행한 저 3개의 프로세스는 모두 잘 동작하고 있습니다.
여기서 cluster모드를 사용하면 내부적으로 로드밸런서를 생성 한 후에, 프로세스마다 서로 다른 임시port를 발급 해주는걸 유추 해 볼 수 있습니다.

자 그럼 cluster모드에 로드밸런서를 이용해주기 위하여 확인을 해봅시다.
postman을 열어서 테스트를 해줍니다.

그런데 1, 2, 3이 번갈아가면서 나오는게 아니라 3만 나오는게 아닙니까?
여기서 원인을 생각 해 보니, 두가지가 나옵니다.

  1. 로드밸런싱을 지원하지 않는다
  2. 부하가 걸렸을때만 로드밸런싱을 이용한다.

일단 jmeter를 이용하여 부하를 걸어보도록 하겠습니다.
설정은 아래와 같습니다.

아래는 결과 값입니다.

jmeter를 사용하여 부하를 주니, 부하가 걸렸을때는 정상적으로 로드밸런싱을 지원 해 주는 것을 볼 수 있었습니다.

결론

  1. cluster모드는 포트가 중복되도 에러가 나지 않는다.
  2. 로드밸런싱은 부하가 걸렸을때만 동작한다.
    이상입니다.

댓글 0

불러오는 중...