ChamomileGuides 3.0.4 Help

배치 설치 가이드

개요

다음은 배치실행 어플리케이션을 리눅스 서버에 설치하는 과정을 설명한다.

어플리케이션 계정 생성

어플리케이션을 구동하기 위한 리눅스 계정을 생성한다.

# 계정 생성 root@host> useradd chamomile -d /home/chamomile # 패스워드 입력 root@host> passwd chamomile # switch user chamomile@host> su - chamomile

ulimit 설정 변경

ulimit는 프로세스의 자원 한도를 설정하는 것으로 soft한도와 hard한도 두가지가 있습니다.

  • soft : 새로운 프로그램을 생성하면 기본으로 적용되는 한도

  • hard : 소프트한도에서 최대로 늘릴 수 있는 한도

어플리케이션 계정은 최적화를 위하여 해당 설정을 조정한다.

# 현재 chamomile계정의 설정 확인 chamomile@host> ulimit –a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 31147 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 4096 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited

위의 경우 리소스 사용이 제약적이므로 배치 실행 시 오류 발생할 가능성이 크므로 아래와 같이 설정을 추가한다. (unlimited 또는 직접 건수 지정)

root@host> vim /etc/security/limits.conf … chamomile soft nproc unlimited chamomile hard nproc unlimited chamomile soft nofile unlimited chamomile hard nofile unlimited …

어플리케이션 설치

배치실행어플리케이션 바이너리 설치 (JDK등은 이미 설치되어있다고 가정하고 설명은 생략한다.)

# 압축파일 해제 chamomile@host> tar -zxvf chamomile-batch-0.0.1-dist.tar.gz # Symbolic Link 생성 chamomile@host> ln -s ./chamomile-batch-0.0.1 ./chamomile-batch # 어플리케이션 HOME 이동 chamomile@host> cd ./chamomile-batch # 기동스크립트 권한 변경 chamomile@host> chmod +x ./application.sh

라이선스 적용

라이선스 파일을 chamomile-batch-0.0.1/conf 폴더에 위치시킨다.

배치실행 데이터베이스 생성 (Mysql/MariaDB)

데이터베이스 별 DDL 스크립트는 배포 binary에 포함되어 있다.

2가지 주제영역의 테이블을 생성해야 한다.

  1. 캐모마일 배치실행 어플리케이션 관련 테이블

  2. 스프링배치 JobReposiory 관련 테이블

데이터베이스 및 계정 생성

Mysql(MariaDB)는 설치 되어있다고 가정한다.

# 데이터베이스 서버로 sql 디렉터리 파일 전송(DDL스크립트 및 SQL) chamomile@host> scp -rp ./sql root@[MYSQL서버]:./ # Mysql 데이터베이스 서버 접속(mysql 계정이 nologin상태인 경우 root로 접속) chamomile@host> ssh mysql@${mysql 설치서버} # Mysql 데이터베이스 및 사용자 생성 mysql@host> mysql -u root -p mysql Mysql> -- Creating Database CREATE DATABASE CHAMOMILE; -- Creating User INSERT INTO USER (HOST,USER,PASSWORD, SELECT_PRIV, INSERT_PRIV, UPDATE_PRIV, DELETE_PRIV, CREATE_PRIV, DROP_PRIV, INDEX_PRIV, ALTER_PRIV, SSL_CIPHER,X509_ISSUER,X509_SUBJECT,AUTHENTICATION_STRING) VALUES ('%', 'chamomile', PASSWORD('[패스워드]'),'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y','','','',''); INSERT INTO DB (HOST, DB, USER, SELECT_PRIV, INSERT_PRIV, UPDATE_PRIV, DELETE_PRIV, CREATE_PRIV, DROP_PRIV, INDEX_PRIV, ALTER_PRIV) VALUES ('%', 'chamomile', 'chamomile', 'Y', 'Y', 'Y', 'Y','Y','Y','Y','Y'); flush privileges;

테이블 생성

# 신규 생성 데이터베이스 접속 mysql@host> mysql -u chamomile -p chamomile # 배치실행 어플리케이션 스키마 생성 Mysql> source ./sql/ddl/chamomile-batch.mysql.sql # 스프링 배치 스키마 생성 Mysql> source ./sql/spring-batch/spring-batch.mysql.sql # 초기 테스트 데이터 적재 Mysql> source ./sql/data/chamomile-batch.data.sql Mysql> source ./sql/test/emp.mysq.sql

배치실행 어플리케이션 설정

데이터베이스 접속정보 설정

chamomile@host> vim ./conf/application.properties … # 기본 언어셋 설정 (한국어:ko, 영어:en 디폴드값은 ko) defaultLocale=ko # 데이터베이스 아이디 설정(오라클:ORACLE, MariaDB/MySQL: MYSQL, SQLServer: MSSQL, 티베로: TIBERO) databaseId=MYSQL # OLTP connection pool dataSource.oltp.driver=com.mysql.jdbc.Driver dataSource.oltp.url=jdbc:mysql://[데이터베이스서버]:3306/chamomile dataSource.oltp.username=[사용자] dataSource.oltp.password=ENC([패스워드PBE]) dataSource.oltp.initialSize=5 dataSource.oltp.maxActive=10 dataSource.oltp.validationQuery=select 1 from dual # OLAP connection pool dataSource.olap.driver=com.mysql.jdbc.Driver dataSource.olap.url=jdbc:mysql://10.131.7.140:3306/chamomile dataSource.olap.username=[사용자] dataSource.olap.password=ENC(([패스워드PBE]) dataSource.olap.initialSize=5 dataSource.olap.maxActive=10 dataSource.olap.validationQuery=select 1 from dual # BATCH connection pool dataSource.batch.driver=com.mysql.jdbc.Driver dataSource.batch.url=jdbc:mysql://[데이터베이스서버]:3306/chamomile dataSource.batch.username=[사용자] dataSource.batch.password=ENC([패스워드PBE]) dataSource.batch.initialSize=2 dataSource.batch.maxActive=5 dataSource.batch.validationQuery=select 1 from dual …

관리자 웹콘솔 포트정보 변경

관리자 웹콘솔의 접속 포트 변경시 아래의 설정파일 변경 후 재기동한다.(기본 6100번 포트로 설정)

chamomile@host> vim ./conf/application.xml … <webServer id="application" port="6100"> <ssl> <keyStorePath>conf/ssl/keystore</keyStorePath> <keyStoreType>pkcs12</keyStoreType> <keyStorePass>abcd1234</keyStorePass> </ssl> <context path=""> <resourceBase>webapp/application</resourceBase> <descriptor>webapp/application/WEB-INF/web.xml</descriptor> </context> </webServer> …

관리자 웹콘솔 SSL 적용

보안상의 문제로 HTTPS로 설정해야되는 경우 아래의 설정정보에 인증서 정보를 입력한다.

chamomile@host> vim ./conf/application.xml … <webServer id="application" port="6100"> <ssl> <keyStorePath>conf/ssl/keystore</keyStorePath> <keyStoreType>pkcs12</keyStoreType> <keyStorePass>abcd1234</keyStorePass> </ssl> …

실행노드 별도 구성시 로그 설정

관리노드 실행노드 별도 구성하여 사용 중인 경우만 로그 설정을 수행한다. 하나의 경로로 로그 파일을 통합하기 위해 다음과 같이 수행한다.

  • 하나의 서버에 관리노드 실행노드 구성시

ADMIN

logging.location.workflow=/workflow-log-file # 해당 부분에 로그 경로 설정

WORKER

logging.location.workflow=/workflow-log-file # 해당 부분에 로그 경로 동일하게 설정
  • 서로 다른 서버에서 구동 시

SSHFS 구성 필요

SSHFS 설치 시스템에 맞는 명령을 통해 sshfs 설치

$ yum install sshfs $ dnf install sshfs $ sudo apt-get install sshfs

마운팅할 경로 생성

$ mkdir -p /my/backups $ # 보통 마운트 경로는 /mnt 경로 아래로 생성한다. $ sudo mkdir -p /mnt/backups

SSHFS를 이용한 연결(mount)

$ # user와 x.x.x.x는 백업 서버의 사용자와 IP를 적어준다. $ sshfs user@x.x.x.x:/backups/server1 /my/backups $ # Ubuntu, Debian의 경우 $ sudo sshfs -o allow_other user@x.x.x.x:/backups/server1 /my/backups

위의 작업을 완료 하면 어드민 서버에서 실행 노드의 로그 파일을 확인 할 수 있다.

배치실행 어플리케이션 실행

어플리케이션 기동

chamomile\@host\> ./application.sh start

어플리케이션 확인

chamomile@host> ./application.sh status Application Status chamomi+ 16397 1 30 17:41 pts/1 Sl 0:36 java -server -Djava.net.preferIPv4Stack=true -Djava.security.egd=/dev/./urandom -Dlog4j.configuration=file:conf/log4j.xml -Dlog4jdbc.drivers=com.tmax.tibero.jdbc.TbDriver -classpath ./*:./lib/* net.lotte.chamomile.batch.Application

어플리케이션 로그 확인

chamomile@host> ./application.sh log [2018-07-31 17:41:57.474][INFO ](ApplicationContainer.java:115)- _______ _____ __ _______ __ _________ ____ / ___/ // / _ | / |/ / __ \/ |/ / _/ / / __/ / /__/ _ / __ |/ /|_/ / /_/ / /|_/ // // /__/ _/ \___/_//_/_/ |_/_/ /_/\____/_/ /_/___/____/___/ [2018-07-31 17:42:06.699][INFO ](FrameworkServlet.java:489)- [2018-07-31 17:42:06.712][INFO ](AbstractApplicationContext.java:583)-Refreshing W [2018-07-31 17:42:06.739][INFO ](XmlBeanDefinitionReader.java:317)-Loading XML bea [2018-07-31 17:42:07.063][INFO ](XmlBeanDefinitionReader.java:317)-Loading XML bea

어플리케이션 종료 (Graceful)

기본적으로 shutdown 은 graceful로 처리된다. (배치작업이 있을 경우 종료까지 대기함)

chamomile\@host\> ./application.sh stop

어플리케이션 강제종료

chamomile\@host\> ./application.sh status chamomile\@host\> kill -9 [프로세스PID]

설치 후 점검 및 수행

웹콘솔 접속 여부 확인

설치서버의 웹콘솔 접속의 정상여부를 확인한다.

[https://[설치서버호스트]:설정포트(https://설치서버호스트:설정포트)

20231123142819.png

로그인 화면이 정상적으로 열린다면 로그인한다.

Default 사용자/패스워드는 ADMIN / 1111 이다.

배치프로그램 실행 정상 확인(Build-In)

메뉴[배치워크플로우 관리] 로 이동하여 샘플 배치 프로그램 중 BUILD-IN 으로 구성된 배치 프로그램이 정상적으로 작동하는지를 확인한다.

해당 샘플 배치프로그램을 선택하여 상세화면으로 진입한다.

상세화면에서 상단 [시작][중지] 버튼을 클릭하여 배치프로그램의 실행/중지를 테스트 한다.

실행 노드 관리 등록 (v3.0.4.0)

배치 어플리케이션이 관리노드/실행노드로 나누어져 있는 경우, 어드민에서 실행노드를 등록해야 한다. 실행 노드를 등록하기 위해 다음과 같이 수행한다.

  • 실행 노드 관리 접근

  1. 실행 노드 추가

  2. IP, PORT 입력 (실행노드 정보) ex) IP : 127.0.0.1, PORT : 8080

  3. 사용여부 Y 설정

다음과 같이 등록할 경우, 배치 워크플로우 수행은 실행 노드에서 진행하게 되며 실행 노드가 여러 개인 경우, 라운드로빈 방식으로 요청하게 된다.

배치 실행 노드 개발 환경 설정(v3.0.4.0)

실행 노드 서버 개발 환경 설정 가이드는 다음과 같다.

  1. https://chamomile.lotteinnovate.com/guides/download/ 에서 배치 실행 프로젝트 zip 파일을 다운로드 하고 압축을 풀어준다.

  2. 압축을 풀면 다음과 같은 구조인 것을 확인할 수 있다.

decompression_structure.png

application.properties 파일에 port, 데이터소스와 같은 필요한 설정들을 수정하면 된다.

※ 해당 프로퍼티즈 파일은 반드시 실행할 jar 파일과 동일한 경로에 있어야 한다.

  1. jar 파일이 있는 경로로 이동하여 다음의 명령어를 실행하면 실행 노드 서버가 작동한다.

java -jar chamomile-batch-worker-3.0.4.0-SNAPSHOT.jar --spring.config.location=file:./
execution_node_exec.png
Last modified: 21 4월 2025