Tmax 환경설정

본 장은 Tmax 환경 파일의 구성 요소에 대해 기술한다.

1. 환경 파일

Tmax 환경 파일은 Tmax 시스템 구성을 설정하며, Tmax 관리자가 작성한다. 이 파일은 서비스 테이블 생성과 Tmax 시스템의 시동에 사용된다.

환경 파일의 구성내용은 다음과 같다.

설명 필수 여부

DOMAIN

하나의 독립적인 Tmax 시스템의 전체 환경을 정의한다.

필수

NODE

DOMAIN을 이루는 각 노드에 관계된 환경을 정의한다.

필수

SVRGROUP

서버 그룹 및 데이터 베이스에 관련된 사항을 정의한다.

필수

SERVER

서버에 관련된 사항을 정의한다.

필수

SERVICE

서비스에 관련된 사항을 정의한다.

필수

GATEWAY

도메인 간의 게이트웨이에 관련된 사항을 정의한다.

선택

ROUTING

데이터 의존 라우팅에 관련된 사항을 정의한다.

선택

RQ

신뢰성 큐에 관련된 사항을 정의한다.

선택

각 절 이름은 애스터리스크(*)로 시작(예: *DOMAIN, *NODE 등)하고 각 절 이름과 절의 하위 개체 이름은 반드시 줄의 첫 번째 칸에서 시작한다. 하나의 하위 개체에 대한 정의는 콤마(,)로 구분한다.

Tmax 환경설정에 대한 자세한 내용은 Tmax Administration Guide를 참고한다.

일반 텍스트 파일로 Tmax 환경 파일이 생성되며 cfl 명령어로 컴파일한다. 컴파일 후 생성된 이진 파일은 서비스 테이블 생성과 Tmax 시스템이 기동될 때 참조된다.

 cfl -i Tmax 환경 파일명

다음은 Tmax 환경 파일의 예제이다. ( “< >”로 싸여있는 부분은 대체 가능)

*DOMAIN
<resrc_name>        SHMKEY = <UNIQUE IPCKEY>,
                    MAXUSER = 256

*NODE
<uname>             TMAXDIR = "<TMAX installed directory>"
                    APPDIR = "<APPLICATION DIRECTORY>",
                    PATHDIR = "<path directory>"

*SVRGROUP
<svg_name>          NODENAME = <uname> ,
                    OPENINFO = "Oracle_XA+Acc=P/scott/tiger+SesTm=60"

*SERVER
<svr_name>          SVGNAME = <sgrpname> , MIN = 1, MAX = 3

*SERVICE
<svc_name>          SVRNAME = <svrname>

1.1. DOMAIN 절

Tmax 시스템 구성을 설정한다.

*DOMAIN
<resrc_name>        SHMKEY = <UNIQUE IPCKEY>,
                    MAXUSER = 256
항목 설명

<resrc_name>

하나의 Tmax 시스템(도메인)의 고유한 이름으로 63자 이내로 정의한다.

SHMKEY

내부적으로 공유 메모리를 할당하기 위한 값으로 전체 시스템에서 유일한 값이어야 하고, 32,768 ~ 262,143 사이를 선택한다.

MAXUSER

도메인에 동시에 접속 가능한 최대 클라이언트 수이다.

1.2. NODE 절

도메인을 이루는 각 노드들에 대한 정보를 설정한다.

*NODE
<uname>             TMAXDIR = "<TMAX installed directory>",
                    APPDIR = "<APPLICATION DIRECTORY>",
                    PATHDIR = "<path directory>"
항목 설명

<uname>

63자 이내의 문자열로 정의되는 노드명을 나타낸다. 이것은 uname –n 명령으로 반환되는 값을 사용한다. hostname의 반환값과 "uname –n"의 반환값이 동일해야 한다.

TMAXDIR

Tmax가 존재하는 디렉터리 정보이다.

APPDIR

애플리케이션이 존재하는 디렉터리 정보이다.

PATHDIR

Tmax 프로세스들의 내부적인 통신을 위한 디렉터리 정보이다.

1.3. SVRGROUP 절

논리적인 연관성을 지닌 서버들의 모임으로, 데이터베이스 사용이나 부하조절, 장애대책 등의 기본 단위가 된다. 하나의 머신에 대해 적어도 1개의 서버 그룹이 정의되어 있다.

*SVRGROUP
<svg_name>        NODENAME = <uname>,
                  OPENINFO = "Oracle_XA+Acc=P/scott/tiger+SesTm=60",
                  DBNAME = ORACLE,
                  TMSNAME = tms_ora
항목 설명

<svg_name>

서버 그룹명으로 63자 이내의 문자열로 표현되며, SVRGROUP 절에서 유일해야 한다.

NODENAME

서버 그룹이 존재하는 노드명이다. 서버 그룹에는 데이터베이스에 대한 정의가 포함된다. 따라서 데이터베이스를 사용하는 경우 'DBNAME', 'OPNEINFO', 'TMSNAME' 3개의 항목들을 정의할 필요가 있다.

DBNAME

사용하는 데이터베이스명(예:ORACLE)을 정의하는 항목이다.

OPENINFO

데이터베이스와 연결을 맺기 위한 정보를 등록하는 항목으로 256자 이내의 문자열로 정의되며, 데이터베이스 종류에 따라 등록 방식이 달라진다.

  • Oracle

    OPENINFO = "Oracle_XA+Acc = P/account/password+SesTm = 60"
  • Informix

    OPENINFO = "데이터베이스명"

CLOSEINFO

데이터베이스와의 연결 해제에 필요한 정보를 등록하는 항목으로 256자 이내의 문자열로 정의되며 생략이 가능하다. 데이터베이스 종류에 따라 등록방식이 달라진다.

  • Oracle

    CLOSEINFO = ""
  • Informix

    CLOSEINFO = ""

TMSNAME

TMS 프로세스명으로 63자 이내로 정의한다.

1.4. SERVER 절

응용 서버에 대한 정보를 등록한다.

*SERVER
<svr_name>          SVGNAME = <sgrpname> , MIN = 1, MAX = 3
항목 설명

<svr_name>

서비스를 제공하는 서버의 실행 파일명으로 63자 이내로 정의된다.

SVGNAME

서버 프로세스가 속한 서버 그룹명으로 *SVRGROUP에 정의되어 있어야 한다.

CLOPT

명령어 라인의 옵션을 넘기기 위한 매개변수로 하이픈(-)을 구분자로 시스템 옵션과 사용자 옵션을 구분한다. 이 라인은 tpsvrinit() 함수에서 처리한다.

MIN

하나의 서버를 여러 개 동작시키고자 할 경우 기본적으로 동작시킬 서버의 개수이다.

MAX

동적으로 추가 동작시킬 수 있는 서버의 최대 개수이다.

CONV

값이 'Y’이면 대화형 통신이 이루어지는 대화형 서버임을 나타낸다. (기본값: N)

1.5. SERVICE 절

서비스에 대한 정보를 설정한다.

*SERVICE
<svc_name>          SVRNAME = <svrname>
항목 설명

<svc_name>

클라이언트에서 호출하는 함수명으로 63자 이내로 정의되며 유일한 이름이어야 한다. SERVICE 절에 등록된 서비스만 지원 가능하다.

SVRNAME

서비스를 제공하는 서버명이다.

2. Makefile

본 절에서는 Oracle과 Infomix를 위한 TMS Makefile의 예제를 설명한다.

Oracle을 위한 TMS Makefile

다음은 Oracle을 위한 TMS Makefile(Solaris 32bit) 예제이다.

#
include $(ORACLE_HOME)/precomp/lib/env_precomp.mk
ORALIBDIR = $(LIBHOME)
ORALIB = $(PROLDLIBS) $(LIBCLNTSH)

TARGET  = tms_ora
APOBJ   = dumy.o

APPDIR  = $(TMAXDIR)/appbin
TMAXLIBD= $(TMAXDIR)/lib

TMAXLIBS  = -ltms –loras –lsocket -lnsl

all: $(TARGET)

$(TARGET): $(APOBJ)
        $(CC) -L$(TMAXLIBD) -o $(TARGET) -L$(ORALIBDIR) $(ORALIB) $(APOBJ)
        $(TMAXLIBS)
        mv $(TARGET) $(APPDIR)

$(APOBJ):
        $(CC) -c dumy.c
#
clean:
        -rm -f *.o core $(TARGET)

Informix를 위한 TMS Makefile

다음은 Informix를 위한 TMS Makefile(Solaris 32bit) 예제이다.

TARGET  = tms_info

INFOLIBDIR = ${INFORMIXDIR}/lib
INFOELIBDIR = ${INFORMIXDIR}/esql
INFOLIBD = ${INFORMIXDIR}/lib/esql
INFOLIBS = -lifsql -lifasf -lifgen -lifgls -lifos –lnsl –lsocket –laio –elf -lm –ldl
           ${INFOLIBDIR}/esql/checkapi.o -lifglx -lifxa

TMAXLIBDIR = $(TMAXDIR)/lib
TMAXLIBS  = -ltms -linfs

$(TARGET):
    $(CC) -o $(TARGET)  -L$(TMAXLIBDIR) -L$(INFOLIBD) -L$(INFOLIBDIR)
    –L$(INFOELIBDIR) $(TMAXLIBS) $(INFOLIBS)
    cp $(TARGET) $(TMAXDIR)/appbin

#
clean:
    -rm -f  core $(TARGET)