제4장 RQS 프로세스 관리

내용 목차

4.1. 개요
4.2. RQS의 동작 방식
4.2.1. RQS 프로세스의 구동과 정지
4.2.2. RQS 프로세스 모니터링
4.2.3. 비정상 상태의 프로세스 재기동
4.3. 환경설정
4.3.1. 설정 파일

본 장에서는 RQS를 관리할 수 있는 노드 매니저의 기능에 대해서 설명한다.

4.1. 개요

노드 매니저에서는 서버 이외의 프로세스를 관리하는 기능도 가지고 있다. 노드 매니저는 현재 RQS(Reliable Queue Server) 프로세스를 관리하는 기능을 가지고 있고, 추후 추가될 수 있다. RQS의 관리는 RQS 프로세스를 구동하거나 정지시키는 일을 의미한다. 또한 RQS 프로세스가 죽었는지 살았는지를 체크하여, 제대로 종료되지 않았다면 프로세스를 다시 구동시키는 것이다. 이런 기능은 서버나 노드의 설정과는 상관이 없으며, 별도로 설정된 정보를 통하여 동작하게 된다.

참고

RQS 프로세스를 관리하는 노드 매니저는 같은 머신, 즉 같은 노드에 있는 노드 매니저가 관리한다. 다른 머신에 있는 RQS 프로세스나 노드 매니저가 실행되지 않고 있는 RQS 프로세스는 관리할 수 없다.

4.2. RQS의 동작 방식

본 절에서는 노드 매니저가 RQS를 관리하는 방식에 대해서 설명한다.

4.2.1. RQS 프로세스의 구동과 정지

RQS 프로세스들은 설정 파일에 저장된 file path와 옵션들을 통해서 구동이 된다. RQS는 서버와는 독립적인 프로세스들이기 때문에 구동과 정지도 서버와는 별개로 작동한다. 노드 매니저는 구동할 때에 RQS 관련 설정 정보를 읽고, 그에 따라 RQS 프로세스 모니터링을 시작한다. 이 때에 RQS 프로세스가 구동되어 있지 않는다면 구동을 한다.

  1. jeusnm.xml 파일에서 RQS 정보를 읽어들여 저장한다.

  2. RQS 정보를 이용하여 RQS 관리 객체를 생성하고, 모니터용 스레드를 생성한다.

  3. 모니터링 스레드는 읽어들인 정보를 이용하여 프로세스에 접근한 후에 모니터링을 시작한다.

  4. 모니터링을 하여 RQS 프로세스가 이상 종료 되거나, 혹은 응답하지 않는다면 RQS 프로세스를 재시작한다.

참고

프로세스를 재기동할 경우에도 동일한 과정으로 진행된다.

4.2.2. RQS 프로세스 모니터링

RQS 프로세스의 모니터링에는 별도의 파일을 생성하지 않는다. 프로세스의 상태는 모니터링 스레드와 RQS 프로세스가 주고받는 메시지에 의존한다. 프로세스에 접근 할 때 사전에 정의된 메시지를 통하여 접근하게 되고, 프로세스의 정상동작 여부도 주기적으로 주고받는 메시지에 의존한다. 또한 RQS 프로세스가 정상 종료 되는 것을 판단 할 때에도 종료 메시지를 주고받는 것으로 판단 할 수 있다.

노드 매니저는 주기적으로 주고받는 메시지를 통하여 RQS 프로세스의 상태를 체크한다. 만약 이 상태 체크 메시지에 대한 응답이 오지 않는다면, 몇 번의 메시지를 더 보내 보고, 그래도 응답이 없다면 비정상 종료 되었다고 판단하게 된다.

4.2.3. 비정상 상태의 프로세스 재기동

노드 매니저가 주기적으로 보낸 메시지에 수차례 응답이 오지 않아 RQS 프로세스가 비정상 상태로 종료되었다고 판단 하였을 경우에는 프로세스의 재기동 절차를 밟게 된다. 프로세스의 재기동은 먼저 기존의 RQS 확실히 죽이고, 다시 시작하게 되는데, 다시 시작한 후에는 또 다시 모니터링 스레드를 생성하여 다시 시작한 프로세스도 모니터할 수 있도록 한다.

4.3. 환경설정

노드 매니저가 RQS 프로세스를 관리하기 위해서는 여러 가지 설정이 필요하다. RQS 프로세스는 다른 서버나 매니저와 별도로 실행되는 프로세스이기 때문에 이 설정을 통하여 구동되고 관리된다.

4.3.1. 설정 파일

RQS 프로세스는 서버나 기타 시스템과는 별도로 돌아가는 시스템이기 때문에 RQS 구동은 전적으로 jeusnm.xml 파일의 설정에 의존한다.

RQS 프로세스의 생성이나 삭제도 또한 jeusnm.xml 파일을 직접 수정하는 것으로 추가, 삭제할 수 있다. jeusnm.xml 항목에서 rqsList 부분이 RQS 프로세스에 대한 정보를 다루고 있다.

항목설명
processList

RQS 프로세스들에 대한 정보를 담고 있다.

processList 하위에 RQS라는 항목 하나하나가 각 프로세스에 대한 설명을 담게 된다.

processList 항목 아래에는 하나의 프로세스 당 하나의 RQS 항목으로 묶여서 설정된다. 여러 개의 프로세스를 관리하고 싶으면 RQS 항목을 여러 개 추가하는 것으로 설정 가능하다.

  • RQS

    항목설명
    domainName

    RQS 프로세스들의 그룹 이름을 설정한다.

    여러 프로세스들은 domainName이라는 가상의 이름을 가진 그룹에 포함된다. (필수 항목)

    processName

    RQS 프로세스의 이름을 설정한다.

    RQS 프로세스의 시작이나 정지 명령을 내릴 때에 사용한다. (필수 항목)

    path

    RQS 프로세스의 실행 파일 위치를 설정한다.

    프로세스가 실행될 때 이 path에 설정된 파일을 실행한다. (필수 항목)

    port

    RQS 프로세스의 모니터링에 사용될 포트 번호를 설정한다.

    RQS 프로세스의 생존 여부를 알기위한 메시지 교환용 포트이다. (필수 항목)

    option

    RQS를 실행할 때에 필요한 argument를 설정한다. RQS 매뉴얼을 참조하여 필요한 기능을 설정한다.

    rqsdir

    여러 개의 RQS를 띄워야 할때에는 각자 다른 설정 파일을 가지고 실행된다.

    각자 다른 설정 파일을 인식 시키는 방법은 RQSDIR이라는 환경변수를 주는 방법이 있는데, 여기에 값을 설정해 주면 이를 인식하여 설정 파일에 접근할 수 있다.

    retryCount

    접속에 실패할 때에 몇 번이나 재접속을 시도할지에 대한 설정이다.

    (기본값: 5)

    monitoringPeriod모니터링에 접속을 시도할 때에 각각의 접속 시도 사이의 시간 차이에 대한 설정이다. (기본값: 500)

참고

위에서 언급했듯이, jeusnm.xml 파일을 수정하여 RQS 프로세스의 추가 또는 삭제를 할 수 있다. processList의 하위 항목으로 RQS라는 항목을 두어서 각각의 RQS 프로세스에 대한 설정 값을 저장함으로써, 노드 매니저가 프로세스를 관리하도록 할 수 있다.