Sun Java System Messaging Server 6 2005Q4 관리 설명서

사용 예

일반적으로 일부 채널의 처리를 다른 채널의 처리와 차별화하려는 경우 추가 풀 정의를 Job Controller 구성에 추가합니다. 또한 다른 특성을 가진 풀을 사용할 수도 있습니다. 예를 들어, 일부 채널에서 처리하도록 허용된 동시 요청의 개수를 제어해야 할 수 있습니다. 이렇게 하려면 작업 제한을 가진 새 풀을 만든 다음 pool 채널 키워드를 사용하여 이러한 채널을 더 적절한 새 풀로 향하게 합니다.

풀 정의 외에도 Job Controller 구성 파일은 각 채널에 대해 Job Controller가 요청을 처리하는 데 사용해야 하는 MTA 채널 및 명령 테이블을 포함합니다. 요청의 두가지 유형은 “마스터” 및 “슬레이브”로 한정됩니다. 일반적으로 채널 마스터 프로그램은 채널에 대한 MTA 메일 대기열에 저장된 메일이 있을 때 호출됩니다. 마스터 프로그램은 메일을 대기열에서 제외시킵니다.

슬레이브 프로그램은 채널을 폴하고 해당 채널에 대한 모든 인바운드 메일을 가져오기 위해 호출됩니다. 거의 모든 MTA 채널이 마스터 프로그램을 갖고 있지만 대부분은 경우 슬레이브 프로그램은 갖고 있지 않거나 불필요합니다. 예를 들어, TCP/IP를 통해 SMTP를 처리하는 채널은 슬레이브 프로그램을 사용하지 않는데 이는 임의 SMTP 서버에서 요청할 경우 네트워크 서비스인 SMTP 서버가 받는 SMTP 메일을 수신하기 때문입니다. SMTP 채널의 마스터 프로그램은 MTA의 SMTP 클라이언트입니다.

채널과 관련된 대상 시스템이 한 번에 하나의 메일만 처리할 수 있는 경우 작업 제한이 1인 새로운 유형의 풀을 만들어야 합니다.

[POOL=single_job]
job_limit=1

이와 달리 대상 시스템에 충분한 병행성이 있을 경우 작업 제한을 더 높은 값으로 설정할 수 있습니다.

예 10–1은 샘플 Job Controller 구성 파일을 보여 줍니다. 사용 가능한 옵션은 표 10–6에 나와 있습니다.


예 10–1 UNIX의 샘플 작업 제어기 구성 파일


!MTA Job Controller configuration file
!
!Global defaults
tcp_port=27442         (1)
secret=never mind
slave_command=NULL     (2)
max_life_age=3600      (3)
!
!
!Pool definitions
!
[POOL=DEFAULT]         (4)
job_limit=10           (5)
!
[POOL=LOCAL_POOL]
job_limit=10
!
[POOL=IMS_POOL]
job_limit=1
!
[POOL=SMTP_POOL]
job_limit=1
!
!Channel definitions
!
!
[CHANNEL=l]             (6)
master_command=msg_svr_base/lib/l_master
!
[CHANNEL=ims-ms]
master_command=msg_svr_base/lib/ims_master
!
[CHANNEL=tcp_*]         (7)
anon_host=0
master_command=msg_svr_base/lib/tcp_smtp_client

위 예의 괄호로 묶인 굵은체의 숫자가 표시된 주요 항목은 다음과 같습니다.

  1. 이 전역 옵션은 Job Controller가 요청을 수신하는 TCP 포트 번호를 정의합니다.

  2. 후속 [CHANNEL ] 섹션에 대한 기본 SLAVE_COMMAND를 설정합니다.

  3. 후속 [CHANNEL] 섹션에 대한 기본 MAX_LIFE_AGE를 설정합니다.

  4. 이 [POOL] 섹션은 DEFAULT라는 풀을 정의합니다.

  5. 이 풀의 JOB_LIMIT10으로 설정합니다.

  6. 이 [CHANNEL] 섹션은 l이라는 UNIX 로컬 채널에 적용됩니다. 이 섹션에 필요한 유일한 정의는 Job Controller가 이 채널을 실행하기 위해 사용하는 master_command입니다. 채널 이름에 와일드카드가 없기 때문에 채널은 정확하게 일치해야 합니다.

  7. 이 [CHANNEL] 섹션은 이름이 tcp_*로 시작하는 모든 채널에 적용됩니다. 이 채널 이름은 와일드카드를 포함하므로 이름이 tcp_로 시작하는 모든 채널과 일치합니다.

추가 풀을 추가하는 예

Job Controller는 메일 전달을 위해 채널 작업을 작성 및 관리합니다이러한 채널 작업은 Job Controller 내의 처리 풀 안에서 실행됩니다. 풀은 채널 작업이 실행되는 “장소”로 생각할 수 있습니다. 풀은 작업 세트가 풀 외부의 작업과 자원을 놓고 경쟁하지 않고도 작동할 수 있는 컴퓨팅 영역을 제공합니다. job_controller에서 설정된 작업 제한이 해당 풀에만 적용된다는 점을 유의하십시오. 따라서, 예를 들어 job_limit가 10으로 설정된 SMTP_POOL을 정의할 경우 특정 시점에 10개의 tcp_smtp 클라이언트 프로세스만 해당 풀에서 실행될 수 있습니다.

경우에 따라서는 추가 tcp_* 채널을 만드는 것이 필요할 수 있습니다(예: 특히 느린 메일 사이트를 위한 tcp 채널). 이러한 채널은 다른 풀에서 실행하는 것이 좋습니다. 이는 예를 들어, 10개의 다른 tcp_* 채널을 만들어 SMTP_POOL에서 모두 실행할 경우 특정 시점에 각 tcp_* 채널에 대해 하나의 tcp_smtp 클라이언트만 실행될 수 있기 때문입니다(job_limit10SMTP_POOL을 정의한 경우에 해당하며 메일이 모든 tcp_* 채널을 대상으로 하는지 여부에 따라 달라짐). 시스템의 로드량이 많고 다양한 tcp_* 채널로 나가길 기다리는 메일을 모든 대기열이 갖고 있다고 가정하면 이는 비효율적입니다. 이러한 경우에는 경합이 발생하지 않도록 추가 tcp_* 채널에 대한 추가 풀을 정의할 수 있습니다.

예를 들어, 다음 tcp_* 채널을 설정한다고 가정해 봅니다.


tcp_yahoo smtp mx pool yahoo_pool keyword keyword keyword
tcp-yahoo-daemon

tcp_aol smtp mx keyword keyword keyword pool aol_pool
tcp-aol-daemon

tcp_hotmail smtp mx pool hotmail_pool keyword keyword keyword 
tcp-hotmail-daemon
...
tcp_sun smtp mx pool sun_pool keyword keyword keyword
tcp-sun-daemon

각각의 새 채널에 대해 10개의 tcp_smtp_client 프로세스를 추가하기 위해 job_controller.cnf 파일에 다음을 추가할 수 있습니다.


[POOL=yahoo_pool]
job_limit=10

[POOL=aol_pool]
job_limit=10

[POOL=hotmail_pool]
job_limit=10

 ...

[POOL=sun_pool]
job_limit=10

풀에 대한 자세한 내용은 채널 실행 작업의 처리 풀을 참조하십시오. Sun Java System Messaging Server 6 2005Q4 Administration Reference를 참조하십시오.

표 10–6 Job Controller 구성 파일 옵션

옵션 

설명 

일반 옵션 

설명 

INTERFACE_ADDRESS=adapter

Job Controller가 바인드해야 하는 IP 주소 인터페이스를 지정합니다. 지정된 값(어댑터)은 ANY, ALL, LOCALHOST 또는 IP 주소 중 하나가 될 수 있습니다. 기본적으로 Job Controller는 모든 주소에 바인드됩니다(ALL 또는 ANY를 지정하는 것과 동일). INTERFACE_ADDRESS=LOCALHOST를 지정하면 Job Controller는 로컬 시스템 내의 연결만 수락합니다. 이 경우 Job Controller에 의해 지원되는 시스템 간 작업이 없이 때문에 정상적인 작업에 영향을 주지 않습니다. 그러나 이 지정은 Job Controller의 응답 여부를 HA 에이전트가 검사할 수 있는 HA 환경에서는 적합하지 않을 수 있습니다. Messaging Server가 실행 중인 시스템이 HA 환경에 있으며 “내부 네트워크” 어댑터 및 “외부 네트워크” 어댑터가 사용 중이고 높은 포트 번호에 대한 연결을 방화벽에서 차단할 수 있는지 확실하지 않을 경우, “내부 네트워크” 어댑터의 IP 주소를 지정하는 것을 고려해야 합니다.

MAX_MESSAGES=integer

Job Controller는 메일에 대한 정보를 메모리 내장 구조에서 유지합니다. 대량의 백로그가 작성될 경우에 대비하여 이 구조의 크기를 제한해야 할 수 있습니다. 백로그의 메일 수가 여기에서 지정된 매개 변수를 초과할 경우 후속 메일에 대한 정보를 메모리에 저장되지 않습니다. 메일 메시지는 항상 디스크에 기록되므로 손실되지 않지만 Job Controller가 알고 있는 메일 수가 이 숫자의 절반으로 줄어들 때까지 메일 전달이 고려되지 않습니다. 이 시점에서 Job Controller는 imsimta cache -sync 명령을 모방하는 대기열 디렉토리의 스캔을 수행합니다.

기본값은 100000입니다. 

SECRET=file_spec

Job Controller로 보내진 요청을 보호하는 데 사용되는 공유 비밀입니다. 

SYNCH_TIME=time_spec

Job Controller는 가끔씩 디스크상의 대기열 파일을 스캔하여 누락된 파일을 검사합니다. 기본적으로 이 작업은 Job Controller가 시작되고 4시간 후부터 4시간마다 수행됩니다. time_spec의 형식은 HH:MM/hh:mm 또는 /hh:mm입니다. 변수 hh.mm은 이벤트 사이의 간격을 나타내는 시간(h)과 분(m)입니다. 변수 HH:MM은 이벤트가 처음 발생해야 하는 시간입니다. 예를 들어, 15:45/7:15는 15시 45분에 이벤트를 시작하고 그 이후부터 7시간 15분마다 이벤트를 반복합니다.

TCP_PORT=integer

Job Controller가 요청 패킷을 수신해야 하는 TCP 포트를 지정합니다. 기본값이 시스템의 다른 TCP 응용 프로그램과 충돌하지 않을 경우 이 옵션을 변경하지 않습니다. 이 옵션을 변경할 경우 MTA 조정 파일 msg_svr_base/config/imta_tailor에서 해당 IMTA_JBC_SERVICE 옵션을 변경하여 일치시켜야 합니다. TCP_PORT 옵션은 전역적으로 적용되며 [CHANNEL] 또는 [POOL] 섹션에 있을 경우 무시됩니다.

풀 옵션

설명

JOB_LIMIT=integer

풀이 동시에(병렬로) 사용할 수 있는 최대 프로세스 수를 지정합니다. JOB_LIMIT는 각 풀에 개별적으로 적용되므로 작업의 최대 총 개수는 모든 풀의 JOB_LIMIT 매개 변수를 더한 값입니다. 이 옵션은 기본적으로 섹션 외부에 설정된 경우 JOB_LIMIT를 지정하지 않는 모든 [POOL] 섹션에 사용됩니다. [CHANNEL] 섹션 안에 있을 경우 이 옵션은 무시됩니다.

채널 옵션

설명

MASTER_COMMAND=file_spec

채널을 실행하고 해당 채널에 대한 아웃바운드 메일을 대기열에서 제외시키기 위해 Job Controller가 작성한 UNIX 시스템 프로세스에 의해 실행되는 명령의 전체 경로를 지정합니다. 이 옵션은 기본적으로 섹션 외부에 설정된 경우 MASTER_COMMAND를 지정하지 않는 모든 [CHANNEL] 섹션에 사용됩니다. [POOL] 섹션 안에 있을 경우 이 옵션은 무시됩니다.

MAX_LIFE_AGE=integer

채널 마스터 작업의 최대 수명 시간을 초 단위로 지정합니다. 채널에 이 매개 변수가 지정되지 않은 경우 전역 기본값이 사용됩니다. 기본값이 지정되지 않은 경우 1800(30분)이 사용됩니다. 

MAX_LIFE_CONNS=integer

최대 수명 매개 변수 외에 메일이 있는지 Job Controller에 물어볼 수 있는 횟수에 따라 채널 마스터 작업의 기대 수명이 제한됩니다. 채널에 이 매개 변수가 지정되지 않은 경우 전역 기본값이 사용됩니다. 기본값이 지정되지 않은 경우 300이 사용됩니다. 

SLAVE_COMMAND=file_spec

채널을 실행하고 해당 채널에 대한 모든 인바운드 메일을 폴하기 위해 Job Controller가 작성한 UNIX 시스템 프로세스에 의해 실행되는 명령의 전체 경로를 지정합니다. 대부분의 MTA 채널은 SLAVE_COMMAND를 갖지 않습니다. 이러한 경우 예약된 값 NULL을 지정해야 합니다. 이 옵션은 기본적으로 섹션 외부에 설정된 경우 SLAVE_COMMAND를 지정하지 않는 모든 [CHANNEL] 섹션에 사용됩니다. [POOL] 섹션 안에 있을 경우 이 옵션은 무시됩니다.