설치 및 파라미터 설정
Kubernetes 환경에서 SysMaster DB 8.2를 설치하는 과정이다.
1. 도커(Docker) 이미지 로드
설치 파일이 준비된 디렉터리에서 아래의 명령을 수행하여 도커 이미지를 로드한다.
docker load -i sysmaster-db-{version}.tar
이때 로드된 도커 이미지 목록은 다음과 같다.
sysmaster-db-client:{version}
sysmaster-db-sdm:{version}
sysmaster-db-tibero-master:{version}
sysmaster-db-collector:{version}
sysmaster-db-analyzer:{version}
sysmaster-db-tmaxopensql-postgres:{version}
sysmaster-db-schema-registry:{version}
sysmaster-db-kafka-loggable:{version}
sysmaster-db-zookeeper-loggable:{version}
sysmaster-db-alpine-linux:{version}
2. 도커(Docker) 이미지 푸시
로드한 도커 이미지들을 해당 환경에서 사용 중인 이미지 리포지터리로 푸시한다.
3. 쿠버네티스(Kubernetes) 오브젝트 정의
설치 디렉터리에서 kubernetes 디렉터리 안의 yaml 파일들을 통해서 8개의 디플로이먼트들에 대해 정의한다. 각 디플로이먼트에 대한 설명은 다음과 같다.
client
사용자가 브라우저를 통해 접속하게 될 웹 서버
sdm
수집 정보를 조회하고 클라이언트와 통신하는 API 서버
tibero-master
관제 데이터베이스에 대한 상태 확인과 Admin 기능을 수행하는 서버
collector
관제 데이터베이스로부터 데이터를 수집하는 서버
analyzer
수집한 정보를 가공해 분석 및 저장하는 서버
metadb
UI 관련 설정 정보를 저장하는 DB 서버
repodb
관제 데이터베이스 수집 데이터를 저장하는 DB 서버
kafka
Kafka 클러스터(ZooKeeper, Broker, Schema Registry 포함)
4. 설치 파라미터 설정 - 계정 정보 및 보관 주기
설치 디렉터리에서 kubernetes/init/configmap.yaml 파일을 열어 SysMaster DB 8.2의 설치에 필요한 계정 정보 및 보관 주기 관련 파라미터 값을 설정한다.
apiVersion: v1
kind: ConfigMap
metadata:
name: config-sysmaster
namespace: sysmasterdb
data:
RETENTION_DAY: "7"
METADB_USER: sysmaster
METADB_PASSWORD: sysmaster
REPODB_USER: sysmaster
REPODB_PASSWORD: sysmaster
ADMIN_USERNAME: admin
ADMIN_PASSWORD: admin
LOG_RETENTION_DAY: "1"
LOG_FILE_SIZE: "100MB"
LOG_TOTAL_SIZE: "1000MB"
LOG_LEVEL: "info"
CONTAINER_LOG_PATH: "/sysmaster/logs"
KAFKA_MESSAGE_MAX_BYTES: "20971520"
TIME_ZONE: Asia/Seoul
SQL_FLUSH_THRESHOLD: 100
SQL_RS_FETCH_SIZE: 1000
# SKIP_DB_USER_COUNT_MIGRATION_PATCH: true
# SKIP_DAILY_SEGMENT_MIGRATION_PATCH: true
SDM_HEAP_SIZE_MAX: ""
SDM_HEAP_SIZE_MIN: ""
ANALYZER_HEAP_SIZE_MAX: ""
ANALYZER_HEAP_SIZE_MIN: ""
COLLECTOR_HEAP_SIZE_MAX: ""
COLLECTOR_HEAP_SIZE_MIN: ""
TBM_HEAP_SIZE_MAX: ""
TBM_HEAP_SIZE_MIN: ""
PERFORMANCE_LOGGING: ""
해당 과정에서 설정하는 파라미터에 대한 설명은 다음과 같다.
ADMIN_USERNAME
Admin 계정의 사용자 이름
admin
ADMIN_PASSWORD
Admin 계정의 암호
admin
METADB_USER
Meta DB의 슈퍼 사용자 이름
sysmaster
METADB_PASSWORD
Meta DB의 슈퍼 사용자 암호
sysmaster
REPODB_USER
Repository DB의 슈퍼 사용자 이름
sysmaster
REPODB_PASSWORD
Repository DB의 슈퍼 사용자 암호
sysmaster
RETENTION_DAY
수집 정보의 보관 주기
7
LOG_RETENTION_DAY
로그 파일 보관 주기
1
LOG_FILE_SIZE
로그 파일 하나의 최대 크기
100MB
LOG_TOTAL_SIZE
모듈 별 최대 로그 저장 용량
1000MB
LOG_LEVEL
모듈 별 최대 로그 레벨
info
CONTAINER_LOG_PATH
컨테이너 내부 로그 경로 설정
/sysmaster/logs
KAFKA_MESSAGE_MAX_BYTES
카프카 메시지 사이즈 설정, 1MB ~ 2GB 범위로 설정 가능
20971520 Byte
TIME_ZONE
SysMaster DB 서버 Time-Zone 설정
Asia/Seoul
SQL_FLUSH_THRESHOLD
SQL 관련 하나의 메시지가 담을 수 있는 정보 개수 제한. SQL Plan의 경우 해당 값의 10배로 제한한다.
관제 DB 당 100개
SQL_RS_FETCH_SIZE
한 번에 관제 DB 로부터 조회하는 SQL 관련 정보 row 개수
관제 DB 당 1000개
SKIP_DB_USER_COUNT_MIGRATION_PATCH
(기설치 환경 패치 시,) 기수집 데이터 기반 Repository DB의 DB_USER_COUNT 테이블 데이터 생성 패치 생략 여부. 필요 시 아래 [참고]를 확인하고 설정.
true (주석 처리를 통한 미적용)
SKIP_DAILY_SEGMENT_MIGRATION_PATCH
(기설치 환경 패치 시,) 기수집 데이터 기반 Repository DB의 DAILY_SEGMENT 테이블 데이터 생성 패치 생략 여부. 필요 시 아래 [참고]를 확인하고 설정.
true (주석 처리를 통한 미적용)
SDM_HEAP_SIZE_MAX
SDM의 최대 힙 크기
현재 컨테이너 전체 메모리(free 명령어의 total mem 참고)의 1/4 이다.
[참고] 현재 docker 기본 이미지는 openjdk:17-alpine 이다.
SDM_HEAP_SIZE_MIN
SDM의 최소 힙 크기
현재 컨테이너 전체 메모리(free 명령어의 total mem 참고)의 1/64 이다.
[참고] 현재 docker 기본 이미지는 openjdk:17-alpine 이다.
ANALYZER_HEAP_SIZE_MAX
Analyzer의 최대 힙 크기
현재 컨테이너 전체 메모리(free 명령어의 total mem 참고)의 1/4 이다.
[참고] 현재 docker 기본 이미지는 openjdk:17-alpine 이다.
ANALYZER_HEAP_SIZE_MIN
Analyzer의 최소 힙 크기
현재 컨테이너 전체 메모리(free 명령어의 total mem 참고)의 1/64 이다.
[참고] 현재 docker 기본 이미지는 openjdk:17-alpine 이다.
COLLECTOR_HEAP_SIZE_MAX
Collector의 최대 힙 크기
현재 컨테이너 전체 메모리(free 명령어의 total mem 참고)의 1/4 이다.
[참고] 현재 docker 기본 이미지는 openjdk:17-alpine 이다.
COLLECTOR_HEAP_SIZE_MIN
Collector의 최소 힙 크기
현재 컨테이너 전체 메모리(free 명령어의 total mem 참고)의 1/64 이다.
[참고] 현재 docker 기본 이미지는 openjdk:17-alpine 이다.
TBM_HEAP_SIZE_MAX
TBM의 최대 힙 크기
현재 컨테이너 전체 메모리(free 명령어의 total mem 참고)의 1/4 이다.
[참고] 현재 docker 기본 이미지는 openjdk:17-alpine 이다.
TBM_HEAP_SIZE_MIN
TBM의 최소 힙 크기
현재 컨테이너 전체 메모리(free 명령어의 total mem 참고)의 1/64 이다.
[참고] 현재 docker 기본 이미지는 openjdk:17-alpine 이다.
PERFORMANCE_LOGGING
성능 관련 로그 작성 여부 [참고] 추가적인 CPU, Disk를 사용하는 것이기 때문에 Y로 설정 시 성능 저하가 발생할 수 있음.
N
5. 설치 파라미터 설정 - 포트
설치 디렉터리에서 kubernetes/init/service.yaml 파일을 열어 SysMaster DB 8.2의 설치에 필요한 포트 관련 파라미터 값을 설정한다. 해당 과정에서 설정하는 파라미터에 대한 설명은 다음과 같다.
CLIENT_PORT
UI 접속 URL의 포트 번호
[수정 위치] metadata.name=client, name="client-port"인 ports의 nodePort 수정
80
COLLECTOR_PORT
수집 모듈(TPM Agent)이 접속할 포트 번호
[수정 위치] metadata.name=collector, name="collector-port"인 ports의 nodePort 수정
[참고] 관제 DB에서 접속할 수 있도록 SysMaster 서버에서 열려 있어야 함.
8292
METADB_PORT
Meta DB의 접속 포트 번호
[수정 위치] metadata.name=metadb, name="metadb-port"인 ports의 nodePort 수정
25432
REPODB_PORT
Repository DB의 접속 포트 번호
[수정 위치] metadata.name=repodb, name="repodb-port"인 ports의 nodePort 수정
15432
6. Meta DB 및 Repository DB 파라미터 설정
설치 디렉터리에서 kubernetes/init/configmap.yaml 파일을 통해 Meta DB 및 Repository DB 파라미터 값을 확인할 수 있다. 다음은 Meta DB에 대한 파라미터 설정 예시이다.
apiVersion: v1
kind: ConfigMap
metadata:
name: sysmasterdb8-metadb-configmap
namespace: sysmasterdb
data:
meta.conf: |
pg_superuser: "postgres"
pg_superuser_password: "postgres"
pg_data: "/pgdata"
pg_log: "/sysmaster/logs"
pg_users:
- name: "sysmaster"
pass: "sysmaster"
role_attr_flags: LOGIN
pg_databases:
- name: metadb
owner: sysmaster
pg_max_connections: 20
pg_postgres_conf_params:
- name: "log_filename"
value: "metadb-%H%M.log"
- name: "log_timezone"
value: "Asia/Seoul"
- name: "log_min_messages"
value: "INFO"
- name: "log_rotation_age"
value: "60"
- name: "log_rotation_size"
value: "100MB"
- name: "log_truncate_on_rotation"
value: "on"
해당 conf 파일은 기본적으로 제공되는 설정값을 사용하되, 다음에서 설명하는 파라미터는 필요 시 구동 환경에 맞게 사용자가 직접 설정해준다.
pg_max_connections
Meta DB(또는 Repository DB)의 최대 커넥션 수
log_timezone
Meta DB(또는 Repository DB)의 로그 시간 Time-Zone
Last updated