환경설정

본 장에서는 TCP/IP 서비스 게이트웨이 환경 구성과 환경 파일에 대해 기술한다.

1. 개요

SVCGW 서버를 구성되려면 다음과 같은 파일들이 존재해야 한다.

  • UNIX

    다음은 UNIX에서 사용되는 환경 파일이다.

    디렉터리 파일명

    Lib

    tmaxcom.a, tmaxcom.so

    Lib64

    ttmaxcom.a, tmaxcom.so

    Appbin

    tcpsvcgw

  • Windows

    다음은 Windows에서 사용되는 환경 파일이다.

    디렉터리 파일명

    Lib

    tmaxcom.lib, tmaxcom.dll

    bin

    tcpsvcgw.exe

2. Tmax 환경 구성

SVCGW를 사용하기 위해서는 Tmax 환경 파일에 SVCGW를 서버로 등록해야 한다. Tmax 서버 중 UCS형 서버와 등록 방법이 비슷한데, 차이점은 SVRTYPE이 UCS에서 CUSTOM_GATEWAY라는 것이다. SVCGW를 사용하기 위해 Tmax 환경 파일을 수정할 때는 SERVER, SERVICE 절만 설정하면 된다.

다음은 Tmax 환경 파일의 예이다.

*DOMAIN
tmax    SHMKEY = 88000,
        MINCLH = 1,
        MAXCLH=1,
        TPORTNO=8800

*NODE
tmax1   TMAXDIR=”/home/tmax”,
        APPDIR=”/home/tmax/appbin”

*SVRGROUP
svg1    NODENAME=tmax1

*SERVER
tcpsvcgw   SVGNAME=svg1,
           MIN=1,
           MAX=1,
           CPC=10,
           SVRTYPE=CUSTOM_GATEWAY,
           CLOPT=”-- -P 8090 -F /home/tmax/config/tcpsvcgw.cfg –N 20”

*SERVICE
TCPSVC1    SVRNAME= tcpsvcgwgv
TCPSVC2    SVRNAME= tcpsvcgw
항목 설명

MIN

SVCGW의 프로세스 개수를 지정하는 항목으로 이 항목의 값은 항상 1로 지정해야 한다.

CPC

CPC 항목은 Tmax 엔진과 SVCGW 간의 채널 수를 지정하는 항목으로, Tmax의 클라이언트나 서비스에서 리모트 노드로 요청하는 경우에는 동시에 요청하는 수만큼 CPC 수를 지정해야 한다. 반대인 경우에는 SVCGW는 Tmax 엔진으로 tpacall로 요청하므로 많은 채널을 사용할 필요는 없다.

CLOPT

CLOPT 항목 (SVCGW 옵션) 내용을 참고한다.

SVCTIME

SVCGW는 리모트 노드로 요청한 서비스에 대해서 서비스 타임아웃을 적용하지 않는다. 리모트 노드로 서비스 요청만하고 응답은 별도의 서비스로 처리하므로 SVCGW에서는 서비스 타임아웃을 적용하지 않는다.

CLOPT 항목 (SVCGW 옵션)

SVCGW는 Tmax 설정 파일에 등록할 수 있는 항목이 제한되어 있는 관계로 CLOPT 항목에 몇가지 옵션을 설정해야 한다. 아래에 설명하는 옵션에 따라서 SVCGW이 동작 방식이 다르므로 아래의 설명을 정확히 이해해야 한다.

옵션 설명

[-F]

VCGW에서 사용할 리모트 노드 정보 및 리모트 노드를 찾는 서비스명이 등록된 파일을 지정하는 항목이다. SVCGW는 옵션에 지정한 파일의 정보를 로드하여 리모트 노드의 정보를 보관하였다가 Tmax의 서비스나 클라이언트에서 리모트 노드로 서비스 요청할 때 요청한 서비스명으로 리모트 노드를 찾으려는 경우에 사용한다. 파일의 등록 방법은 SVCGW 환경 파일 설명을 참고한다.

[-P]

SVCGW는 항상 서버 모드로만 동작한다. 리모트 노드는 SVCGW가 실행되는 서버의 주소와 옵션에 지정하는 포트번호를 이용하여 연결을 맺게된다.

SVCGW는 여러 개의 포트번호를 동시에 Listen할 수 있으므로 옵션에 리모트 노드에서 연결을 원하는 포트를 모두 등록하면 된다. (예: “8880,8881,8882”)

[-q]

리모트 노드에서 Tmax의 서비스를 요청할 때 지연처리 방식으로 사용할 수 있다. 즉, Tmax에서 제공하는 RQ에 임시 데이터를 보관한 후에 나중에 일괄적으로 처리하는 방식으로 SVCGW를 사용할 수 있는데, 이때 사용할 RQ 이름을 등록하는 옵션이다.

[-A]

SVCGW와 리모트 노드 간 송수신 데이터에 대해서 ACK/NAK 메시지를 주고받을 것인지를 지정하는 옵션이다. 옵션을 지정하면 송수신 데이터에 대해서 ACK/NAK를 주고받는다.

Tmax의 SVCGW는 내부적으로 ACK/NAK 메시지를 처리하나 리모트 노드의 COM 라이브러리에서는 ACK/NAK를 처리하지 않으므로 사용자쪽 프로그램에서 이에 대한 처리 부분이 있어야 한다. (기본값: ACK/NAK 주고받지 않음)

[-N]

[-F] 옵션에 리모트 노드의 정보를 등록하거나 또는 ComOpen하는 경우 리모트 노드를 등록할 수 있다. 이 경우에는 환경 파일에 등록하지 않아도 된다. 그러나 나중에 ComOpen할 때 등록하는 리모트 노드의 총수를 알 수 없는 문제가 발생한다. 이를 위해서 이 옵션에 총 리모트 노드의 수를 지정하는 옵션이다.

환경 파일에 등록된 리모트 노드의 수와 옵션에 등록된 옵션의 수를 비교하여 많은 값을 취한다.

2.1. ACK/NAK 응답 SVCGW

ACK/NAK 메시지를 받을 경우의 SVCGW 환경설정은 아래와 같다.

*DOMAIN
...
*NODE
...
*SVRGROUP
...
*SERVER
tcpsvcgw   SVGNAME=svg1,
           MIN=1,
           MAX=1,
           CPC=10,
           SVRTYPE=CUSTOM_GATEWAY,
           CLOPT=”-- -P 8090 -F /home/tmax/config/tcpsvcgw.cfg –N 20 -A”

*SERVICE
TCPSVC1    SVRNAME= tcpsvcgw

위와 같이 환경 파일을 작성한 경우 tcpsvcgw라는 이름의 SVCGW는 1개가 Tmax boot할 때 기동된다. tcpsvcgw의 서비스명은 TCPSVC1이다. SVCGW는 리모트 노드와 데이터 송수신할 때 ACK/NAK 메시지를 주고받아야 하므로 리모트 노드 쪽의 프로그램할 때 ACK/NAK에 대한 부분을 감안해야 한다.

2.2. 지연처리 SVCGW

RQ를 이용하여 지연처리 방식으로 SVCGW를 사용할 경우의 환경설정은 아래와 같다.

*DOMAIN
...
*NODE
...
*SVRGROUP
...
*SERVER
tcpsvcgw  SVGNAME=svg1,
           MIN=1,
           MAX=1,
           CPC=10,
           SVRTYPE=CUSTOM_GATEWAY,
           CLOPT=”-- -P 8090 -F /home/tmax/config/tcpsvcgw.cfg –N 20 –q testq ”

*SERVICE
TCPSVC1    SVRNAME= tcpsvcgw

위와 같이 환경 파일을 작성하고 리모트 노드에서 COM 라이브러리를 이용하여(flags에 COMMDELAY set) Tmax으로 서비스를 요청하면 SVCGW는 요청 데이터를 “testq”에 저장한다. SVCGW는 리모트 노드에서 수신한 데이터를 RQ에 저장만 할 뿐 어떠한 처리도 하지 않으므로 사용자는 RQ에 저장된 데이터를 처리할 수 있어야 한다.

3. SVCGW 환경 파일

Tmax 환경 파일의 CLOPT 절에 [-F] 옵션으로 지정한 파일은 아래에 설명하는 포맷으로 등록되어 있어야 한다. 이 파일은 리모트 노드 주소와 서비스명을 등록하는 파일이다.

3.1. 주소 정보 환경 파일

SVCGW는 환경 파일에 등록된 수와 [-N] 옵션으로 지정한 수 중 큰 값을 기준으로 내부적으로 버퍼를 할당하여 멀티플렉싱 방식으로 처리한다.

다음은 주소 정보 환경 파일과 항목에 대한 설명이다.

#######################################################
#              TCP/IP Service Gateway Config          #
#######################################################
# gwno  ipaddr  Tmaxsvc
# 0     1.1.1.1  SVC
#######################################################
# line start with "#" is comment line
# gwno must start at 0 and be increased by 1
# ipaddr: remote node ipaddr
# svc:  tmax service name
#######################################################
0       1.1.1.1    SVC1
항목명 설명

gwno

Tmax 환경 파일의 MIN 항목의 값이 2 이상인 경우에 사용하는 항목이다. MIN 항목이 항상 1 이므로 항상 0으로 지정해야 한다.

ipaddr

리모트 노드의 주소를 등록하는 항목이다. SVCGW는 등록된 주소를 이용하여 리모트 노드에서 접속할 때 관련된 서비스명을 찾는다.

Tmaxsvc

Tmax의 클라이언트나 서비스에서 특정 리모트 노드에 서비스를 요청하기 위해서는 SVCGW에 보내고자 하는 리모트 노드를 알려주어야 한다. 이러한 경우에 사용하는 항목으로 SVCGW는 지정한 서비스명으로 SVCGW를 호출하면 해당 서비스명으로 리모트 노드를 찾아서 해당 리모트 노드에 데이터를 전송한다.

항목에 지정한 서비스명은 반드시 Tmax 환경 파일의 SERVICE 절에 등록된 서비스명이어야 한다. SVCGW가 리모트 노드를 찾는 방법은 위와 같이 등록한 서비스명으로 찾는 방법과 나중에 리모트 노드에서 SVCGW로 연결을 설정할 때 리모트 노드의 이름을 등록할 수 있다. 등록하는 리모트 이름은 반드시 Tmax 환경 파일의 SERVICE 절에 등록된 이름이어야 한다.