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