J-Jobs

Guides -J-Jobs Ent. v2.1 설치 가이드

J-Jobs Enterprise v2.1 설치 가이드

최종 작성일: 2018년 11월 30일

기준 버전 : J-Jobs Enterprise v2.1

Copyright ⓒ LG CNS LG CNS의 사전 승인 없이 본 내용의 전부 또는 일부에 대한 복사, 배포 사용을 금합니다.

J-Jobs 개요

Definition

Job scheduler는 wikipedia의 정의가 다음과 같이 나와있다.

A job scheduler is a computer application for controlling unattended background program execution of jobs. Job 스케쥴러는 무인 백그라운드 프로그램을 제어하기 위한 컴퓨터 어플리케이션이다.

위의 정의로 Job 스케쥴러는 정확한 시간에(Scheduling) 최적의 서버(LoadBalancing)에서 누락없이 실행(executing)되야 할 것이다. 이에 엔터프라이즈급 이라면 UX/UI가 갖추어진 관리화면이 필수적이다.

Overview

J-Jobs의 구성요소로는 크게 3가지가 있다. 여러가지 이유로 3Tier 구조로 분산되어 각자의 역할을 수행하며 최소한 하나이상의 구성요소가 있어야 정상적으로 J-Jobs가 작동된다. 구성요소의 역할은 다음과 같다.

conceptual_view

embedded tomcat은 설치에 따라 선택적으로 가능하다. 다만 현재버전에서는 embedded 버전을 지원하지 않으나 추후 embedded DB는 다른 설치파일로 제공될 예정이다. 또한 위의 예제의 포트는 필요에 따라 변경할 수 있는 임의의 값이다.

구성요소는 아래와 같다.

  • J-Job Manager(이하 매니저) : Job을 편집, Server에 실행요청, 모니터링을 하며 사용자 화면을 제공한다.
  • J-Job Server(이하 서버) : Job의 스케쥴링(Scheduling)과 부하분산(LoadBalancing) 그리고 Agent를 관리한다.
  • J-Job Agent(에이전트) : Job이 실제로 수행되는 곳이다. 에서 전달받은 Job을 누락없이 처리하고 결과를 DB에 반영한다.
  • DataBase : J-Jobs는 기본적으로 DB 큐 방식으로 Job을 컨트롤 하고 실행과정과 결과를 기록한다.

Default Embedded 어플리케이션

기본 Embedded 되어있는 프로그램은 다음과 같다.

  1. JRE (Java Runtime Environment)
  1. Tomcat
  1. H2 DB

포트 정보

embedded DB와 embedded WAS를 모두 사용했을때의 J-Jobs는 아래의 포트를 사용한다. 사전이 이미 bind 포트가 있다면 설치시에 변경하도록 한다.

구분프로토콜Port설명
매니저http8080매니저에서 http 서비스를 하는 포트이다. (http://{IP}:8080/jjob-manager 로 접속가능하다.)
매니저ws8080브라우저와 매니저사이의 웹소켓 통신하는 port이다.
서버http8090JM과 JS 사이의 RestAPI로 연결되어있는 Port이다. (http://localhost:19080/jjob-controller-rw-web/status 로 상태를 JSON형태로 받아볼 수 있다.)
서버tcp19000~19003JS와 JA사이에 연결되어있는 tcp port로 JA에게 Job을 실행요청 하는 역할을 수행한다.
H2 DBtcp9092H2 DB의 서비스 Port이다.
H2 DBhttp8082H2 웹콘솔에 접속한다. (http://localhost:8082/ 로 접속가능하며 비밀번호는 기본값이 jjobs1234 이다.)

기본적으로 tomcat에서 사용하는 Server들의 port는 생략했는데 세부정보는 아래를 참고한다. 규칙은 설정한 기본 Connector 포트(8080)에 설정한 값을 차이를 나머지 포트에 더해주는 방식이다. 가령 매너지의 포트를 8080, 서버의 포트를 8090으로 했다면

구분프로토콜대상기본 Tomcat 설정값변경값
매니저N/AServer 포트80058005 + 0 = 8005
매니저HTTP/1.1Connector 포트80808080 + 0 = 8080
매니저HTTP/1.1Connector redirect 포트84438443 + 0 = 8443
매니저AJP/1.3Connector 포트80098009 + 0 = 8009
매니저AJP/1.3Connector redirect 포트84438443 + 0 = 8443
서버N/AServer 포트80058005 + 10 = 8015
서버HTTP/1.1Connector 포트80808080 + 10 = 8090
서버HTTP/1.1Connector redirect 포트84438443 + 10 = 8453
서버AJP/1.3Connector 포트80098009 + 10 = 8019
서버AJP/1.3Connector redirect 포트84438443 + 10 = 8453

이 부분의 설정값을 변경하고자 하면 설치시 manager, server 폴더안의 server.xml 파일을 수정하면 된다.

(설치경로)/manager/conf/server.xml
(설치경로)/server/conf/server.xml

시스템 요구사항

J-Jobs를 설치하고 사용하기 위한 최소 요구사항이다. 이때의 최소 요구사항은 하나의 서버에서 매니저, 서버, 에이전트를 구동한다는 가정이다. 각각의 항목들은 필요에 따라서 이중화 하거나 다수개를 설치하여 가용성을 늘릴 수 있으나 체험판에서는 제공되지 않는다.

체험판의 경우의 최소 요구사항은 여유 Memory 1GB, 500MB 이상을 필요로 한다.

호환성

OS : CentOS6.5+, Windows 7+ JDK : 1.7+ WAS : tomcat7+, lena, weblogic, jeus, websphere 등

호환성의 경우 기본적으로 JDK 1.7 이상과 J2EE 7 Spec을 구현한 WAS가 설치가능하다면 실행에 별다른 문제는 없다. (각 WAS의 따라 설정과 라이브러리의 충돌이 일어나는 부분은 있으나 각각의 건은 해결방법이 게시판에 남아있다. 만약 없을 경우에는 글을 남겨주기 바란다.)

지원 브라우저

운영관리의 브라우저 호환성은 내부적으로 사용하고 있는 다양한 오픈소스의 호환성을 종합하여 판단한다. 현재는 표준브라우저에서 안정적으로 제공되며 특별히 IE 인 경우는 IE11 이상의 버전을 사용할 것을 권장한다.

  • 지원가능 브라우저 목록 IE11+, Chorme lastest, Firefox lastest, Opera lastest, Safari lastest

  • 대표적으로 사용하는 오픈소스 목록

libversionChromeIEFirefoxSafariOpera
datatables1.10.8SupportIE8+Support6+Support
angularJS1.3.7SupportIE9+SupportSupportSupport
fancytree2.17.0SupportIE10+Support6+Support
bootstrap3.3.6SupportIE9+SupportSupportSupport
bpmnSupportIE10+SupportSupportSupport
handsontable0.9.6SupportIE9+Support8+Support
jquery2.1.0SupportIE9+SupportSupportSupport
AngularUI Router0.2.11-1SupportIE10+SupportSupportSupport
angular-datepicker1.0.2SupportIE9+SupportSupportSupport
angular-daterangepicker0.1.10SupportIE10+SupportSupportSupport
iCheck1.0.2SupportIE6+2+Support9+
jquery-ui1.10.4SupportIE8+SupportSupportSupport
metisMenu2.0.2SupportIE10+SupportSupportSupport
momentSupportIE8+SupportSupportSupport
oclazyload0.4.1SupportIE9+SupportSupportSupport
sweetalertSupportIE8+SupportSupportSupport

체험판 제약사항

체험판 License 는 패키징안에 이미 제공되어 있으며 다음의 제약사항을 가진다.

  • 최대 동시 실행 개수 : 10개
  • 프로세스 개수 : 1개

정식 라이선스는 J-Jobs@lgcns.com 으로 요청한다.

설치 전 준비

J-Jobs에 할당된 DB의 권한확인 (옵션)

J-Jobs의 embedded DB를 사용하지 않는 경우 DB User에게 할당된 권한을 체크해야 한다.
물론 User의 접속권한, 테이블생성, PK추가, Index 추가 등등 확인 할 것이 있지만 간단하게 아래의 쿼리를 실행시켜서 문제가 있는지 확인 해 볼수 있다. (오라클 기준이므로 vendor에 맞게 수정하도록 하자.)

CREATE TABLE TEST_TABLE(SEQ CHAR(1), SEQ2 CHAR(2)); -- 테이블 생성
ALTER TABLE TEST_TABLE ADD CONSTRAINT TEST_TABLE_PK PRIMARY KEY (SEQ); -- 제약조건 추가
CREATE INDEX TEST_TABLE_I ON TEST_TABLE (SEQ2 ASC); -- 인덱스 생성
CREATE SEQUENCE TEST_SEQUENCE; -- 시퀀스 생성
DROP TABLE TEST_TABLE; --테이블 삭제
DROP SEQUENCE TEST_SEQUENCE; -- 시퀀스 삭제

API 토큰백업 (옵션)

기존에 J-Jobs를 restAPI를 통해 사용하고 있었다면 기존에 사용자별로 접속한 토큰값이 있었을 것이다. 새로 설치하게 되면 해당 토큰값은 사라지고 몇번을 다시 생성해도 같은 값을 가질 수 없다. 물론 API를 요청하는 쪽에서 토큰값을 변경해야 하지만 그것이 용이치 않을 경우 값을 조회하여 백업해 두고 그 값을 새롭게 update하는 방법을 사용할 수 있다. 아래의 쿼리를 이용하여 조회하고 업데이트 한다. (오라클 기준이므로 vendor에 맞게 수정하도록 하자.)

SELECT USER_ID, PRIVATE_TOKEN FROM JKMM_USER WHERE USER_ID LIKE '%' | | '%'; --토큰 조회
UPDATE JKMM_USER SET PRIVATE_TOKEN = '2b96b3e5275b603d585f' WHERE USER_ID = 'admin'; -- 사용자별로 토큰을 백업해 둔 값으로 업데이트

라이선스 파일백업 (옵션)

기존의 J-Job Agent 를 가지고 있고 호스트명이 변경되지 않았다면 기존의 Agent폴더를 지우기전에 license 파일을 백업해 두어야 한다. 라이선스 파일은 새로 설치뒤 같은 위치에 복사하면 된다. 단! J-Jobs v1.2.0 이전의 라이선스파일과 이후의 파일은 호환되지 않으므로 그 구간에 있다면 새롭게 라이선스를 발급받도록 한다.

(설치경로)/jjobs/license/license.dat

설치

윈도우 환경

제공 파일

윈도우용 설치 파일명

J-jjobs_windows_installer_x64_1.2.1.exe (약 200MB)

설치유형 선택

install_01

  • Full : 매니저, 서버, 에이전트를 모두 설치한다.
  • Only Manager : 매니저만 설치한다.
  • Only Server : 서버만 설치한다.
  • Only Agent : 에이전트만 설치한다.

필요한 경우 각각 따로 설치할 수 있으나 기본적으로 J-Jobs는 1개의 매니저, 1개의 서버, 1개의 에이전트가 기본이고 여러서버에 설치하지 않는 이상 Full 설치를 진행하면 된다.

Full : 선택

JDK 경로확인

install_02

  • Use Dedicated Java : 선택하게 되면 기본으로 내장된 Java 를 설치하게 된다. 이미 사용하고 있는 Java 가 있다면 Java Home Path를 지정하도록 한다.

Use Dedicated Java : 선택

DB 설정

install_03

  • Use Trial DBMS : 선택하게 되면 기본으로 내장된 H2 DB를 설치하게 된다. 이미 사용하고 있는 DB가 있다면 아래의 정보를 작성한다. (외부 DB를 사용할 때에는 설치전 준비 페이지의 사용자 권한을 확인하도록 한다.)
  • If you want to initialize all tables, you can click this button : 기존의 J-Jobs 관련 테이블이 있을 경우에는 DROP 하고 새로운 테이블을 만들게 된다. 내장 DB를 설치할 경우 매번 새로운 DB가 되므로 선택하지 않아도 된다.

Use Trial DBMS : 선택 initialize all tables : 선택안함

root 패스워드, 매니저 설치 정보

install_04

  • Root password : 매니저의 root 패스워드 를 설정한다. 한번 설정한 root 패스워드의 변경은 설정한 뒤 변경하기 어렵기 때문에 꼭 기억하도록 한다.
  • Use Dedicated Manager WAS : 매니저를 Deploy 할 WAS를 선택한다. 이미 사용하고 있는 WAS 에 올리면 Webapps Path를 지정할 수 있는데 설치가 완료되면 해당 경로에 jjob-manager.war가 생성되는 것을 확인 할 수 있다. 선택할 경우 기본 WAS인 tomcat이 설치된다.
  • Web Service Port : 매니저의 http 포트이다. 기본값은 8080으로 되어있다.
  • Register the manager to a windows service : 매니저를 윈도우 서비스로 등록하는 설정이다. 윈도우 서비스로 등록하게 되면 여러모로 간편한 점이 있으나 여기에서는 사용자가 직접 실행하는 것으로 하자. 윈도우 서비스로 등록시에는 제약사항이 있는데 문서 마지막의 FAQ에서 다루고 있다.

Root Password : jjobs1234 Use Dedicated Manager WAS : 선택 Web Service Port : 8080 윈도우 서비스 등록 : 선택안함

서버 설치정보

install_05

  • Server IP : 서버 IP를 입력한다. 로컬에서 설치할 경우 윈도우라면 ipconfig 리눅스라면 ifconfig를 확인하면 본인의 IP를 알수 있다.
  • Service IP or domain name : 도메인명이 있을 때 입력한다. 그런경우가 아니라면 위의 Server IP와 같은 값을 입력하면 된다.
  • Control Service Base Port : 서버와 에이전트와 통신할 tcp 포트를 설정한다. 19000 이라면 19000~19003 까지의 tcp 포트가 필요하다.
  • Web Service Port : 서버의 http 포트이다. 기본값은 8090으로 되어있다.
  • Server Group / ID : J-Jobs에서 논리적인 그룹과 서버의 식별자를 입력하는 곳이다. 이 값을 토대로 로드밸런스를 선택할 수 있게 되는데 이 값은 정수형으로 입력해야 하며 서버가 두대이상이 되지 않는 경우에는 변경하지 않아도 된다.
  • Register the server to a windows service : 서버를 윈도우 서비스로 등록하는 설정이다. 윈도우 서비스로 등록하게 되면 여러모로 간편한 점이 있으나 여기에서는 사용자가 직접 실행하는 것으로 하자.

ServerIP : 본인IP ServerIP or domain name : 본인IP Control Service Base Port : 19000 Web Service Port : 8090 Server Group / ID : 1 / 1 Server Name : 1-1 윈도우 서비스 등록 : 선택안함

에이전트 설치정보

install_06

  • Agent name : 에이전트는 유일한 식별자값으로 호스트명을 그 값으로 한다. 윈도우/리눅스 모두 커맨드 창에 hostname 이라고 치면 그 값이 나온다. 이미 기본값으로 본인의 호스트명이 들어가 있다.
  • Server Group : 앞에서 지정한 Server Group의 값을 넣어준다. 앞에서 1 이라고 설정했다면 여기에도 1을 넣어주자.
  • Service Domain, Service Port : 앞에서 설정한 서버정보중 에이전트 접속에 필요한 값을 한번더 보여준다.
  • Register the agent to a windows service : 에이전트를 윈도우 서비스로 등록하는 설정이다. 윈도우 서비스로 등록하게 되면 여러모로 간편한 점이 있으나 여기에서는 사용자가 직접 실행하는 것으로 하자.

Agent name : 본인 호스트명 Server Group : 1 윈도우 서비스 등록 : 선택안함

라이선스 확인

install_07

  • I accept the agreement : 라이선스 동의

I accept the agreement : 선택

설치경로 확인

install_08

  • J-Jobs 설치경로 : J-Jobs의 설치경로 홈을 설정한다.

C:\J-Jobs

Ready to Install

install_09

Install

설치 후 디렉토리 구조

설치경로_홈
    |- h2
    |- jjobs
    |- jjob_logs
    |- jre1.7.0_80
    |- manager
    |- server
    - jjobs.ico
    - start_agent.bat
    - start_db.bat
    - start_manager.bat
    - start_server.bat
    - stop_agent.bat
    - stop_db.bat
    - stop_manager.bat
    - stop_server.bat
    - unins000.dat
    - unins000.exe
    - uninstall.bat
    - uninstall_svc.bat
  • h2 : H2 DB이 설치된 경로 (설치시 외부 DB를 선택했을 경우에는 보이지 않는다.)
  • jjobs : 에이전트 설치경로
  • jre1.7.0_80 : JRE가 설치된 경로 (설치시 외부 Java Home을 지정했다면 보이지 않는다.)
  • manager : 매니저 설치경로
  • server : 서버 설치경로
  • jjobs.ico : J-Jobs 아이콘 파일
  • nssm.exe : 윈도우 서비스 등록시 필요한 실행파일
  • start_agent.bat : 에이전트를 실행
  • start_db.bat : H2 DB를 실행
  • start_manager.bat : 매니저 실행
  • start_server.bat : 서버 실행
  • stop_agent.bat : 에이전트 종료
  • stop_db.bat : H2 DB 종료
  • stop_manager.bat : 매니저 종료
  • stop_server.bat : 서버 종료
  • unins000.dat : J-Jobs 제거용 dat 파일
  • unins000.exe : J-Jobs 제거 실행파일
  • uninstall.bat : J-Jobs 제거 파일
  • uninstall_svc.bat : J-Jobs 윈도우 서비스 제거 파일

리눅스 환경

제공 파일

리눅스용 설치 파일명

jjobs_installer_linux_x64_x.x.x.tar.gz (약 200MB)

압축 해제을 해제하여 sh 파일로 J-Jobs를 설치한다.

tar xvfz jjobs_installer_linux_x64_x.x.x.tar.gz

설치 유형

J-Jobs Installer는 4가지 설치 유형 중 선택하여 다음과 같이 설치할 수 있다.

  • Full : J-Jobs Manager, Server, Agent를 모두 설치한다.
  • Only Manager : J-Jobs Manager 설치
  • Only Server : J-Jobs Server 설치
  • Only Agent : J-Jobs Agent 설치
  • 사용자 정의 설치 : 사용자가 직접 설치 옵션을 이용하여 본인의 환경에 맞게 J-Jobs 설치

Full 설치

기본적으로 J-Jobs Manager와 Server, Agent를 모두 한번에 설치할 수 있는 설치 모드로써, J-Jobs 기본 디렉토리만 지정하면 한번에 설치할 수 있다.

./jjob_installer_linux_x64_1.2.2.sh --base_path /engn001/J-Jobs

Manager 단독 설치

J-Jobs Manager를 단독으로 설치할 수 있으며 다음과 같은 옵션과 함께 설치한다. Manager가 설치되면서 내장된 Java(JRE), DBMS(h2)와 WAS(Tomcat)가 함께 설치된다.

./jjob_installer_linux_x64_x.x.x.sh \
--base_path /engn001/J-Jobs \
--install_kind M \
--install_mode I \
--use_dedicated_jre \
--use_trial_db \
--use_dedicated_man_was \
--man_root_pswd jjobs1234 \
--man_web_port 8080

man_root_pswd, man_web_port 옵션은 사용자가 원하는 값을 변경하여 설치할 수 있다.

Server 단독 설치

J-Jobs Server를 단독으로 설치할 수 있으며 다음과 같은 옵션과 함께 설치한다. Server가 설치되면서 내장된 Java(JRE), DBMS(h2)와 WAS(Tomcat)가 함께 설치된다.

./jjob_installer_linux_x64_x.x.x.sh \
--base_path /engn001/J-Jobs \
--install_kind S \
--install_mode I \
--use_dedicated_jre \
--use_trial_db \
--use_dedicated_man_was \
--svr_ip 127.0.0.1 \
--svr_service_domain 127.0.0.1 \
--svr_service_web_port 8090 \
--svr_cotrol_base_port 19000 \
--svr_group_id 1 \
--svr_id 1 \
--svr_name 1-1

svr_ip,svr_service_domain,svr_service_web_port,svr_cotrol_base_port,svr_group_id,svr_id,svr_name 옵션은 사용자 환경에 맞게 값을 변경하여 설치 할 수 있다.

Agent 단독 설치

J-Jobs Agent를 단독으로 설치할 수 있으며 다음과 같은 옵션과 함께 설치한다. Agent가 설치되면서 내장된 Java(JRE)가 함께 설치된다.

./jjob_installer_linux_x64_x.x.x.sh \
--base_path /engn001/J-Jobs \
--install_kind A \
--install_mode I \
--use_dedicated_jre \
--agnt_name `hostname` \
--agnt_svr_group 1 \
--agnt_install_svc_domain 127.0.0.1 \
--agnt_install_svc_port 8090

agnt_name, agnt_svr_group, agnt_install_svc_domain, agnt_install_svc_port 값은 사용자가 본인의 환경에 맞게 값을 변경하여 설치할 수 있다.

사용자 정의 설치

설치 환경에 따라 J-Jobs를 설치하기 위해 다음과 같은 실행 옵션을 제공한다.

Argument 명설명
--base_path/engn001/jjobsJ-Jobs 가 설치될 기본 경로
--install_kindF- F: Manager, Server, Agent 전부 설치
- M: Manager 단독 설치
- S: Server 단독 설치
- A: Agent 단독 설치
--install_modeI- I: Install
- P: Patch
--use_dedicated_jre기본 JRE 함께 설치
--java_path사용안함사용자가 기존에 설치한 Java(JRE,JDK 등)의 경로 지정
--use_trial_db사용안함별도의 DB 없이 J-Jobs 기본 DBMS(H2) 함께 설치
--use_oralce, --use_mssql_2008, --use_mssql_2012, --use_mariadb사용안함사용자가 기존에 사용하고 있는 DB에 J-Jobs를 설치하고자 할 때 DBMS 유형 선택
--jdbc_url사용안함사용자가 기존에 사용하고 있는 DB 접속 URL 정보
--dbms_user사용안함사용자가 기존에 사용하고 있는 DB 접속 계정 정보
--dbms_pswd사용안함사용자가 기존에 사용하고 있는 DB 접속 패스워드 정보
--use_init_tables사용안함J-Jobs 메타 테이블과 시퀀스, 인덱스 등 초기화
--use_dedicated_man_wasJ-Jobs Manager 설치 시, 기본 WAS(Tomcat) 함께 설치
--man_web_port8080기본 WAS에서 J-Jobs Manager를 위한 Web 접속 port 설정
--use_jeus, --use_lena, --use_weblogic, --use_tomcat, --use_webshpere사용안함사용자가 기존에 설치한 WAS가 있는 경우, WAS 유형 선택
--man_webapps_path사용안함사용자가 기존에 설치한 WAS가 있는 경우, Web Application이 복사될 경로 지정
--man_root_pswdjjobs1234J-Jobs Manager에 로그인할 root의 패스워드
--svr_ip127.0.0.1J-Jobs Server의 IP 지정
--svr_service_domain127.0.0.1J-Jobs Server의 Service Domain 지정
--svr_cotrol_base_port19000J-Jobs Server와 Agent 간의 tcp 통신 port 지정
--svr_service_web_port8090J-Jobs Server를 위한 Web 접속 port 설정
--svr_group_id1J-Jobs Server의 그룹 아이디
--svr_id1J-Jobs Server의 아이디
--svr_name1-1J-Jobs Server의 그룹아이디-아이디
--agnt_nameip-172-31-14-119J-Jobs Agent가 설치된 호스트의 호스트명을 넣어준다.
--agnt_svr_group1J-Jobs Agent 가 소속될 서버그룹의 아이디
--agnt_install_svc_domain127.0.0.1J-Jobs Server의 Service Domain IP 지정
--agnt_install_svc_port8090J-Jobs Server의 Web 접속 port

초기화

이 초기화 과정은 초기 설치후 한번만 진행하면 되는데 초기설정값을 DB에 넣는 작업을 수행한다.

DB 실행

(J-Jobs 설치경로)\start_db.bat

다음과 같은 화면이 나오면 성공이다. 본인IP의 내장 H2 DB의 서비스 포트인 9092를 확인 할 수있다.

install_10

매니저 실행

(J-Jobs 설치경로)\start_manager.bat

Tomcat 창으로 아래의 그림처럼 콘솔화면이 올라가는데 처음 실행할 때에는 war의 압축이 풀리면서 시간이 조금 걸릴 수 있다.

아래와 같은 화면이 나오면 성공이다.

install_11

매니저 접속

브라우저(크롬권장)을 이용하여 매니저에 접속해보자. 만약 보인 로컬에 설치했다면 localhost 를 설치한 곳과 브라우저의 IP가 다르다면 매니저를 설치한 곳의 IP를 적어야 한다.

http://localhost:8080/jjob-manager

아래와 같은 초기화면이 나오면 root 계정으로 접속해 보자.

사용자 ID : root 비밀번호 : jjobs1234 (초기 설치시 지정했던 비밀번호)

install_12

메타 테이블 설치

(script를 이용하여 DB를 설치하거나 (문서 마지막 Troubleshooting 참고) 이미 DB가 설치되어있는 경우는 이 챕터를 넘어가도 된다.)

초기에 매니저에 접속해서 접속하면 다음과 같이 DB 메타테이블을 설치하라는 팝업이 나온다.

install_32

확인 버튼을 클릭해서 설치화면으로 이동한다.

install_33

오른쪽 상단에 메타 테이블 설치를 클릭하면 J-Jobs에서 필요한 테이블과 DB객체들을 설치한다. (root 비밀번호를 물어보면 입력한다.)

install_34

설치 후에는 결과를 보여주게 된다. 만약 Trial DB를 선택했을 경우가 아닌 기존의 DB를 사용하도록 설치시 입력했다면 DB 권한 을 확인해보도록 한다. 필요한 DB권한은 다음과 같다.

  • USER 접속권한
  • TABLE CREATE, DROP, TRUNCATE 권한
  • PK, UNIQUE, INDEX CREATE, DROP 권한
  • SEQUENCE CREATE, DROP 권한

DB 테이블 설치가 성공적으로 완료 되었다면 오른쪽 상단의 로그인 화면으로 돌아간 뒤 다시 아래의 계정으로 로그인 한다.

사용자 ID : root 비밀번호 : jjobs1234 (초기 설치시 지정했던 비밀번호)

초기 접속화면

만약 다음과 같이 초기접속화면에 한글이 나오지 않는다면 로그아웃 후에 초기화면에서 F5를 눌러 페이지를 초기화 한뒤 다시 로그인 한다.

install_13

정상적인 초기화면은 다음과 같다.

install_14

초기화

상단 메뉴의 설치/제거 로 접근하면 다양한 버튼으로 설치에 대한 수동 초기화 버튼들이 있다. 이 버튼들에 대한 자세한 설명은 운영 가이드 를 참고 하고 여기에서는 오른쪽 상단의 초기화 마법사 버튼을 클릭한다.

install_35

기본설정

기본설정에서는 초기화를 할 항목들을 선택한다. 기본적으로 설치/제거 화면에 있는 버튼들의 역할을 한번에 수행해주는 역할을 한다. 지금은 초기 설치이므로 필요한 항목만 선택하도록 하는 데 이미 기본선택되어 있는 것을 변경하지 않고 그대로 수행하면 된다.

install_36

각각에 대한 설명은 아래와 같다.

항목초기 설치시 선택여부설명
매니저 설정매니저의 설정값을 초기화 하여 DB에 넣는다.
타임존대표 도시가 추가된다.
Refresh Flag서버의 주요정보를 Refresh 값을 초기화 한다.
시퀀스아니오내부적으로 사용하고 있는 Sequence의 Flag값을 초기화 한다.
역할&API기본 역할( ADMINISTRATOR, USER, GUEST )을 추가하고 API를 추가한다.
메뉴역할별로 기본적으로 허용될 메뉴를 추가한다.
템플릿J-Jobs 에서 제공하는 기본 템플릿을 추가한다.
알림아니오알림설정을 초기화 한다. 초기 설치시 필요없음
Job정보아니오Job관련 정보를 갱신한다. 초기 설치시 필요 없음
Step정보아니오Step관련 정보를 갱신한다. 초기 설치시 필요 없음
폴더아니오폴더 정보가 없는 Job을 Temp 폴더로 매핑한다. 초기 설치시 필요 없음

위와 같이 선택하고 다음을 클릭한다.

어드민 계정

ADMINISTRATOR 역할을 가지는 사용자를 추가한다. 추후에 사용자를 추가/수정/삭제 할 수 있으나 최소 한명이상은 등록되어있어야 한다.

install_37

항목초기 설치시 선택여부설명
어드민 계정생성설치시 어드민 계정을 생성한다.
어드민 ID어드민 계정의 ID를 입력한다.
admin 이라는 ID로 미리 작성되어있다.
어드민 이름어드민 계정의 이름을 입력한다.
어드민 패스워드어드민 계정의 패스워드를 입력한다. 패쓰워드는 10자이상을 작성해야 하고 숫자와 문자를 모두 사용해야 한다.
전통적을 jjobs12345 라는 패스워드를 기본으로 사용하고 있다.

모든 항목을 입력했으면 다음 버튼을 클릭한다.

데이터소스 설정

이번 탭은 서버와 에이전트에서 사용하는 DB연결정보를 등록하는 곳이다. 매니저의 접속정보를 기반으로 미리 작성되어 있으나 실제 연결정보로 작성되었는가를 반드시 확인하도록 한다.

install_38

항목초기 설치시 선택여부설명
DB 이름Trial DB를 사용했다면 h2가 선택되어있을 것이다.
(h2, oracle, db2, mariadb, postgresql 을 지원한다.)
JDBC 드라이버JDBC 드라이버를 입력한다. 지원하는 DB의 JDBC 드라이버는 아래 같다.
(참고)
oracle : oracle.jdbc.driver.OracleDriver
mariadb : org.mariadb.jdbc.Driver
db2 : com.ibm.db2.jcc.DB2Driver
postgresql : org.postgresql.Driver
h2 : org.h2.Driver
JDBC URLJDBC URL을 입력한다. 지원하는 DB의 JDBC URL 샘플은 아래와 같다.
(참고)
oracle : jdbc:oracle:thin:@localhost:1521:XE
mariadb : jdbc:mariadb://localhost:3306/XE?characterEncoding=UTF-8
db2 : jdbc:db2://localhost:50000/XE:driverType=4;currentSchema=username
postgresql : jdbc:postgresql://localhost:5432/XE
h2 : jdbc:h2:tcp://localhost:9092/~/XE;DATABASE_TO_UPPER=false;
사용자 이름DB 접속 사용자 명을 입력한다.
비밀번호DB 접속 사용자의 비밀번호를 입력한다.
설치시 Trial DB를 선택했다면 기본 비밀번호인 jjobs1234 를 입력한다.

(주의) 설치시 Trail DB를 선택한 경우는 접속정보를 입력할 때 따로 계정을 입력하지 않았을 것이다. 이미 DB 접속정보가 모두 작성되어있으므로 비밀번호만 따로 입력 후 다음 버튼을 클릭하면 된다. 하지만 비밀번호는 다시한번 입력해 줘야 한다.

서버 설정

기본 서버그룹과 서버를 등록해 주는 곳이다. 이 정보는 초기 설치시 입력했던 정보를 기반으로 완성되어있느나 다시한번 항목을 확인해 본다.

install_39

항목초기 설치시 선택여부설명
기본서버그룹 생성초기 설치이므로 기본서버그룹을 생성해야 한다.
서버그룹 ID서버그룹 ID는 숫자만 가능하다. 1 을 입력한다.
서버그룹 명칭1번 서버그룹의 명칭을 입력한다.
기본서버 생성초기 설치이므로 기본서버를 생성해야 한다.
매핑할 서버그룹 ID매핑한 서버그룹 ID를 입력한다. 상단에 서브그룹 ID를 1 을 등록했기 때문에 1을 선택한다.
서버 ID서버ID는 숫자만 가능하다. 1 을 입력한다.
서버명칭서버명칭을 입력한다.
서버 IP서버가 설치된 IP를 입력한다. 인스톨러로 설치진행시 입력했던 서버의 IP이다.
서버포트서버가 설치된 포트를 입력한다. 인스톨러로 설치진행시 입력했던 서버의 포트이다. 기본값은 8090 이다.

모든 항목을 입력했으면 다음 버튼을 클릭한다.

샘플 Job 등록

install_40

항목초기 설치시 선택여부설명
샘플 단일작업 추가초기 설치이므로 샘플 단일작업을 추가한다. 작업은 추후에 제거 할 수 있다.
샘플 정기작업 추가초기 설치이므로 샘플 정기작업을 추가한다. 작업은 추후에 제거할 수 있다.

다시한번 각각의 탭을 확인해서 정상적으로 값을 입력했는지 확인한 다음

초기화 실행하기

버튼을 클릭한다. root의 비밀번호를 물어보는 팝업이 나타나면 root 비밀번호를 입력해 준다.

성공 이라는 메시지가 나오면 로그아웃 한다.

초기화 확인

로그인 화면에서 어드민으로 로그인한다.

사용자 ID : 초기화시 입력했던 어드민 ID를 입력

비밀번호 : 초기화시 입력했던 어드민 패스워드 입력

정상적으로 로그인이 되었다면 초기화시 설정한 값이 정상적으로 등록되었는지를 확인 해 볼 수 있다.

서버그룹/서버 등록 확인

상단 메뉴에서 도구들>서버설정 으로 이동한다. 아래와 같이 서버그룹과 서버가 등록되어있다면 성공이다.

install_41

데이터소스 등록 확인

상단 메뉴에서 관리자>Datasource 로 이동한다. 아래와 같이 Job 종류의 데이터소스가 등록되어있다면 성공이다. 오른쪽 하단에 접속 테스트 버튼을 클릭하여 실행 해볼 수 있다.

install_42

실행

아래의 실행방법은 J-Jobs를 Full 설치했을 때의 가이드 이다. 만약 WAS와 DB를 수동으로 설치해서 진행했다면 별도로 DB 를 기동하고 WAS를 시작해야 한다.

DB 실행

(J-Jobs 설치경로)\start_db.bat

다음과 같은 화면이 나오면 성공이다. 본인IP의 내장 H2 DB의 서비스 포트인 9092를 확인 할 수있다.

install_10

(초기화 과정에서 실행한 DB가 있다면 중복실행할 필요없다.)

매니저 실행

(J-Jobs 설치경로)\start_manager.bat

Tomcat 창으로 아래와 같은 화면이 나오면 성공이다.

install_11

(초기화 과정에서 이미 실행했다면 중복실행할 필요없다.)

로그인 화면에서 초기화때 등록했던 admin 계정 (admin/admin12345) 로 접속한뒤 상단 메뉴의 모니터링>서버 로 이동하면 다음과 같은 화면이 나온다.

install_43

현재 서버1의 상태는 중지상태이고 에이전트도 실행되어있지 않다. 이 페이지에서 서버와 에이전트의 접속정보를 한눈에 확인 할 수 있다.

서버 실행

(J-Jobs 설치경로)\start_server.bat

Tomcat 창으로 아래와 같은 화면이 나오면 성공이다.

install_23

이미 띄워두었던 매니저의 서버정보를 확인해보자. 서버상태가 접속대기로 변경되어 있는 것을 확인할 수 있다. 서버는 정상적으로 기동되었고 에이전트가 서버에 접속되기를 기다리는 상태이다.

install_44

에이전트 실행

(주의) 에이전트 실행 전에 라이선스 파일이 있는지 확인하도록 한다. Trial License 의 경우는 솔루션 지원 사이트 (http://soltech.lgcns.com/jjobs/downloads/291) 에 접속하여 다운 받도록 한다.

(J-Jobs 설치경로)\start_agent.bat

agent 커맨드창과 runtime 커맨트창이 아래와 같이 두개가 열려야 정상이다.

install_25

에이전트 상태 확인

이미 띄워두었던 매니저의 서버정보를 확인해보자.

  • 오른쪽 상단에 새로고침 중에 강력새로고침 을 클릭
  • 아래와 같은 서버, 처리 쪽에 상태가 모두 초록색이고 아래의 에이전트 목록에서 에이전트가 등록되어있다면 정상적으로 기동된 것이다.
  • 위와 같이 해도 안 보일 때에는 F5을 눌러보자.

install_45

(참고) 초기 설치시에는 위와같이 에이전트가 기동중이지 않습니다. 라고 잘못 표기될 수도 있다. 서버상태 가 초록색이고 처리#1 이라는 워커가 초록색이라면 정상적으로 연결 된 것이니 아래의 기본 예제 실행으로 넘어 가도 문제 없다.

기본예제 실행

이 챕터에서는 기본등록된 Job을 이용하여 정상적으로 작동 가능한지만을 테스트 한다. 자세한 각 메뉴별 설명은 사용자 가이드 를 참고 하도록 한다.

수시 정기작업계획 실행

  • 상단 메뉴에서 작업계획>수시 작업계획실행 메뉴로 이동한다.
  • 폴더명의 변경 버튼을 클릭하여 최상단 서버그룹 (서버그룹의 명칭이 아래로 표시된다.)를 선택한다.
  • 수시 작업계획 실행 버튼을 클릭한다.

install_46

성공적으로 실행이 되면 오른쪽 실행내역에 Row가 추가된다. Order ID 를 클릭하면 상세정보를 확인 할 수 있다.

install_47

아래와 같은 화면으로 작업계획이 순서대로 실행되서 완료 되면 성공이다.

install_48

종료 및 제거

종료

윈도우 / 리눅스 프로세스 종료

  1. 에이전트 종료

(J-Jobs 설치경로)\stop_agent.bat

  1. 서버 종료

(J-Jobs 설치경로)\stop_server.bat

  1. 매니저 종료

(J-Jobs 설치경로)\stop_manager.bat

  1. DB 종료

(J-Jobs 설치경로)\stop_db.bat

가끔 DB가 깔끔하게 종료되지 않는 경우가 있다. 이경우에는 Windows 작업 관리자에서 프로세스를 종료해주자.

리눅스의 경우는 위의 실행파일이 bat에서 sh인 차이가 있다.

제거

모든 데이터 삭제

외부 DB를 사용하는 경우에는 해당 테이블을 삭제해야 하는 경우가 있다. 이런 경우에는 매니저에서 테이블의 삭제나 데이터를 모두 삭제 할 수 있다.

  • root 로 로그인 한다.
  • 상단 메뉴의 설치/제거 를 선택한 뒤 데이터 삭제 탭을 클릭한다.
  • 모든 데이터 삭제 를 클릭하면 root의 비밀번호를 물어본다.
  • 실행하면 관련된 모든 테이블의 데이터가 삭제된다. (삭제된 데이터는 복구되지 않는다.)
  • 필요한 경우 설치/제거 메뉴에의 첫번째 팁인 초기화에서 새롭게 설치 할 수있다.

모든 테이블 제거

  • root 로 로그인 한다.
  • 상단 메뉴의 설치/제거 를 선택한 뒤 테이블 삭제 탭을 클릭한다.
  • 메티 테이블 삭제 를 클릭하면 root의 비밀번호를 물어본다.
  • 실행하면 관련된 모든 테이블이 삭제된다.
  • root 로 로그인 하면 테이블 설치 팝업이 나타나며 새로 클린 설치 할 수 있다.

윈도우에서 파일 삭제

(J-Jobs 설치경로)\unins000.exe

제거가 깔끔하게 되지 않을 때에는 설치경로를 모두 삭제하면 된다. 만약 윈도우 서비스로 등록했었다면

아래의 실행파일로 윈도우 서비스로 등록되어있는 J-Jobs 서비스 또한 삭제 할 수 있다.

(J-Jobs 설치경로)\uninstall_svc.bat

리눅스에서 파일 삭제

리눅스의 경우는 J-Jobs 설치 경로 이하의 파일을 모두 삭제하면 된다.

커스터마이징

경우에 따라서는 이미 정해져있는 WAS나 DB를 사용해서 설치하도록 되어있을 수 있다. 혹은 설정되어있는 DB 연결정보를 수정해야 할 수도 있다. 이 챕터에서는 위와같은 자동설치와는 달리 수동으로 설정파일을 수정하고 설치하는 방법을 가이드 한다. WAS 대한 사용법, DB 의 기동 및 권한 부여같은 경우는 각 벤더사의 가이드를 참고 하도록 한다.

웹소켓 설정

별도 WAS 를 사용하여 매니저와 서버를 올릴 경우에 웹소켓 설정을 벤더별로 다르게 해야 하는 경우가 있다. (JEUS 8.X) 이때에 매니저와 서버의 웹소켓 설정하는 부분을 수정해야 한다.

파일 경로 : (WAS 배포경로)/jjob-manager/WEB-INF/classes/spring/context-websocket.xml

(중략)
<websocket:handlers>
        <websocket:mapping path="/jjob/websocket/main" handler="schdHandler"/>
        <websocket:mapping path="/jjob/websocket/stat" handler="statHandler"/>
        <websocket:mapping path="/jjob/websocket/noti" handler="notiHandler"/>
        <websocket:handshake-interceptors>
            <bean class="jjob.common.api.common.websocket.interceptor.WebSocketHandshakeInterceptor"/>
        </websocket:handshake-interceptors>
    </websocket:handlers>
    
    

위 부분에서 WAS에서 제공해 주는 handshake-intercaptors를 가이드에 맞게 수정하면 된다.

또한 WAS에서 제공해 주는 jar 를 WEB-INF/lib 에 위치하도록 한다.

파일 경로 : (WAS 배포경로)/jjob-manager/WEB-INF/lib

DB 연결정보 설정

매니저와 서버는 웹어플리케이션이며 spring framework 기반으로 되어 있다. 설치 이후라도 상황에 따라 DB연결정보가 변경될 가능성이 있는데 이때마다 재설치를 하는 것은 비 효율적이다. 그래서 아래와 같이 DB 연결정보를 수정하면 된다.

매니저

파일 경로 : (WAS 배포경로)/jjob-manager/WEB-INF/classes/spring/context-datasource.xml

(중략)
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="org.h2.Driver"/>
    <property name="url" value="jdbc:h2:tcp://127.0.0.1/d:/J-Jobs_210_test/h2/data/jjobs;DATABASE_TO_UPPER=false;"/>
    <property name="username" value="jjobs"/>
    <property name="password" value="jjobs1234"/>
    <property name="testWhileIdle" value="true"/>
    <property name="validationQuery" value="select 1 from dual"/>
  </bean>

해당 설정을 변경하면 된다. 만약 JNDI를 사용한다면 dataSource 의 Bean을 아래와 같이 대체한다.

(중략)
<jee:jndi-lookup id="datasource" jndi-name="jjobs" resource-ref="true"/>

서버

파일 경로 : (WAS 배포경로)/jjob-server/WEB-INF/classes/spring/context-datasource.xml

(중략)
<bean id="abstractDataSource" class="org.apache.commons.dbcp.BasicDataSource"  abstract="true">
    <property name="driverClassName" value="org.h2.Driver"/>
    <property name="url" value="jdbc:h2:tcp://127.0.0.1/d:/J-Jobs_210_test/h2/data/jjobs;DATABASE_TO_UPPER=false;"/>
    <property name="username" value="jjobs"/>
    <property name="password" value="jjobs1234"/>
    <property name="testWhileIdle" value="true"/>
    <property name="defaultAutoCommit" value="false"/>
    <property name="validationQuery" value="select 1 from dual"/>
  </bean>

해당 설정을 변경하면 된다. 만약 JNDI를 사용한다면 dataSource 의 Bean을 아래와 같이 대체한다.

(중략)
<jee:jndi-lookup id="datasource" jndi-name="jjobs" resource-ref="true"/>

에이전트

에이전트는 별도의 설정파일이 아닌 DB로 관리된다.

  • 어드민 계정으로 로그인 한뒤
  • 상단 메뉴의 관리자>Datasource 에서 JOB 유형의 데이터 소스의 연결정보를 변경한다.

파일로그 설정

매니저와 서버는 현재 콘솔에 로그를 작성하도록 설정되어있다. 그리고 기본 로그레벨은 INFO 로 조절 되어있다. 필요에 따라 이 로그레벨은 조정 가능하다. 기본적으로 J-Jobs에서 사용하는 로그는 log4j 이며 log4j의 자세한 문법과 설정방법은 공식사이트(https://logging.apache.org/log4j/2.x/) 를 참고하면 된다. 이 중에서 로그를 콘솔이 아닌 파일로 남겨 관리되도록 설정할 수 있으며 예제는 다음과 같다.

매니저

파일 경로 : (WAS 배포경로)/jjob-manager/WEB-INF/classes/properties/log4j.properties

파일을 열어 아래와 같이 수정해주면 된다. (log4j_file.properties 로도 예제가 있다.) (주의) 설정하고 싶은 파일경로를 반드시 입력해 주어야 한다.

# Log4j Setting file
log4j.rootLogger=INFO,file

log4j.category.RunnerLogger=INFO,file
log4j.category.MsgLogger=INFO,file
log4j.category.SysLogger=INFO,file

# Console log
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[S][%d][%-5p] %m %n
log4j.appender.console.encoding=UTF-8

# file log
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=설정하고_싶은_파일경로
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[S][%d][%-5p] %m %n
log4j.appender.file.encoding=UTF-8

서버

파일 경로 : (WAS 배포경로)/jjob-server/WEB-INF/classes/properties/log4j.properties

파일을 열어 아래와 같이 수정해주면 된다. (log4j_file.properties 로도 예제가 있다.) (주의) 설정하고 싶은 파일경로를 반드시 입력해 주어야 한다.

# Log4j Setting file
log4j.rootLogger=INFO,file

log4j.category.RunnerLogger=INFO,file
log4j.category.MsgLogger=INFO,file
log4j.category.SysLogger=INFO,file

# Console log
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[S][%d][%-5p] %m %n
log4j.appender.console.encoding=UTF-8

# file log
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=설정하고_싶은_파일경로
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[S][%d][%-5p] %m %n
log4j.appender.file.encoding=UTF-8

에이전트

에이전트 로그에 대한 정보는 매니저에서 관리된다.

  • 어드민 계정으로 로그온 한 뒤
  • 도구들>에이전트 설정 으로 이동해서 에이전트를 선택한다.
  • 3번째 탭인 로그정보 를 클릭하면 로그의 경로 및 로그레벨을 변경할 수 있다.

서버그룹 및 서버 추가

매니저에서 신규 서버그룹을 추가하거나 서버가 추가되었을때 서버기동 시 환경변수가 변경되어야 한다. 별도 WAS를 사용해서 설치한 경우는 해당 인스턴스를 기동할 때의 스크립트에서 환경변수를 변경해 줘야 한다. 기본설치를 진행했을 경우에는 서버를 기동하는 스크립는 다음과 같다.

(설치경로)/start_server.bat

@echo off
set JRE_HOME=d:\J-Jobs_210_test\jre1.7.0_80
cd "d:\J-Jobs_210_test\server\bin"
set JJOB_SERVER_ID=1-1
startup.bat

혹은 리눅스에서는 아래와 같이 추가해 준다.

export JJOB_SERVER_ID=1-1

여기에서 1-1 은 해당 서버가 할당받은 그룹ID-서버ID 이다. 해당 그룹ID와 서버ID는 이미 매니저에 등록되어있어야 하며 초기 설치시 기본값은 서버그룹ID = 1, 서버ID = 1 이다. 만약 신규 서버그룹이 2로 신규 서버가 3으로 추가 되었다면

set JJOB_SERVER_ID=2-3

이렇게 변경하면 된다.

에이전트 그룹 및 에이전트명 변경

에이전트 그룹이 신규 추가되서 에이전트가 새로운 에이전트 그룹을 가지게 해야 할 경우나 장비의 호스트명이 변경되어 불가피하게 에이전트 명을 변경해야 할 경우 또한 서버의 접속 경로가 바뀌었을 경우에는 에이전트를 기동하는 스크립트를 변경해야 한다. 기동 스크립트의 경로는 아래와 같다.

(설치경로)/start_agent.bat

@echo off
cd "d:\J-Jobs_210_test\jjobs\shl"
set AGENT_NAME=LCNC16V0282
set AGENT_GROUP=0
for /F  %%a in (
d:\J-Jobs_210_test\jjobs\app\META-INF\system.properties
) do (
  echo %%a|findstr "sys.agent.name" >nul && (
    for /F  "delims== tokens=2" %%n in (
        'echo %%a'
    ) do (
set AGENT_NAME=%%n
    )
 
  )
  echo %%a|findstr "sys.agent_group.id" >nul && (
    for /F  "delims== tokens=2" %%n in (
        'echo %%a'
    ) do (
set AGENT_GROUP=%%n
    )
 
  )
)
startdaemon.cmd 0 1 http 10.64.74.220 8090 /jjob-server  jjob %AGENT_GROUP% %AGENT_NAME%
아규먼트 순서설명
1startdaemon.cmd에이전트 데몬을 실행할 커맨드 경로이다. (리눅스의 경우는 shell이 된다.) 윈도우 서비스로 등록을 해야 하는 경우는 startdaemon_svc.cmd 를 이용한다.
200 : 기존의 실행된 에이전트를 강제종료하지 않는다.
1: 기존의 실행된 에이전트가 있다면 강제종료 후에 에이전트를 실행한다.
31서버그룹을 선택한다.
4http서버의 프로토콜
510.64.74.220서버의 IP
68090서버의 포트
7/jjob-server서버의 context
8jjobdatasource ID (매니저에서 관리자/datasource에서 확인)
90에이전트그룹을 선택한다.
10LCNC16V0282에이전트 명

Trouble Shooting

윈도우 서비스로 수동 등록

J-Jobs에서 윈도우 서비스를 등록은 nssm.exe 이라는 프로그램을 사용한다. 사용법은 https://nssm.cc/usage 홈페이지에서 확인할 수 있으며 몇가지 제약사항이 있다.

  • 실행파일 위치가 네트워크 드라이브로 되어있는 경우 실행되지 않는다.
  • 윈도우 서비스 등록후 시작과 중지의 경우는 로그를 확인 하기 어려운 단점이 있다.
  • 이 외에도 해당 프로그램의 윈도우 버전에 관한 알려지지 않은 호환성 문제가 있을 수 있다. 2

에이전트가 정상적으로 실행되지 않는 현상

기본적으로 에이전트가 정상적으로 실행되지 않을 시에는 오류로그가 남게 되어있다. (J-Jobs 설치홈)\jjobs\app\***.err 이런 형식으로 오류원인이 나와있으므로 적혀있는 데로 대처하면 되는데 대표적인 사례들을 등록하고자 한다.

  • agent 커맨드 창에는 정상적으로 나타나지만 runtime 커맨드창이 자꾸 꺼지는현상 정상적인 라이선스가 위치해 있지 않습니다. Trial 라이선스나 정식 라이선스 파일을 받아 licence 폴더에 위치시킵니다. 라이선스 파일 위치 : (J-Jobs 설치폴더)/jjobs/licence/licence.dat
  • trial licence 다운로드 경로 : http://soltech.lgcns.com/jjobs/downloads
  • 정식 licence 요청 : J-Jobs@lgcns.com 으로 요청

DB에 직접 script를 입력하여 설치하려는 경우

때에 따라서 DB를 기존에 있는 것을 사용해야 하고 미리 Script를 입력해서 수동으로 생성해야 할 경우가 있다. 그럴때에는 아래의 파일경로를 열어서 DB Script를 사용자가 수동으로 실행 할 수 있다.

(파일 경로 : (WAS 배포경로)/jjob-manager/WEB-INF/classes/lib/jjob-common-api-(version).jar/sql/(DB vendor)/*.sql

실행순서파일명설명
1JJOBS_CREATE_TABLE.SQL테이블을 생성한다.
2JJOBS_CREATE_PRIMARY_KEY.SQL테이블의 PK를 생성한다.
3JJOBS_CREATE_UNIQUE.SQLUNIQUE KEY를 생성한다.
4JJOBS_CREATE_INDEX.SQLINDEX 를 생성한다.
5JJOBS_CREATE_SEQUENCE.SQLSEQUENCE를 생성한다.
6JJOBS_CREATE_PROCEDURE.SQLPROCEDURE를 생성한다.
N/AJJOBS_DROP_TABLE.SQL테이블을 삭제한다.

이 안에 있는 script를 순서에 주의해서 실행하면 된다.

J-Jobs가 실행되는 프로세스 확인방법 (리눅스)

J-Jobs는 정상적으로 실행 되고 하나의 프로세스만 실행되도록 설정했을 경우 아래의 프로세스가 실행된다.

매니저 프로세스

WAS로 실행되었을 경우가 아닌 tomcat으로 실행되면 아래와 같은 프로세스를 확인 할 수 있다.

ps -ef | grep tomcat
lena     218366      1  0 Nov30 ?        00:06:15 /engn001/java/jdk1.7.0_80/bin/java -Djava.util.logging.config.file=/engn001/jjobs/v2.1/manager/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=utf-8 -Djava.security.egd=file:///dev/urandom -XX:+UseParallelGC -XX:+UseParallelOldGC -XX:-UseAdaptiveSizePolicy -XX:+ExplicitGCInvokesConcurrent -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -classpath /engn001/jjobs/v2.1/manager/bin/bootstrap.jar:/engn001/jjobs/v2.1/manager/bin/tomcat-juli.jar -Dcatalina.base=/engn001/jjobs/v2.1/manager -Dcatalina.home=/engn001/jjobs/v2.1/manager -Djava.io.tmpdir=/engn001/jjobs/v2.1/manager/temp org.apache.catalina.startup.Bootstrap start

서버 프로세스

WAS로 실행되었을 경우가 아닌 tomcat으로 실행되면 아래와 같은 프로세스를 확인 할 수 있다.

ps -ef | grep tomcat
lena     219239      1 18 Nov30 ?        13:48:37 /engn001/java/jdk1.7.0_80/bin/java -Djava.util.logging.config.file=/engn001/jjobs/v2.1/server/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=utf-8 -Djava.security.egd=file:///dev/urandom -XX:+UseParallelGC -XX:+UseParallelOldGC -XX:-UseAdaptiveSizePolicy -XX:+ExplicitGCInvokesConcurrent -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -classpath /engn001/jjobs/v2.1/server/bin/bootstrap.jar:/engn001/jjobs/v2.1/server/bin/tomcat-juli.jar -Dcatalina.base=/engn001/jjobs/v2.1/server -Dcatalina.home=/engn001/jjobs/v2.1/server -Djava.io.tmpdir=/engn001/jjobs/v2.1/server/temp org.apache.catalina.startup.Bootstrap start

에이전트 프로세스

ps -ef | grep "Dcname=agent_jjobs_"

or

ps -ef | grep "AgentLauncher"
jjobs    230169      1  2 Nov16 ?        10:10:01 /engn001/jjobs/smart2/jre1.7.0_80/bin/java -Dcname=agent_jjobs_AGENT2 -server -Xms128m -Xmx256m -XX:MaxPermSize=256m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=utf-8 
(중략)

에이전트 런타임 프로세스

ps -ef | grep "Dcname_jjobs"

or

ps -ef | grep "DeamonLauncher"
jjobs    175275      1  0 Nov27 ?        00:29:39 /engn001/java/jdk1.7.0_80//bin/java -Dcname=jjobs 
(중략)

jjob-manager, jjob-server 등의 웹어플리케이션 등록시 ehcache 오류가 발생한 경우

어플리케이션을 WAS에서 기동시 아래와 같은 ehcache 문제가 나타나는 경우

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'loginCheckInterceptor': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private jjob.common.api.admin.api.service.ApiService jjob.common.api.common.interceptor.LoginCheckInterceptor.apiService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'apiServiceImpl': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cacheManager' defined in file [/home/jeus/jeus_app/jjob-manager/WEB-INF/classes/spring/context-cache.xml]: Cannot resolve reference to bean 'ehcache' while setting bean property 'cacheManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ehcache' defined in file [/home/jeus/jeus_app/jjob-manager/WEB-INF/classes/spring/context-cache.xml]: Invocation of init method failed; nested exception is net.sf.ehcache.CacheException: java.io.FileNotFoundException: /tmp/.ehcache-diskstore.lock (허가 거부)

위와 같은 경우는 eh-cache가 저장하는 파일 저장소의 권한이 없어서 발생하는 문제이다. eh-cache의 파일저장소 경로를 바꿔주어야 하는데

ehcache.xml 직접수정

(J-Jobs 설치경로)/jjob-manager/WEB-INF/classes/properties/ehcache.xml

위의 경로에서 diskStore를 변경해준다.

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:noNamespaceSchemaLocation="ehcache.xsd" updateCheck="true"
	monitoring="autodetect" dynamicConfig="true">

	<diskStore path="java.io.tmpdir" />
	
	(중략)

Java Option 으로 경로 설정

소스를 직접수정하기 어려운 경우 WAS의 Java option에 아래와 같은 파라미터로 경로를 입력해 주면 된다.

 -Djava.io.tmpdir=/home/jjobs/tmp

jjob-server 기동시 RequestWorker 가 연결이 거부된 경우

jjob-server는 내부적으로 자신의 ServletListener 를 localhost 혹은 127.0.0.1 로 http 호출한다. 이때에 몇몇개의 WAS에서는 Http Listen Address 를 본인 IP만 작동하도록 설정하여 호출되지 않는 현상이 있다. 그럴 때에는 아래와 같은 오류가 발생하고 서버의 Worker가 정상적으로 기동하지 않는다.

[S][2018-12-05 20:21:09,254][INFO ] HV000001: Hibernate Validator 5.2.1.Final
[S][2018-12-05 20:21:09,679][INFO ] Looking for @ControllerAdvice: WebApplicationContext for namespace 'servlet-servlet': startup date [Wed Dec 05 20:21:08 KST 2018]; parent: Root WebApplicationContext
[S][2018-12-05 20:21:09,735][INFO ] Looking for @ControllerAdvice: WebApplicationContext for namespace 'servlet-servlet': startup date [Wed Dec 05 20:21:08 KST 2018]; parent: Root WebApplicationContext
[S][2018-12-05 20:21:09,787][INFO ] Mapped URL path [/repository/**] onto handler 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#0'
[S][2018-12-05 20:21:09,903][INFO ] FrameworkServlet 'servlet': initialization completed in 1897 ms
[2018.12.05 20:21:09][2] [server1-104] [WEB-3480] The web module [jjob-server] has been successfully distributed.
[2018.12.05 20:21:09][2] [server1-104] [Deploy-0096] Successfully distributed the application[jjob-server].
[2018.12.05 20:21:10][2] [server1-42] [Deploy-0098] Starting the application[jjob-server].
[2018.12.05 20:21:10][2] [server1-42] [WEB-3484] ServletContext[name=jjob-server, path=/jjob-server, ctime=Wed Dec 05 20:20:59 KST 2018] started successfully.
[2018.12.05 20:21:10][2] [server1-42] [Deploy-0099] Successfully started the application[jjob-server].
[S][2018-12-05 20:21:17,957][INFO ] Start Monitor Run::
[S][2018-12-05 20:21:37,691][INFO ] ## RequestWorkerMonitoringManager Entry
[S][2018-12-05 20:21:37,702][ERROR] [start WorkerThread] fail message = [연결이 거부됨]
[S][2018-12-05 20:21:37,702][ERROR] java.net.ConnectException: 연결이 거부됨
java.util.concurrent.ExecutionException: java.net.ConnectException: 연결이 거부됨
        at org.apache.http.concurrent.BasicFuture.getResult(BasicFuture.java:70)
        at org.apache.http.concurrent.BasicFuture.get(BasicFuture.java:98)
        at jjob.server.web.rw.listener.WorkerStartHelper$1.run(WorkerStartHelper.java:98)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.ConnectException: 연결이 거부됨
(중략)

Listen Address 수정

WAS에서 jjob-server가 기동되는 서버의 http Listener Address 를 0.0.0.0 으로 변경해준다.

가령 JEUS 에서는

  • JEUS webAdmin 접속
  • Servers 메뉴로 이동한뒤 jjob-server가 등록되어있는 서버 선택
  • Resource 탭 선택
  • Listener 선택
  • 하단의 http-server 의 Listen Address 의 값을 해당 IP에서 0.0.0.0 으로 수정한다.

환경변수 강제 설정

서버 실행 환경 변수로 지정할 수 있다. localhost, 127.0.0.1 이 아닌 직접 IP를 입력한다.

리눅스의 경우

export WORKER_START_IP=(jjob-server가 설치된 IP 혹은 도메인)