제5장 노드 매니저 이중화

내용 목차

5.1. 개요
5.2. 이중화된 노드 매니저 동작 방식
5.3. 이중화된 노드 매니저 사용 방법
5.4. 이중화 상태에서 노드 매니저 종료

본 장에서는 노드 매니저가 비상 종료되는 경우 노드 매니저의 복구를 가능하게 하는 이중화 기능을 설명한다.

5.1. 개요

노드 매니저는 서버의 동작과 종료를 도와주고, 서버에 장애가 발생할 때에는 이를 체크하여 재구동시키는 역할을 한다. 하지만 정작 노드 매니저에 이상이 발생하여 종료되는 상황에는 취약할 수 있다. 그렇기에 노드 매니저 이중화 기능을 추가하여 노드 매니저가 이상 종료되었을 경우에 미리 실행하여 대기시켜 둔 노드 매니저가 대신 일을 계속 하도록 할 수 있다. 본 절에서는 이에 대한 설명과 주의점들을 다룬다.

5.2. 이중화된 노드 매니저 동작 방식

이중화된 노드 매니저는 Active와 Standby의 두 개의 노드 매니저가 동작하게 된다. 이중에서 Active 노드 매니저만이 실제 DAS나 서버들의 요청을 처리하고 상태를 관리하게 된다.

[그림 5.1] 이중화된 노드 매니저의 동작 방식

이중화된 노드 매니저의 동작 방식

Standby 노드 매니저는 평상시에는 Active 노드 매니저의 상태만을 체크하게 된다. 그러다가 Active 노드 매니저의 상태 체크에서 이상을 감지하면 Active가 이상 종료되었다고 판단하여 Standby가 Active의 역할을 대신하게 된다. 또한 이 Standby 노드 매니저를 감시하기 위한 또 하나의 Standby 노드 매니저가 실행된다.

  1. Active 노드 매니저가 시작되고 그와 동시에 Standby 노드 매니저를 시작한다.

  2. Standby 노드 매니저는 지속적으로 Active 노드 매니저의 상태를 감시한다.

  3. Standby 노드 매니저가 Active 노드 매니저의 이상을 감지한다.

  4. Standby 노드 매니저는 또다른 Standby 노드 매니저를 준비한다.

  5. 기존의 Standby였던 노드 매니저가 Active가 되어 서버로부터의 요청을 처리한다.

이때 상태 체크에 사용하는 port는 설정 파일에서 설정된 포트로 통신하게 된다. 만약 이 값이 설정되지 않았다면 노드 매니저 이중화 기능을 사용하지 않는 것으로 간주한다.

참고

Standby가 Active 노드 매니저의 이상 종료를 체크하여 Active로 될 때에 Standby 노드 매니저를 추가로 실행하여 자신을 감시하게 한다. Active 노드 매니저가 이상 종료될 때마다 이는 반복적으로 일어난다.

5.3. 이중화된 노드 매니저 사용 방법

노드 매니저 이중화를 사용하기 위해서는 Standby 노드 매니저와 Active 노드 매니저가 상태를 주고받는 포트를 설정해 줄 필요가 있다. 이 포트는 “2.3.1. 설정 파일”에서 설명한 것과 같이 standbyPort 항목을 설정함으로써 사용할 수 있다. 설정된 포트를 통하여 Active와 Standby 노드 매니저가 통신을 한다.

이중화를 사용하지 않으려면 standbyPort를 설정하지 않으면 된다. 이 값이 비어 있다면 노드 매니저는 이중화 기능을 사용하지 않는 것으로 간주하여 Standby 노드 매니저를 실행하지 않는다.

Standby 노드 매니저

Standby 노드 매니저는 현재의 Active 역할을 하는 노드 매니저의 구동 과정에서 실행된다. 이때 실행되는 노드 매니저는 Standby 모드로 실행되며, Active의 상태를 지속적으로 체크하게 된다

[nodemanager-1] [NodeManager-0201] The standby node manager is starting.
[nodemanager-1] [NodeManager-0102] Initializing the node manager configuration.

또한 Standby 노드 매니저는 실제로 서버의 요청을 받아서 처리하지는 않기 때문에 별도의 로그 파일에 정보를 저장하게 된다. 이 별도의 로그는 노드 매니저 로그 파일과 같은 위치에 생성되며, 노드 매니저 이름 뒤에 '_standby'라는 문자열이 추가된 로그에 저장된다. 이 로그는 Standby 노드 매니저들만이 사용하는 로그이다.

Standby 노드 매니저가 Active가 될 때에는 Standby용의 로그에 Active로 전환된다는 것을 남기고, Active용의 로그를 쓰는 것으로 전환된다. 그 후에 새롭게 생성된 Standby 노드 매니저가 다시 Standby용의 로그를 사용하게 된다. 그렇기 때문에 실제 서버의 요청이나 서버 관리하는 로그는 Active용의 로그에만 남게 된다. Standby 로그에는 Standby 노드 매니저의 구동과 Active 노드와의 통신만이 남게 된다.

Standby 노드 매니저는 Active 노드 매니저와 처음 접속할 때에 Active의 PID를 받아온 후에 이를 로그로 남긴다. 이 PID를 보고 차후에 어떤 프로세스가 Active인지 알 수 있다.

5.4. 이중화 상태에서 노드 매니저 종료

이중화된 노드 매니저는 Active 노드 매니저가 이상 종료될 때에 Standby 노드 매니저가 이를 체크하여 노드 매니저가 계속 떠 있을 수 있도록 한다. 그렇기 때문에 노드 매니저를 종료할 때에는 stopNodeManager 스크립트를 이용하여 종료해야 한다. stopNodeManager 스크립트는 Active 노드 매니저로 하여금 Standby 노드 매니저에 종료 메시지를 보내게 한다. 이 메시지를 받는 Standby 노드 매니저는 접속을 정리하고 로그에 기록하는 과정까지 진행한 후에 안전하게 종료된다.

참고

문제가 발생하여 노드 매니저를 강제 종료시키게 된다면, 지속적으로 Standby 노드 매니저가 구동되기 때문에 완벽히 종료되지 않을 수 있다. 이런 경우에는 Standby 노드 매니저를 먼저 종료시킨 후에 Active를 종료시킨다. 다만 강제 종료하게 로그가 제대로 남지 않거나 다른 문제가 있을 수 있으니 가능한 stopNodeManager 스크립트와 같은 방법을 사용하도록 한다.