2016년 5월 10일 화요일

Olog Service Module 설치

Olog는 REST 기반의 Web Service Module로 가속기 운영 중 발생하는 다양한 Event에 대한 기록 및 검색을 사용자에게 제공해 주는 모듈이다. Olog는 크게 Servie를 제공하는 Server와 Log를 작성하는 Client로 구성되어 있다.

기본적인 Olog 설치 및 파일은 다음 사이트에서 받을 수 있다.

http://olog.github.io/2.2.7-SNAPSHOT/


시스템 구성
  • Debain Jessie 64bit Kernel 3.16.0
  • Glassfish Application Server v3.1.2.2
  • MySql 5.5
  • Olog Service v2.2.6
Olog Service는 Web application ARchive(WAR)파일로 제공되므로 이를 Deploy할 수 있는 Application Server가 필요하다. 현재 가장 많이 사용되고 있는 서버 프로그램으로는 Glassfish와 Apache Tomcat이 있으며, 여기서는 Glassfish v3.1.2.2를 사용하였다. Glassfish 설치는 다음 포스트를 참고하기 바란다.

Debian에서 Glassfish 설치


1. MySql 설치


MySql은 Debian 기본 Package에 포함되어 있으며 aptitude 명령으로 설치 할 수 있다.

root@debian:~# aptitude install mysql-server-5.5

MySQL에 사용할 root 패스워드를 설정하고 Ok를 누른다.


Olog Database 추가

Olog Service에서 사용되는 SQL 테이블은 다음과 같다.
  • attributes
  • entries
  • logbooks
  • logs
  • logs_attributes
  • logs_logbooks
  • properties
  • schema_version
  • subscriptions
테이블 생성을 위한 Schema 파일은  다음 포스트를 참고한다.

Olog Mysql Database Schema

MySql에 로그인 한 후 Databases를 만든다.

scwook@debain:~$ mysql -u root -p
Enter password: 

mysql> source /home/scwook/Downloads/olog_scheme.sql;

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| olog               |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)

mysql> use olog;
Database changed
mysql> show tables;
+-----------------+
| Tables_in_olog  |
+-----------------+
| attributes      |
| levels          |
| logbooks        |
| logs            |
| logs_attributes |
| logs_logbooks   |
| properties      |
| statuses        |
| subscriptions   |
+-----------------+
9 rows in set (0.01 sec)

mysql> exit

MySql Connector Java 설치


TAR Archive 파일을 다운 받는다.



다운 받은 파일의 압축을 해제하고 connector 파일을 glassfish library 폴더에 복사한다.

root@debain:~/Downloads# tar xvf mysql-connector-java-5.1.38.tar.gz
root@debain:~/Downloads# cd mysql-connector-java-5.1.38
root@debain:~/Downloads# cp mysql-connector-java-5.1.38-bin.jar /opt/glassfish3/glassfish/lib


2. Glassfish 설정

JDBC Connection Pool 생성

- Common Tasks - Resources - JDBC - JDBC Connection Pools 메뉴 선택
- New 버튼을 눌러 다음과 같이 설정한다.
  • Pool Name: OlogPool
  • Resource Type: javax.sql.ConnectionPoolDataSource
  • Datasource Classname:  com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource
-  Additional Properties 에 다음 속성을 추가한다. 
  • databaseName - olog
  • serverName - localhost
  • user - [mysql user]
  • password - [mysql password]





JDBC Resource 생성

- Common Tasks - Resources - JDBC - JDBC Resources 메뉴 선택
- New 버튼을 눌러 다음과 같이 설정한다.
  • JNDI Name: jdbc/olog
  • Pool Name: OlogPool




Realm  추가

- Common Tasks - Configurations - Server-config - Security - Realms 선택
- New 버튼을 눌러 다음과 같이 설정한다.
  • Name: olog
  • Class Name: com.sun.enterprise.security.auth.realm.file.FileRealm
  • JAAS Context: fileRealm
  • Key File: ${com.sun.aas.instanceRoot}/config/olog_keyfile

- Common Tasks - Configurations - Server-config - Security - Realms - olog 선택
- Manage Users 를 클릭하여 사용자를 추가한다.
  • User ID: [사용자 ID]
  • Group List: [사용자가 속한 그룹]
- Group List는 다음 중 하나로 설정한다.

  • olog-admins:  Logbook 및 Tag 생성, 삭제, Log 작성
  • olog-logs: Log 작성





Depoly

다음 주소에 접속하여 Olog 2.2.6 버전을 받는다.

압축을 해제한다.
scwook@debian:~/olog$ tar xvf Olog_2-2-6.tar.gz
scwook@debian:~/olog$ ls
OlogAPI-2.2.6.jar          OlogAPI-2.2.6-sources.jar
OlogAPI-2.2.6-javadoc.jar  olog-service-2.2.6.war

- Common Tasks - Applications 선택
- Deploy 버튼을 눌러 다음과 같이 설정한다.
  • Location: olog-service-2.2.6.war
  • Type: Web Application
  • Context Root: olog
  • Application Name: olog-service-2.2.6




Trouble Shooting

Problem
JDBC Connection  Pools 생성시 다음과 같은 에러가 발생할 경우.

HTTP Status 500 - Internal Server Error
type Exception report
message Internal Server Error
description The server encountered an internal error that prevented it from fulfilling this request.
exception
java.lang.IllegalStateException: getOutputStream() has already been called for this response

note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 4.1.1 logs.
GlassFish Server Open Source Edition 4.1.1 

Soultion
shell 명령을 통해 JDBC Connection Pools를 생성한다.

root@debian:/opt/glassfish4/bin# ./asadmin create-jdbc-connection-pool --datasourceclassname com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource --restype javax.sql.ConnectionPoolDataSource --property user=dbuser:password=dbpasswd:serverName=localhost:databaseName=olog OlogPool

Problem

2. JDBC Resource 생성시 다음과 같은 에러가 발생할 경우.

class java.lang.RuntimeException

Solution
shell 명령을 통해 JDBC Resources를 생성한다.

root@debian:/opt/glassfish4/bin# ./asadmin create-jdbc-resource --connectionpoolid OlogPool jdbc/olog

Problem

Applications Deploy할 때 다음과 같은 에러가 발생할 경우.

An error has occurred Error occurred during deployment: Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.ddlutils.DatabaseOperationException: Error while reading the database metadata: Error in allocating a connection. Cause: Connection could not be allocated because: java.net.ConnectException : Error connecting to server localhost on port 1527 with message Connection refused.. Please see server.log for more details. An error has occurred

Error occurred during deployment: Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.ddlutils.DatabaseOperationException: Error while reading the database metadata: Error in allocating a connection. Cause: Connection could not be allocated because: java.net.ConnectException : Error connecting to server localhost on port 1527 with message Connection refused.. Please see server.log for more details.

Soultion

Glassfish v3를 사용한다.

댓글 1개: