이슈

Tomcat에서는 로그 파일이 생성되어 application 로그와 Jeus Container 로그가 분리되지만

JEUS에서는 로그가 분리되지 않고 JeusSever.log 에 같이 쌓이는 현상

원인

Log4j 로그는 JEUS 설정에서 관리하는 로그가 아님

WEB-INF/Log4j2.xml 파일 확인 결과

<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="${sys:FILE_LOG_PATTERN}"/>
</Console>

XML 설정 내 Console 호출 부분에서 SYSTEM_OUT이 consoleAppender 형태로 호출되고 있음

ConsoleAppender vs FileAppender

출력 위치 콘솔 (System.out, System.err) 지정한 파일로 출력
목적 개발/테스트용 (터미널에서 바로 보기) 운영/배포용 (로그 파일 기록)
특징 서버 stdout 리다이렉트 설정에 영향 받음 (JEUS에서는 JeusServer.log로 빨려 들어갈 수 있음) 독립된 파일로 안전하게 로그 기록 가능
사용 용도 개발 중 디버깅, 로컬 테스트 운영 서버, 대용량 로그 관리

Tomcat 과 Jeus의 로그 구조 차이

Tomcat : Catalina.out 파일로 system out/err만 저장

Jeus : JeusServer.log에 system out/err + JEUS 내부 로그 같이 저장

 

해결

ConsoleAppender 설정이 아닌 FileAppender 설정으로 변경 가이드

<Appenders>
    <File name="FileLog" fileName="/home/was/logs/application.log">
      <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/>
    </File>

ISSUE

 

java.net.UnknownHostException: jeus: 이름 혹은 서비스를 알 수 없습니다


CAUSE 

 

/etc/hosts 권한 문제 > /etc/hosts 파일 권한 확인

cat /etc/hosts

cd /etc/hosts

ls -al | grep hosts

Resolution

root Login

other 계정 read 권한 부여

chmod 644 /etc/hosts

JEUS WEBMain 또는 Domain.xml file 에서 Session 설정 적용해도

정상적으로 적용되지 않는 경우가 발생한다.

 

application에서 session timeout 을 설정하지 않았는지 확인해야 한다. 


세션 우선 순위 : application setting > server setting

 

web.xml > webcommon.xml > WEBMain.xml


[1순위]

/WEB-INF/web.xml

<web-app>

<session-config>

<session-timeout>60</session-timeout> [단위 : 분]

</session-config>

</web-app>


[2순위]

/WEB-INF/web.xml

${JEUS_HOME}/config/컨테이너명/엔진명/webcommon.xml

<web-app>

<session-config>

<session-timeout>30</session-timeout> [단위 : 분]

</session-config>


 

[3순위]

SERVLET_ENGINE/WEBMain.xml

 

<web-container>

<context-group>

...

<session-config>

<timeout>30</timeout> [단위 : 분]

<shared>false</shared>

</session-config>

...

</context-group>

</web-container>

 

session-cookie = true

세션을 전달하는 세션 트래킹의 방법으로 쿠키를 사용할 때 세션을 쿠키로 전달할지를 설정한다.


 

 

 

JEUS Encryption (암호화)?

  • JEUS 설정 파일에 기록해야 하는 패스워드값에 대해 암호화를 지원한다.
  • 데이터베이스 패스워드, accounts.xml 계정들의 패스워드의 경우 일반 문자열 대신 암호화된 문자열로 적을 수 있도록 하는 것이다. 
  • 이러한 암호화된 문자열을 사용하기 위해서는 JEUS가 제공하는 암호화 툴(Encryption Tool)을 사용해야 한다.
  • JEUS를 기동시키거나 중지시킬 때, dsboot와 dsdown 명령어를 만들어서 간편하게 서버를 기동시키고 중지시킬 수 있다.
  • 이때, dsboot와 dsdown에 들어가는 명령어에 user 와 password가 필요한데, 직접 작성 (plain) 하여 입력하면 보안취약점에 걸리므로 Encryption 을 통해 암호화하여 작성한다.
  • 암호화하는 방법은 JEUS 버전마다 다르며, 암호화 알고리즘도 다르기 때문에 버전 별 맞는 Encryption 방식을 사용해야 한다.

1. JEUS6

사용 가능한 Encryption Algorism

base64 SHA
DES DESede
AES SEED
Blowfish  
cd $JEUS_HOME/config/`hostname`/security/SYSTEM_DOMAIN

accounts.xml 파일 확인

cd $JEUS_HOME/config/`hostname`/security

security.key  파일 확인

cd $JEUS_HOME/config/`hostname`/security 경로에서 Encryption

encryption [암호화 방식] [암호화 할 패스워드]

ex) encryption aes jeusadmin

result)
[aes] : [jeusadmin] --> [encode:uqU7wAovceZYujA/YXlqQd+f118rPeA7ebtPuutf3b0=]
[aes] : [uqU7wAovceZYujA/YXlqQd+f118rPeA7ebtPuutf3b0=] --> [decode:jeusadmin]

암호화된 패스워드를 복사하여 accounts.xml의 <password></password>에 삽입

ex)
vi accounts.xml
..
#{암호화 알고리즘}{암호화된 패스워드}
<password>{AES}uqU7wAovceZYujA/YXlqQd+f118rPeA7ebtPuutf3b0=</password>
..

2. JEUS7

사용 가능한 Encryption Algorism

base64 DES
DESede AES
SEED Blowfish
SHA SHA-256
SHA512  

 

##JeusEncode File 생성##

cd $JEUS_HOME/bin 이동

encryption [암호화 방식] [id]:[password]

ex) encryption aes administrator:jeusadmin

result)
[aes] : [administrator:jeusadmin] --> [encode:5300CyLYDtzxfTUScQbuj0H0DS357E3XuBlu22k1ovZq92Pf0uPxKWhKw+hhPbGh]
[aes] : [5300CyLYDtzxfTUScQbuj0H0DS357E3XuBlu22k1ovZq92Pf0uPxKWhKw+hhPbGh] --> [decode:administrator:jeusadmin]

$JEUS_HOME/bin 내에 jeusEncode 파일 생성
vi jeusEncode
##jeusEncode 파일 내용
#ex)
 #---------------------------------------------------------------------------------------------------------------------------------
jeus_domain:adminServer 5300CyLYDtzxfTUScQbuj0H0DS357E3XuBlu22k1ovZq92Pf0uPxKWhKw+hhPbGh
jeus_domain:server1 5300CyLYDtzxfTUScQbuj0H0DS357E3XuBlu22k1ovZq92Pf0uPxKWhKw+hhPbGh
localhost:10000 5300CyLYDtzxfTUScQbuj0H0DS357E3XuBlu22k1ovZq92Pf0uPxKWhKw+hhPbGh
localhost:10010 5300CyLYDtzxfTUScQbuj0H0DS357E3XuBlu22k1ovZq92Pf0uPxKWhKw+hhPbGh
#---------------------------------------------------------------------------------------------------------------------------------
##accounts.xml 파일 수정##
cd $JEUS_HOME/config/`hostname`/security/SYSTEM_DOMAIN

accounts.xml 파일 확인

cd $JEUS_HOME/config/`hostname`/security

security.key  파일 확인

cd $JEUS_HOME/config/`hostname`/security 경로에서 Encryption

encryption [암호화 방식] [암호화 할 패스워드]

ex) encryption aes jeusadmin

result)
[aes] : [jeusadmin] --> [encode:uqU7wAovceZYujA/YXlqQd+f118rPeA7ebtPuutf3b0=]
[aes] : [uqU7wAovceZYujA/YXlqQd+f118rPeA7ebtPuutf3b0=] --> [decode:jeusadmin]

암호화된 패스워드를 복사하여 accounts.xml의 <password></password>에 삽입

ex)
vi accounts.xml
..
#{암호화 알고리즘}{암호화된 패스워드}
<password>{AES}uqU7wAovceZYujA/YXlqQd+f118rPeA7ebtPuutf3b0=</password>

3. JEUS8 / 8.5

#명령어로 확인 가능
encrypion -algolist

사용 가능한 Encryption Algorism

base64 DES

base64 DES
DESede SEED
Blowfish SHA -1
SHA 256 SHA 384
SHA 512 AES 128
AES 192 AES 256
##JeusEncode File##

cd $JEUS_HOME/bin 이동

encryption -keypath [security.key 파일 경로] [암호화 방식] [ID 문자 수]:[ID][Passowrd]

ex) encryption -keypath /home/jeus8/jeus8/bin aes 8:wasadminjeusadmin1!

result)
[aes] : [8:wasadminjeusadmin1!] --> [encode:kgquD/cnw/HgCpk/Kl19yN3phNSAiGYFHEtAF/A0CMtOqhCJ+jFOsSybdnluoimQ]
[aes] : [kgquD/cnw/HgCpk/Kl19yN3phNSAiGYFHEtAF/A0CMtOqhCJ+jFOsSybdnluoimQ] --> [decode:8:wasadminjeusadmin1!]

$JEUS_HOME/bin 내에 jeusEncode 파일 생성
vi jeusEncode
##jeusEncode 파일 내용
#ex)
 #---------------------------------------------------------------------------------------------------------------------------------
jeus_domain:wasadmin kgquD/cnw/HgCpk/Kl19yN3phNSAiGYFHEtAF/A0CMtOqhCJ+jFOsSybdnluoimQ
#---------------------------------------------------------------------------------------------------------------------------------
##accounts.xml 수정##

cd ${JEUS_HOME}/domains/${DOMAIN_NAME}/config/security/SYSTEM_DOMAIN

accounts.xml 파일 확인

cd ${JEUS_HOME}/domains/${DOMAIN_NAME}/config/security

security.key  파일 확인

cd ${JEUS_HOME}/domains/${DOMAIN_NAME}/config/security 경로에서 Encryption

encryption -keypath [security.key 파일 경로] [암호화 방식] [Passowrd]

ex) encryption -keypath ./ aes jeusadmin1!

result)
[aes] : [jeusadmin1!] --> [encode:blSCRdxhUXyEEs6JnnbMlajckjpJzQWzsPQL+Oar7mY=]
[aes] : [blSCRdxhUXyEEs6JnnbMlajckjpJzQWzsPQL+Oar7mY=] --> [decode:jeusadmin1!]

암호화된 패스워드를 복사하여 accounts.xml의 <password></password>에 삽입

ex)
vi accounts.xml
..
#{암호화 알고리즘}{암호화된 패스워드}
<password>{AES}blSCRdxhUXyEEs6JnnbMlajckjpJzQWzsPQL+Oar7mY=</password>

 

'MiddleWare > JEUS' 카테고리의 다른 글

[JEUS] Unsupported major.minor version xx.0  (0) 2023.12.05
[JEUS] JEUS 버전 별 SameSite 설정  (0) 2023.11.06
[JEUS] JEUS Log 경로 변경 방법  (0) 2023.05.09
[JEUS] AdminServer SHUTDOWN 현상  (0) 2023.05.03
[JEUS] Jeus Scheduler 설정  (0) 2023.03.30

https://pushstonez.tistory.com/13

 

[WebtoB] X-Forwarded-For(XFF) 설정

X-Forwarded-For(XFF) 란? XFF는 Http Header 중 하나로 HTTP Server에 요청한 Client의 IP를 식별하기 위한 표준 웹서버나 WAS 앞에 L4 같은 로드 밸런서나 Proxy Server, Caching Server 등의 장비가 있을 경우, 웹서버는 P

pushstonez.tistory.com

WebtoB의 X-Forwarded-For 설정을 마친 후 다중 IP를 사용하여 테스트를 진행한다.


 0. Jmeter?

Apache JMeter는 서버가 제공하는 성능 및 부하를 측정할 수 있는 테스트 도구다.

JMeter는 순수 Java 애플리케이션 오픈소스이며 서버나 네트워크 또는 개체에 대해 과부하를 시뮬레이션하여 강도를 테스트하거나 다양한 부하 유형에서 전체 성능을 분석하는 데 사용할 수 있다.


1. Jmeter 설치

1. https://jmeter.apache.org/ 에 접속한다.

 

Apache JMeter - Apache JMeter™

Apache JMeter™ The Apache JMeter™ application is open source software, a 100% pure Java application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to oth

jmeter.apache.org

2. Download → Download Releases 를 선택한다.

3. Binaries -> jmeter-*.zip 파일을 다운로드 받는다.

4.적당한 위치에 압축을 해제 한 후, bin 디렉토리 내 jmeter.bat 파일을 실행한다.

5. Apache Jmeter 창이 제대로 떴다면 설치 완료.


2. Jmeter 설정

1. Thread Group 생성 및 설정

Thread Group은 하나의 Test Case 이다.

(마우스 우클릭) Test Plan → Add → Threads → Thread Group 선택

Thread Group 생성
Thread Group 설정

  • Number of Threads : Thread 생성 수 (test: 10)
  • Ramp-up period : Thread를 Ramp-up preiod 시간 만큼 실행 (test: 1)
  • Loop Count : Thread의 반복 횟수 (test: 30)

2. HTTP Request 생성 및 설정

(마우스 우클릭) Thread Group → Add → Sampler → Htto Request 선택

HTTP Requset 생성

BASIC 과 Advanced 탭을 선택하여 설정한다.

HTTP Request 설정


BASIC

  • Server Name or IP : 접속할 WEB SERVER IP 또는 Domain을 입력한다. (test: WEB Server IP)
  • Port Number : 서비스 Open 된 Port를 입력한다.  (test: 80)

Advanced

  • Implementation : X-Forwarded-For 설정을 위해 HttpClient4 로 변경한다.

3. CSV Data Set Config 생성 및 설정

(마우스 우클릭) Test Plan → Add → Config Element→ CSV Data Set Config 선택

CSV Data Set Config 생성

  • Filename : 다중 IP가 설정되어 있는 파일을 선택해준다. (절대경로)

ip_list 파일 내용

  • Variable Names : HTTP Header 설정에서 가져올 변수 명을 설정한다. (test: IP_LIST)

4. HTTP Header Manager 생성 및 설정

(마우스 우클릭) Http Request → Add → Config Element→ HTTP Header Manager 선택

HTTP Header Manager 생성
HTTP Header Manager 설정

  • Headers Stored in the Header Manager : 요청과 함께 전달될 헤더 필드 목록 (Name : X-Forwarded-For , Value : ${IP_LIST}

모든 설정을 완료 후 하단의 Save 버튼을 통해 설정 값을 저장한다.


3. Test

1. WebtoB 기동

 

2. Jmeter 실행

Jmeter 상단의 실행 버튼을 통해 JMeter 테스트를 시작한다.

 

3. Access 로그 모니터링

tail -F {accesslog name}

ip_list에 설정한 IP 들의 요청을 확인할 수 있다.

WEBADMIN PAGE

Domain → Domain Log Home 경로 변경

Domain Log Home 경로 변경 시 DAS 및 MS Container 모두 재기동 필요

DAS 중지 시 컨테이너 및 서비스 영향 없음

→ AdminPage 및 DSA 접근 불가

컨테이너 중지 시 서비스 영향

환경변수 jlog Alias 경로 변경

gclog 로그 경로 변경

MS Container 별 jvm option 중 gclog 경로 변경 필요

dump 로그, 경로 변경

MS Container 별 jvm option 중 dump경로 변경 필요

launcher 로그 경로 변경

/home/jeus8_1/jeus8_5/bin/jeus.properties

-Djeus.launcher.log.home=[변경할 로그 경로]/launcher/

nodemanager 로그 경로 변경

/home/jeus8_1/jeus8_5/nodemanager/jeusnm.xml

<logFileName>/home/jeus8_1/jeus8_5/logs/nodeManager/JeusNodeManager.log</logFileName>

[Issue]

1. startDomainAdminServer 시 Domain.xml 제대로 불러오지 못하는 현상

The connection failed: fail to connect to mspark:10000(/JeusMBeanServer), the node is not ready

 

2. DSA Console창에서 AdminServer - SHUTDOWN


[Resolution]

  • 이전 백업 받아놓은 domain.xml과 비교
  • DOMAIN_NAME 이 기존 jeus_domain 에서 tmax_domain으로 변경되어 있었음
  • ${JEUS_HOME}/domains/tmax_domain 하위의 servers 삭제 (Domain.xml Cache Data)
  • 기존 ${JEUS_HOME}/domains/jeus_domain/servers/adminServer/bin 의 startDomainAdminServer에 변경한 tmax_domain이 아닌 jeus_domain으로 들어가 있었음
  • 기동되고 있는 adminSerer 프로세스 확인 후 kill 로 프로세스 강제 종료
  • 재기동하니 Admin 정상 running

0. 설치 전 확인 사항

(1) JDK, Database, WAS 버전 확인

JDK 1.5 ~ 1.8 Version
Database Tibero 4, Tibero 5, Oracle 10g ~ 11g, 12c
WAS JEUS 6.0.0.6-B216(내장 WebtoB)

 

(2) DB 자원 정보

Sysmaster 운영을 위해 최소 1GB이상 필요. 기본적으로 컨테이너당 Datafile의 크기는 최소 5GB 혹은 그 이상으로 권장한다.

 

(3) 계정 정보

Master Agent를 같은 머신과 같은 계정에 설치하여도 기능상 문제는 없지만, 각각 다른 머신, 다른 계정에 설치할 것을 강력히 권장한다.

 

1. 설치파일 준비

설치파일 다운로드
https://technet.tmaxsoft.com/ko/front/download/findDownloadList.do?cmProductCode=0401

 

TmaxSoft Technical Network [technet-02]

데모라이선스 신청 데모라이선스는 제품구입 전 테스트 및 검토를 위하여 제한 된 기간 동안 발급받아 사용가능한 라이선스 입니다.

technet.tmaxsoft.com

  • SysMaster5_0_Master_Agent_Enterprise.bin
  • 2021-04-05.zip

2. Master 설치

vi .bash_profile 에서 JAVA PATH를 잡아준다.

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH

## TIBERO ##
export TB_HOME=/home/master/tibero6
export TB_SID=tibero
export LD_LIBRARY_PATH=$TB_HOME/lib:$TB_HOME/client/lib
export TB_SID=tibero
export LD_LIBRARY_PATH=$TB_HOME/lib:$TB_HOME/client/lib
export PATH=$PATH:$TB_HOME/bin:$TB_HOME/client/bin


## MASTER ##
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.345.b01-1.el7_9.x86_64
export PATH=$PATH:$TB_HOME/bin:$TB_HOME/client/binexport:$TB_HOME=/home/master/tibero6:$JAVA_HOME:$JAVA_HOME/bin

 

/home/master/에 SysMaster5_0_Master_Agent_Enterprise.bin을 넣고 실행시킨다.

 sh SysMaster5_0_Master_Agent_Enterprise.bin

라이선스 동의

마스터 서버를 설치 중이기 때문에 Master 선택

OS 선택 (Linux기  때문에 Default)

Web UI 언어 - > 한국어 (나중에 변경 가능)

Bit 수 체크 -> 64bit

JDK가 제대로 잡아주면 Default 에 JDK 위치가 뜨는데 설정이 잘못되어 직접 잡아줬다.

설치 경로 확인

JEUS Password 설정 (password: jeusadmin)

Master IP ,, 전부 Default로 설정

DB Type -> Tibero

SID, User Name, PWD, PORT 등을 설정한다.

User 명을 sysmater_db로 했기 때문에 변경X, 만약 USER명을 다르게 생성했다면 변경해준다.

JDBC 드라이버는 나중에 잡을거기 때문에 PASS

Provider file은 Patch 시 넣을 거기때문에 NO 선택

설치가 완료되면 sysmaster 디렉토리가 생성되어있다.

3. Master 패치

Master 서버에는 기본적으로 JEUS, WebtoB가 내장되어 설치된다.

Web Page 호출을 위한 용도기 때문에 따로 수정이 필요하지 않다.

 

먼저 /home/master/sysmaster/jeus/webserver/config의 ws_engine.m를 컴파일한다.

 

/home/master/sysmaster/jeus/lib/application 디렉토리를 백업한다.

최신 패치 파일을 미리 압축 (2021-04-05.zip)을 따로 디렉토리를 생성하여 풀어놓는다.

base 폴더에 있는 sysmaster-base.jar은 방금 백업해줬던 application폴더에 복사한다.

console폴더에 있는 압축파일 중 해당 마스터에 설치된 프로바이더 이름이 적힌 파일을 master/update/console 폴더에 복사한다.

main 폴더에 있는 모든 파일을 /update/main 폴더에 복사한다.

provider 폴더에 있는 폴더 중 설치되어있는 프로바이더 폴더 내 파일을 update/provider에 복사한다.

디렉토리를 넣으면 안되고 안에 있는 압축파일들을 모두 빼서 넣어줘야한다.

/home/master/sysmaster/jeus/lib/datasource에 Tibero6 jdbc 드라이버를 넣는다.

JDBC 위치 : $TB_HOME/client/lib/jar/tibero6-jdbc.jar

cp /$TB_HOME/client/lib/jar/tibero6-jdbc.jar /home/master/sysmaster/jeus/lib/datasource

전부 작업이 끝났다면 패치 정보를 확인한다.

/home/master/sysmaster/bin 의 version.sh을 실행시켰을 때, 2021-04-05로 패치가 되었는 지 확인한다.

4. Master 기동 및 확인

/home/master/sysmaster/bin의 smmaster 명령어를 실행시켜 Master를 기동시킨다.

문제없이 컨테이너1, 2가 정상적으로 올라가는 지 확인한다.

 

기동 종료는 smdown 명령어를 입력하면 된다.

http://[Master Server IP]:8080/sysmaster/ 로 Sysmaster page에 접속한다.

계정은 Default로 admin/admin 으로 설정되어 있다.

+ Recent posts