환경변수 설정

본 장에서는 서버, 클라이언트에 설정할 환경변수와 설정 방법, 다수의 서버 정보를 등록하는 방법에 대해 설명한다.

1. 개요

Tmax 시스템에서 사용하는 환경변수는 크게 2가지로 나누어지는데, 첫 번째는 Tmax 시스템에서 사용하는 환경변수이고, 두 번째는 서버 프로세스에서 사용하는 환경변수이다. Tmax 시스템에서 사용하는 환경변수의 대부분은 Tmax 시스템에 접근하기 위한 변수로 본 장에서 설정하는 환경변수는 다음 장에서 설명될 환경 파일의 항목과 동일한 값을 입력해야 한다. 또한 환경변수는 해당 시스템에서 수행되는 모든 서버 프로세스에 동일하게 적용된다.

Tmax 시스템이 설치된 서버는 해당 셸의 프로파일에 환경변수를 반드시 설정해야 하지만 클라이언트는 2가지 방식으로 설정하여 사용할 수 있다.

  • 서버와 동일하게 프로파일에 설정하여 사용한다.

  • 특정 파일에 일정한 포맷으로 설정하여 사용한다.

Tmax 시스템과 함께 기동되는 서버 프로세스에서 사용되는 환경변수는 특정 파일에 지정된 포맷으로 설정하고 환경 파일의 ENVFILE 항목에 해당 파일을 등록해서 사용할 수 있다.

2. 환경변수

Tmax 시스템이 설치된 서버와 클라이언트는 모두 동일한 환경변수를 사용하지만 Tmax 시스템이 설치된 노드의 모든 환경변수를 클라이언트에 설정할 필요는 없다.

2.1. 서버 환경변수

다음은 서버에 설정할 환경변수 목록이다.

환경변수 내용

TMAXDIR

Tmax 시스템의 홈 디렉터리이다. (환경 파일 항목: TMAXDIR)

TMAX_BKAPPDIR

기존의 서버 프로세스를 변경하는 경우 새로운 프로세스가 위치할 디렉터리이다.

TMAX_HOST_ADDR

Tmax 시스템이 수행될 서버의 IP 주소이다. 클라이언트가 랜덤하게 서버를 선택하여 접속하기 때문에 부하분산이 가능하다. 자세한 설명은 다수의 서버 정보 등록을 참고한다.

TMAX_HOST_PORT

Tmax 시스템에 접속할 포트 번호이다. (환경 파일 항목: PORNO)

TMAX_BACKUP_ADDR

Tmax 백업 서버의 IP 주소이다.

TMAX_BACKUP_PORT

Tmax 백업 서버의 포트 번호이다.

TMAX_RAC_PORT

분산 노드로 구성된 시스템을 통합 관리하기 위한 포트 번호로 racd에서 사용된다. (환경 파일 항목: RACPORT)

TMAX_ERR_MSG

서버 콘솔창에 에러 메시지를 표시할 것인지를 'Y' 또는 'N’으로 설정한다.

SDLFILE

구조체 정보가 저장된 파일을 지정한다.

FDLFILE

필드키 정보가 저장된 파일을 지정한다.

TMAX_PATHDIR

tmdown에 참조할 환경 파일의 경로이다. (환경 파일 항목: PATHDIR)

TMAXHOME

설치 디렉터리와 작업 디렉터리를 분리하여 사용할 때 다음과 같이 설정한다. (환경 파일 항목: TMAXHOME)

  • TMAXHOME에 설치 디렉터리 : bin, lib, usrinc, tuxinc, topinc, cobinc, license

  • TMAXDIR에 작업 디렉터리 : config, path, log, svct

TMAX_SEMANTICS

FML 버퍼 중 데이터를 읽어오는 함수(fbget, fbget_tu, fbget_tut, fbgetf, fbgetlast_tu, fbnext_tu)에서 버퍼의 길이에 따른 동작을 지정하기 위한 환경변수이다. 함수의 마지막 필드에 데이터 길이를 명시해서 사용자가 지정한 버퍼를 검증한다. 사용자가 지정한 버퍼가 실제 데이터보다 작은 경우에 발생할 수 있는 문제를 해결할 수 있다.

TMAX_TRACE

Tmax 애플리케이션의 실행에 대한 Runtime tracing이 이루어질 수 있도록 하는 환경변수이다.

TMAX_DEBUG

클라이언트의 디버그 및 에러 로그를 화면이 아닌 사용자가 지정한 파일에 기록할 수 있다.

해당 환경변수에 파일을 설정한다. filename.pid와 같이 설정하면 실제 기록되는 파일명은 파일명 뒤에 해당 클라이언트의 PID(Process ID)가 붙어 자동으로 설정된다. (예: log.22672)

TMAX_LOGLVL

tmm에 접속하지 않는 모듈들이나 tmm에 접속하기 전의 모듈 및 tmm에 대해 출력할 디버그 로그의 레벨을 결정한다. 설정하는 값은 환경 설정 DOMAIN절의 TMMLOGLVL과 동일하다.

TMAX_DEBUG와 함께 사용하여 로그 출력위치를 정할 수 있다. TMAX_DEBUG 이상의 로그들은 stderr가 기본 위치이다.

일반 유틸리티는 TMAX_ERR_MSG 환경변수가 N이나 n인 경우에는 어떤 메시지도 출력을 하지 않는다.

tmm에 접속하는 모듈들은 tmm 접속 전까지만 TMAX_ERR_MSG 환경변수에 의해서 로그 출력 여부가 결정된다. tmm 접속 이후에는 모든 로그를 출력한다. DEBUG4 레벨은 일부 gateway에서 dump msg를 출력할 수 있다.

TMAX_STRING_NULL

tpalloc/tprealloc API를 이용하여 STRING 타입의 버퍼를 할당한다.

할당된 버퍼에 대하여 사용자가 NULL을 위한 마지막 1Byte 공간까지 데이터를 입력하고 서비스를 요청했을 경우 TPEINVAL(클라이언트), TPESVCERR(서버) 에러가 발생한다.

해당 환경변수를 'Y’로 설정하면 위의 상황이 발생하는 경우 1Byte 크기의 버퍼가 추가로 할당되며 해당 공간에 자동으로 NULL 문자가 설정된다.

TMAX_HOST_IPV6

TMAX_HOST_ADDR 환경변수에 설정한 주소가 IPv6 프로토콜을 사용할 경우에는 'Y' 또는 'IPV6’로 설정한다.

InfiniBand SDP(Socket Direct Protocol)을 사용하는 경우에는 'SDP’로 설정한다.

TMAX_BACKUP_IPV6

TMAX_BACKUP_ADDR 환경변수에 설정한 주소가 IPv6 프로토콜을 사용할 경우에는 'Y' 또는 'IPV6’로 설정한다.

InfiniBand SDP(Socket Direct Protocol)을 사용하는 경우에는 'SDP’로 설정한다.

TMAX_WEBADM_IPV6

Tmax WebAdmin Agent 프로그램인 twagent에서 TMAX_WEBADM_PORT로 listen할 때 IPv6 프로토콜을 사용할 것인지를 설정한다. 'Y' 또는 'IPV6’로 설정하면 IPv6 프로토콜을 사용한다.

InfiniBand SDP(Socket Direct Protocol)을 사용하는 경우에는 'SDP’로 설정한다.

TMAX_RAC_IPV6

분산 노드로 구성된 시스템의 통합 관리를 위해 사용되는 racd 데몬 프로세스에서 connect, listen을 수행할 때 IPv6 프로토콜을 사용할 것인지를 설정한다.

  • 'Y' 또는 'IPV6’로 설정하면 IPv6로 사용하고, InfiniBand SDP(Socket Direct Protocol)을 사용하는 경우에는 'SDP’로 설정한다.

  • 'N’으로 설정하거나 환경변수를 설정하지 않으면 IPv4로 사용한다.

racd를 기동할 때 [-k] 옵션을 사용하는 경우에만 환경변수가 적용되고, 이진 Tmax 환경 파일을 사용해서 기동되는 경우에는 SYSTEM_IPV6 설정값의 영향을 받는다.

TMAX_IPV6_LINK_IF

IPv6 프로토콜을 사용하는 환경에서 Tmax의 프로세스들이 listen이나 connect를 수행할 때 네트워크 인터페이스명에 대한 인터페이스 인덱스를 정상적으로 인식하지 못하는 경우에 네트워크 인터페이스명을 지정한다.

TMAX_APPLY_IPCPERM

서버가 최초로 기동했을 때 CLOPT 절의 -e, -o 옵션 지정으로 남는 로그 파일의 권한이 환경설정 파일의 DOMAIN 또는 NODE절에 설정되는 IPCPERM 값을 따라 설정되도록 설정한다.

  • 'Y' 또는 'y’로 설정하면 서버가 -e, -o로 남기는 로그 파일이 IPCPERM을 따라 생성된다.

  • 'N' 또는 'n’으로 설정하거나 설정되어 있지 않으면 최초 생성되는 로그 파일의 권한이 IPCPERM을 따르도록 보장되지 않는다.

TMAX_TENC_CIPHER

Tmax 환경설정 파일에서 사용가능한 SEED 기반 암복호화 유틸리티 관련 설정이으로 암호화 방식을 지정한다.

SEED 이외의 값을 설정하거나 설정하지 않으면 기존 암호화 방식으로 처리된다.

TMAX_TENC_KEYFILE

비밀키 파일의 위치를 지정한다. 암호화 방식이 SEED 일 경우에는 반드시 필요하다.

TMAX_FDL_LONGSIGN

FDL에서 long 타입 값의 부호를 유지할 것인지 여부를 지정한다.

(기본값: N)

FDL의 long 타입 실제 크기는 4byte이다. 사용하는 환경에 따라서 C 언어의 long 타입 변수의 값을 FDL의 long 타입에 대입하면 표현 가능한 범위가 달라져서 정상적인 값을 교환할 수 없고, 4byte 크기 안에서의 값의 표현에 대해서는 호환이 가능하다.

그러나 다음과 같은 경우에는 음수/양수의 값에 대한 호환이 안되는 문제가 있다. 예를 들어 32bit 환경에서 long 타입 변수에 -2를 설정하고 전송하는 경우 64bit 환경에서 해당 필드값을 long 변수에 저장하면 음수가 아닌 양수 값을 수신하는 현상이 있다. long 타입에 대해서 4byte 표현 범위 안에서 signed 부호를 가지도록 하기 위해서는 이 환경변수를 'Y’로 지정한다.

[주의사항]

FDL의 long 타입의 최대 표현 크기는 이기종간 호환성때문에 4Byte integer 크기이다. 만약 long 변수를 사용할 때 INT_MAX를 초과하는 값을 사용하는 경우에는 양수와 음수를 변환할 때 정상적으로 처리되지 않을 수 있다.

예를 들어 다음과 같은 문제들이 있다.

  1. long 변수에 0xFFFFFFFF1FFFFFFFL 값이 있으면 64bit 환경에서는 음수이지만, 32bit 환경에서는 0x1FFFFFFF이므로 양수가 된다.

  2. 32bit 환경에서 unsigned long 변수에 0x80000000 값이 있으면 양수이지만, 라이브러리는 이 변수가 signed/unsigned 여부를 알 수 없으며, long 타입에서는 음수로 표현된다. 64bit 환경에서 이 값을 fbget하면 long 변수에 0xFFFFFFFF80000000L 값을 저장하게 된다. 64bit에서 unsigned long 변수로 리턴받은 값은 실제보다 엄청 큰 수가 리턴된다.

TMAX_XA_DLL

Windows에서 DB가 ORACLE인 XA 서버 그룹을 설정하는 경우 TMAX_XA_DLL이나 ORACLE_XA_DLL에 실제 xa_switch를 가진 Oracle client dll에 대한 이름을 설정해야 한다.

(예: TMAX_XA_DLL=ORACLIENT10.DLL)

TMAX_STRING_NULL은 tpalloc/tprealloc으로 할당된 버퍼에 한해서만 지원되고 서버와 클라이언트가 동일하게 동작한다. 반드시 환경변수를 'Y’로 설정해야 한다는 점을 주의한다.

다음은 TMAX_SEMANTICS 환경변수의 설정값에 대한 예제이다. 사용자가 지정한 버퍼 크기가 실제 데이터의 크기보다 작을 경우 사용자가 지정한 버퍼의 크기만큼만 절삭(Truncate)하여 버퍼에 넣는다.

TMAX_SEMANTICS="FDL_LEN=TRU"

다음과 같이 설정한 경우 사용자가 지정한 버퍼 크기가 실제 데이터의 크기보다 작으면 FBENOSPACE 에러가 발생한다.

TMAX_SEMANTICS="FDL_LEN=ERR"

다음과 같이 설정하면 사용자가 입력한 length가 무시되고, 사용자가 충분한 크기의 버퍼를 할당했다고 가정하고 동작한다. 이 환경변수는 fbget 유형 함수의 마지막 필드에 데이터 길이를 명시한 경우에만 유효하다. 마지막 필드가 0 또는 NULL일 경우 사용자가 충분한 길이의 버퍼를 할당했다고 가정하고 동작한다.

TMAX_SEMANTICS="FDL_LEN=OLD"

2.2. 클라이언트 환경변수

다음은 클라이언트에 설정할 환경변수 목록이다.

환경변수 내용

TMAX_HOST_ADDR

Tmax 서비스 서버의 IP 주소이다.

TMAX_HOST_PORT

Tmax 서비스 서버의 포트 번호이다.

TMAX_CONNECT_TIMEOUT

Tmax 시스템을 연결하는 경우 타임아웃 시간을 millisecond 단위로 지정이 가능하다. (x.xxx초)

SDLFILE

구조체 정보가 저장된 파일을 지정할 환경변수이다.

FDLFILE

필드키 정보가 저장된 파일을 지정할 환경변수이다.

ULOG(또는ULOGPFX)

클라이언트에 로그를 남기고자 하는 경로를 설정한다. 설정하지 않으면 Tmax 환경 파일에 설정된 ULOGDIR 경로에 기록이 남는다.

TMAX_TRACE

클라이언트 애플리케이션 실행에 대한 Runtime tracing이 수행된다.

TMAX_SEMANTICS

FML 버퍼 중 데이터를 읽어오는 함수(fbget, fbget_tu, fbget_tut, fbgetf, fbgetlast_tu, fbnext_tu)에서 버퍼의 길이에 따른 동작을 지정하기 위한 환경변수로 서버의 환경변수를 참조한다.

암호화 기능을 사용하는 경우 Tmax는 클라이언트와 서버 사이의 송수신 데이터를 보다 안정적으로 전달할 수 있도록 암호화 기능을 제공한다.

TMAX_CRYPT_ALGORITHM

암호화 기능을 사용하는 경우 암호화 방식을 지정하는 환경변수이다.

  • 지정하지 않을 경우 기본값은 "3DES" 방식이다.

  • "AES" 방식으로 변경하려면 TMAX_CRYPT_ALGORITHM="AES"로 지정한다.

TMAX_DEBUG

클라이언트의 디버그 및 에러 로그를 화면이 아닌 사용자가 지정한 파일에 기록할 수 있다. 해당 환경변수에 파일을 설정한다.

filename.pid와 같이 설정하면 실제 기록되는 파일명은 파일명 뒤에 해당 클라이언트의 PID(Process ID)가 붙어 자동으로 설정된다. (예: log.22672)

TMAX_LOGLVL

TMM에 접속하지 않는 모듈들이나 TMM에 접속하기 전의 모듈 및 TMM에 대해 출력할 디버그 로그의 레벨을 결정한다. 설정하는 값은 환경 설정 DOMAIN 절의 TMMLOGLVL과 동일하다.

TMAX_HOST_IPV6

TMAX_HOST_ADDR 환경변수에 설정한 주소가 IPv6 프로토콜을 사용할 경우에는 'Y' 또는 'IPV6’로 설정한다.

InfiniBand SDP(Socket Direct Protocol)을 사용하는 경우에는 'SDP’로 설정한다.

TMAX_BACKUP_IPV6

TMAX_BACKUP_ADDR 환경변수에 설정한 주소가 IPv6 프로토콜을 사용할 경우에는 'Y' 또는 'IPV6’로 설정한다.

InfiniBand SDP(Socket Direct Protocol)을 사용하는 경우에는 'SDP’로 설정한다.

TMAX_IPV6_LINK_IF

IPv6 프로토콜을 사용하는 환경에서 Tmax의 프로세스들이 listen이나 connect를 수행할 때 네트워크 인터페이스명에 대한 인터페이스 인덱스를 정상적으로 인식하지 못하는 경우에 네트워크 인터페이스명을 지정한다.

TMAX_ACTIVATE_AUTO_TPSTART

'Y' 또는 'N’으로 설정하며 설정하지 않을 경우 기본값은 'Y’이다.

  • Y : 클라이언트 프로그램에서 tpstart를 명시적으로 호출하지 않고 tpcall, tpacall 등의 API를 호출하면 자동으로 tpstart(NULL)을 호출해서 Tmax 시스템과 연결한다.

  • N : tpstart()가 명시적으로 호출되지 않은 경우에는 TPEPROTO 에러가 발생한다.

이 옵션의 영향을 받는 API는 다음과 같다.

tpcall(), tpacall(), tpcallsvg(), tpacallsvg(),
tpconnect(), tpchkunsol(), tpsetunsol(), tpgetunsol(),
tpsubscribe(), tpsubscribe2(), tpunsubscribe(), tppost(),
tpbroadcast(), tpgetcliaddr(), tpgetpeername(),
tpgetsockname(), tpsleep(), tpgetactivesvr(), tpqsvcstat(),
tpqstat(), tpenq(), tpdeq(), tpreissue(), tpmcall(),
tpsvgcall(), tpenq_ctl(), tpdeq_ctl(), tx_begin()

PB_TPCALL_RETRY

Power Builder 환경에서 tpcall 요청이 네트워크 오류에 의해 실패할 경우 재시도할 최대 횟수를 설정한다.

이 환경변수의 영향을 받는 API는 다음과 같다.

pb_tpcall(), pb_tpfcall(), pb_tpcallw(), pb_btpcall(),
pb_etpcall(), tuxcall(), tuxfcall32(), tp_call(),
tp_call32(), tp_fcall(), tp_fcall32()

PB_TPCALL_RETRY_TIMEOUT

Power Builder 환경에서 tpcall을 요청할 때 각 요청에 대한 BLOCKTIME을 초 단위로 지정한다. 이 환경변수의 영향을 받는 API는 PB_TPCALL_RETRY 환경변수의 설명을 참고한다.

PB_TUXCOMPAT

Power Builder 환경에서 일부 API의 동작에 대해서 Tuxedo 라이브러리와의 호환성을 제공한다. 자세한 사항은 Tmax Programming Guide (4GL)를 참고한다.

이 환경변수의 영향을 받는 API는 다음과 같다.

tuxcall(), tuxfcall32(), tp_call(), tp_call32(),
pb_etpcall(), tp_fcall(), tp_fcall32()

FDLVERSION

FDL 버전을 지정할 수 있다. (기본값: 1)

  • 2 : 검색 성능이 향상된 버전으로 동작하며, 기존의 Tmax와의 호환성이 없다. 이 옵션의 영향을 받는 것은 서버 애플리케이션, ROUTING 절 설정에 따른 CLH의 스케줄링이다. 클라이언트에서는 환경설정의 옵션 적용을 받지 않으며, 다음의 환경변수를 설정해야 한다.

    export FDLVERSION=2 또는 tmax.env 환경변수 파일에 "FDLVERSION=2"라고 설정하고 tmaxreadenv()를 호출한다. 만약 fb* API를 사용할 때 FDLVERSION 설정이 자신의 환경과 일치하지 않으면 FBESETVER 에러를 리턴한다.

TMAX_PRB_1000

클라이언트가 CLH에서 연결이 끊기면 ECONNRESET을 검사한 후 TPECLOSE가 발생한다. 이 옵션을 'Y’로 지정할 경우 Tmax 6 버전과Tmax 5 SP2 Fix#2 이전의 버전과 같이 ECONNRESET을 검사하지 않도록 하여 일부 플랫폼에서 TPEOS가 발생할 수 있다. (기본값: N)

TMAX_ERR_STDOUT

TMAX_DEBUG가 지정된 상태에서 TMAX_ERR_STDOUT=Y를 설정하면 로그 파일에도 기록하고, 터미널 화면에도 출력한다.

TMAX_SEMANTICS을 설정하면 암호화 기능을 사용할 수 있다. 암호화 기능을 사용하기 위해서는 클라이언트와 서버 모두 암호화 기능이 설정되어 있어야 하며, 클라이언트 암호화 설정을 하는 경우 다음과 같이 '.profile’에 설정한다. 서버에 대한 암호화 설정은 "3.2.1 DOMAIN 절"의 CRYPT 항목을 참고한다.

<.profile>

export TMAX_SEMANTICS="CRYPT_SW=Y"

tmaxreadenv에서 TMAX_SEMANTICS 환경변수를 사용하는 경우 큰따옴표(" ") 안에 등호( = )대신 콜론(:)을 사용한다.

<tmax.env>

TMAX_SEMANTICS="FDL_LEN:ERR"
TMAX_SEMANTICS="CRYPT_SW:Y"

3. 환경변수 설정 방법

다음은 서버와 클라이언트의 환경변수의 설정 방법이다.

3.1. 서버 환경변수 설정

서버 환경변수 설정은 사용하는 셸에 따라 설정 대상이 다르다. korn 셸 및 bash 셸의 경우는 <.profile> 및 <.bash_profile>, c 셸의 경우 <.cshrc>에 설정한다.

환경변수를 설정할 때 환경변수명과 등호(=) 사이에는 공백이 없어야 한다.

  • korn 셸 및 bash 셸

    <.profile / .bash_profile>

    export TMAXDIR = /home/tmax
    export TMAX_BKAPPDIR = /home/tmax/bkappbin
    export TMAX_HOST_ADDR = 192.168.0.1
    export TMAX_HOST_PORT = 8888
    export TMAX_RAC_PORT = 3333
    export SDLFILE = /home/tmax/sample/sdl/tmax.sdl
    export FDLFILE = /home/tmax/sample/sdl/tmax.fdl
    export TMAX_PATHDIR = /home/tmax/path_new
    export TMAX_DEBUG = /home/tmax/sample/client/clidebug
  • c 셸

    <.cshrc>

    setenv TMAXDIR = /home/tmax
    setenv TMAX_BKAPPDIR = /home/tmax/bkappbin
    setenv TMAX_HOST_ADDR = 192.168.0.1
    setenv TMAX_HOST_PORT = 8888
    setenv TMAX_RAC_PORT = 3333
    setenv SDLFILE = /home/tmax/sample/sdl/tmax.sdl
    setenv FDLFILE = /home/tmax/sample/sdl/tmax.fdl
    setenv TMAX_PATHDIR = /home/tmax/path_new
    setenv TMAX_DEBUG = /home/tmax/sample/client/clidebug

Tmax 인스톨러를 사용해서 Tmax를 설치하며 기본 환경변수들은 자동적으로 셸의 프로파일 끝에 설정된다. Tmax 시스템의 서버에서 사용할 환경변수는 텍스트 파일로 만들어서 Tmax 환경 파일 NODE 절 및 SVRGROUP 절의 ENVFILE 항목에 파일명을 등록하면 서버 프로세스에서 참조할 수 있다.

<서버 환경 텍스트 파일>

LOGDIR = /tmp
USER_VARIABLE = test1
USER_VARIABLE = test2
USER_VARIABLE = test3
USER_VARIABLE = test4
USER_VARIABLE = test5

3.2. 클라이언트 환경변수 설정

클라이언트 환경변수의 설정은 OS에 따라 다르다.

  • UNIX의 경우

    서버와 동일하게 프로파일에 설정한다.

  • DOS나 Windows98, Windows NT/2000의 경우

    <autoexec.bat> 파일에 등록하거나 [시작] > [제어판] > [시스템 등록 정보] > [고급] > [환경변수]에서 설정한다.

    <autoexe.bat>

    set TMAX_HOST_ADDR = 192.168.0.1
    set TMAX_HOST_PORT = 8888
    set TMAX_CONNECT_TIMEOUT = 3
    set SDLFILE = /home/tmax/sample/sdl/tmax.sdl
    set FDLFILE = /home/tmax/sample/sdl/tmax.fdl
    set TMAX_DEBUG = /home/tmax/sample/client/clidebug

클라이언트의 환경변수는 다음과 같이 텍스트 파일로 등록했다가 필요할 때 해당 파일을 참조하여 사용할 수 있다.

<tmax.env>

[TEST]
TMAX_HOST_ADDR = 192.168.0.1
TMAX_HOST_PORT = 8888
TMAX_CONNECT_TIMEOUT = 3
SDLFILE = /home/tmax/sample/sdl/tmax.sdl
FDLFILE = /home/tmax/sample/sdl/tmax.fdl
ULOGPFX = /home/tmax/testlog
TMAX_DEBUG = /home/tmax/sample/client/clidebug

[REAL]
TMAX_HOST_ADDR = 192.168.0.2
TMAX_HOST_PORT = 1234
TMAX_CONNECT_TIMEOUT = 3
SDLFILE = /home/tmax/sample/sdl/tmax.sdl
FDLFILE = /home/tmax/sample/sdl/tmax.fdl
ULOGPFX = /home/tmax/reallog
TMAX_DEBUG = /home/tmax/sample/client/clidebug

클라이언트의 환경변수 설정에 대한 자세한 내용은 Tmax Reference Guide의 tmaxreadenv를 참고한다.

4. 다수의 서버 정보 등록

이전 버전에서 하나의 클라이언트는 하나의 서버에만 접속할 수 있었으나, Tmax 3.12.2 버전에서부터 클라이언트가 랜덤하게 서버를 선택하여 접속함으로써 부하 분산이 가능하도록 기능이 추가되었다. 다수의 서버를 사용하는 경우 TMAX_HOST_ADDR 환경변수를 설정한다.

다수의 서버 정보를 등록하는 방법은 다음과 같다.

  • IPv4

    TMAX_HOST_ADDR = (host_address:portno|host_address2:portno2),
                     host_address3:portno3,host_address4:portno4
  • IPv6

    TMAX_HOST_ADDR = ([host_address]:portno|[host_address2]:portno2),
                     [host_address3]:portno3,[host_address4]:portno4

콤마(,)로 구분된 것은 앞에서부터 순서대로 백업 관계이다. 먼저 'host_address:portno|host_address2:portno2’에 연결을 시도하여 실패하면 'host_address3:portno3’로 연결을 시도하고 해당 서버도 실패하면 'host_address4:portno4’에 연결을 시도한다.

괄호 안의 파이프 기호( | )로 연결된 것은 서로 Load balancing 관계이다. Load balancing 관계에 있는 서버는 클라이언트에서 랜덤하게 하나의 서버를 선택하여 연결을 시도하며, 연결이 실패하는 경우 Load balancing 관계에 있는 다른 서버에 차례대로 연결을 시도한 후 백업으로 지정된 서버에 연결을 시도한다.

다음은 TMAX_HOST_ADDR 설정에 대한 설명이다.

  • TMAX_HOST_ADDR에 설정하는 길이는 최대 255Bytes이다.

  • TMAX_HOST_ADDR에 지정된 주소로 모두 연결이 실패하는 경우 TMAX_BACKUP_ADDR 환경변수에 지정된 주소로 접속을 시도한다.

  • TMAX_HOST_ADDR 환경변수의 값에는 공백이 없어야 한다.

  • 셸에서 export나 setenv로 환경변수를 지정하는 경우에는 괄호나 파이프 기호( | )를 셸이 별도로 처리하기 때문에 큰따옴표(" ")를 사용해야 한다.

사용 예제

다음은 서버 정보를 등록하는 방법을 비교하는 예제이다.

  • 기존의 방식대로 동작하도록 할 경우

    TMAX_HOST_ADDR = 192.1.1.1
    TMAX_HOST_PORT = 9000
  • 클라이언트가 랜덤하게 접속하도록 할 경우

    TMAX_HOST_ADDR = (192.1.1.1:9000|192.1.1.2:9001),192.1.1.3:9003,192.1.1.4:9004
  • IPv6 프로토콜 환경에서 클라이언트가 랜덤하게 접속하도록 할 경우

    IPv6 프로토콜 환경에서는 host address와 portno를 구분하기 위해서 대괄호([ ])로 address 부분을 감싸준다.

    TMAX_HOST_ADDR = ([2011::10]:9000|[2011::20]:9001),[2011::100:30]:9003,[2011::100:40]:9004