본문으로 건너뛰기

Docker 모드 설치

exemONE Docker 모드 신규 설치 가이드

1. 지원 환경 및 시스템 요구사항

1-1. 지원 OS

구분지원 OS
Docker 모드Linux Redhat(RHEL) 7.x 이상, Linux CentOS 7.x 이상, Linux Rocky 8.x 이상, Ubuntu 20.x 이상, Amazon Linux 2023 이상

2. Docker 모드 신규 설치 절차 (단계별)

[Phase 1] 사전 설정 (root 권한으로 진행)

단계 1. Timezone 설정

mv -f /etc/localtime /etc/localtime.tmp
cp -rf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

단계 2. exemone 계정 생성

제품 운영을 위한 전용 계정을 생성합니다 (sudo 권한 추가).

sudo groupadd -g 1201 exemone
sudo adduser -u 1201 -g 1201 exemone
sudo passwd exemone
> New password: exemsaas
> Retry new password: exemsaas

단계 3. 설치 파일 준비

인터넷이 되는 환경에서는 install/update 쉘을 통해 최신 Docker 이미지를 받을 수 있지만, 인터넷이 되지 않는 환경에서는 패키지, 모듈, 외부 컴포넌트, Docker 설치 파일을 사전에 준비해야 합니다.

파일은 제품기술팀에 문의하세요.

# 설치 파일 업로드 후 압축 해제
tar -zxvf exemone-pkg.tar.gz

단계 4. Docker 설치

CASE 1. 일반 Docker 설치

root 계정으로 수행하거나, exemone 계정 이용 시 sudo를 붙여서 수행합니다. 경로: home/exemone/exemone/docker

# 파일 압축 해제
tar -xzvf docker-[version].tgz

# Docker 실행 파일 복사
sudo cp docker/* /usr/bin

# 백그라운드에서 Docker 실행
sudo nohup dockerd &

# id 1001로 docker 그룹 생성
sudo groupadd -g 1001 docker

# exemone 계정을 docker 그룹에 추가
sudo usermod -aG docker exemone

# 일반 사용자도 도커 명령어 쓸 수 있게 권한 설정
sudo chown root:docker /var/run/docker.sock
CASE 2. Amazon Linux Docker 설치
# 1. RPM 압축 해제
tar -xvzf docker-20.10.25-1.amzn2.0.4.x86-64.rpm.tar.gz

# 2. 모든 RPM 설치
sudo rpm -iv *

# 3. Docker 서비스 등록 및 시작
sudo systemctl enable docker --now

# 4. 사용자에게 Docker 권한 부여 후 재접속
sudo usermod -aG docker [user_id]

docker ps 명령어 실행 시 아래 이미지처럼 나오면 Docker 설치 완료:

단계 5. Docker-compose 설치

# 파일 복사
sudo cp docker-compose-2.24.6 /usr/local/bin/docker-compose

# 실행 가능하도록 권한 부여
sudo chmod +x /usr/local/bin/docker-compose

# 버전 확인
docker-compose version

[Phase 2] 제품 설치 (exemone 계정으로 진행)

단계 1. exemone 계정 로그인

su - exemone

단계 2. exemONE 패키징 압축 해제

# 경로 변경
cd /home/exemone/

# 파일 압축 해제 (이전에 압축 해제했다면 스킵)
tar -zxvf exemone-installer-v.tar.gz

단계 3. exemONE 파일 압축 해제

경로: /home/exemone/exemone/installer

tar -xvzf exemone.tar.gz

단계 4. Docker 이미지 전체 로드

경로: /home/exemone/exemone/image

ls *.tar.gz | xargs -L 1 docker load -i

단계 5. 설치 진행

경로: /home/exemone/exemone/installer/exemone

./install.sh

단계 6. 설치 확인

Docker 프로세스를 확인합니다.

docker ps

확인 사항:

  • 총 16개 컨테이너가 모두 표시되어야 정상
  • STATUS 항목에서 Restarting 표시 없이, Up X minutes로 정상 기동 확인


3. docker-compose 설정

3-1. docker-compose.yml 파일 위치

$EXEMONE_HOME/docker-compose.yml

$EXEMONE_HOME은 일반적으로 /home/exemone/exemone/installer/exemone입니다.

3-2. .env 파일 (모듈 버전 관리)

경로: $EXEMONE_HOME/.env

.env 파일에서 각 모듈의 Docker 이미지와 버전을 관리합니다.

vi .env
# .env 파일 예시
FRONT_IMAGE=maxgauge/exemone-front
FRONT_VERSION=v3.0.504.15.16
# ... (각 모듈별 IMAGE와 VERSION 정의)

3-3. docker-compose.yml 포트 변경 방법

docker-compose.yml에서 정의된 외부 포트를 변경 후 서비스를 재구동합니다. 각 모듈에 정의된 port 정보는 내부 통신이므로 변경하지 않아도 됩니다.

예시: API 포트 변경

vi exemone/installer/exemone/docker-compose.yml
  • 디폴트 값인 8081을 원하는 값으로 변경

  • 포트 변경 후 재기동:
./onectl restart api

3-4. docker-compose 로그 설정

docker-compose.yml 파일에서 모든 모듈의 로그 사이즈 및 파일 개수를 설정할 수 있습니다.

기본값:

  • max-size: 100M (파일당 최대 크기)
  • max-file: 2 (최대 파일 개수)

변경 후 적용:

$EXEMONE_HOME/scripts/restart.sh

4. 관리 스크립트

Docker 모드에서는 $EXEMONE_HOME/scripts/ 디렉토리의 쉘 스크립트로 모듈을 관리합니다.

스크립트설명
./install.sh신규 설치 (네트워크, 환경설정, 컨테이너 빌드 및 실행)
./scripts/startup.sh전체 모듈 시작
./scripts/shutdown.sh전체 모듈 중지
./scripts/restart.sh전체 모듈 재시작
./scripts/startup.sh [모듈명]특정 모듈 시작 (예: ./scripts/startup.sh postgresql)
./scripts/shutdown.sh [모듈명]특정 모듈 중지 (예: ./scripts/shutdown.sh api)
./scripts/restart.sh [모듈명]특정 모듈 재시작 (예: ./scripts/restart.sh front)
docker ps전체 컨테이너 상태 확인

5. 설치 후 정상 작동 확인 리스트

5-1. 수집 서버 프로세스 확인

docker ps
  • IMAGE NAMES로 총 16개 모듈이 모두 보여야 정상
  • STATUS 항목에서 Restarting 표시 없이 Up X minutes 확인

5-2. 비정상 모듈 로그 확인

Restarting 표시되는 컨테이너가 있으면:

tail -f $EXEMONE_HOME/containers/재기동중인 모듈/logs/모듈명.log | grep ERR
# 예시:
tail -f $EXEMONE_HOME/containers/exemone-core/logs/core.log | grep ERR

5-3. 웹 화면 접속 확인

  • 브라우저에서 https://[수집서버IP]:8443 또는 http://[수집서버IP]:8080으로 접속
  • 로그인이 정상적으로 되는지 확인
  • 로그인 실패 시 exemone-api 로그 확인 필요

5-4. 에이전트 상태 확인

  • HOST 기본 뷰: Active / Inactive 상태 확인

  • Database 기본 뷰: Active / No Signal 상태 확인

  • Kubernetes Pod 뷰: Running 상태 확인

  • WAS 기본 뷰: Active 상태 확인

inactive 또는 nosignal인 경우, 수집서버 ↔ 타겟 서버 간 네트워크 및 포트(9009/9010) 방화벽 확인이 필요합니다.


6. Docker 경로 변경 (선택사항)

Docker 데이터 저장 경로를 변경하려면, Docker 설치 후 dockerd 실행 전에 설정합니다.

인터넷 안 되는 환경

  1. /etc/docker/daemon.json 파일 수정:
{ "data-root": "경로" }

  1. Docker 실행:
nohup dockerd --data-root {디렉토리 경로} &

이전 데이터 복사가 필요한 경우:

  1. Docker 데몬 중지
  2. 새 경로 생성
  3. rsync로 데이터 복사:
rsync -aHAX --numeric-ids /var/lib/docker/ /data/docker/
  1. /var/lib/docker 백업 이름 변경
  2. daemon.json 또는 dockerd --data-root로 새 경로 실행
  3. docker ps -a, docker images 확인

인터넷 가능한 환경 (CentOS 7)

  1. docker.service 파일 수정:
sudo vim /lib/systemd/system/docker.service

# 기존:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
# 변경:
ExecStart=/usr/bin/dockerd --data-root /경로/docker -H fd:
  1. Docker 실행:
sudo systemctl start docker && sudo systemctl enable docker

7. docker-compose 버전 변경 (선택사항)

docker-compose 버전을 업그레이드하려면:

  1. 실행 중인 컨테이너를 중지:
$EXEMONE_HOME/scripts/shutdown.sh
  1. 기존 docker-compose 제거:
sudo rm -rf /usr/local/bin/docker-compose
# 또는
sudo yum remove docker-compose-plugin
  1. 새 docker-compose 파일을 서버에 업로드 후 복사 및 권한 부여:
sudo cp docker-compose-2.40.3 /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
  1. 버전 확인:
docker-compose version

  1. exemONE 다시 시작:
$EXEMONE_HOME/scripts/startup.sh

8. 주의사항

  1. 사전 설정은 반드시 root 권한, 제품 설치는 반드시 exemone 계정으로 진행해야 합니다.
  2. 인터넷 불가 환경: Docker 이미지 파일을 사전에 준비하여 수동 로드(docker load -i)해야 합니다.
  3. 패키지 파일 준비: 설치 파일(exemone-pkg.tar.gz, exemone-installer-v.tar.gz)은 품질기술팀에 문의하여 준비합니다.
  4. docker-compose 포트 변경 시: docker-compose.yml의 외부 포트만 변경하면 됩니다. 내부 통신 포트는 변경하지 않아도 됩니다.
  5. 패키지 업데이트(버전 변경) 시: 다운그레이드가 불가능하므로, 작업 전 기존 데이터 백업(ClickHouse, PostgreSQL) 후 진행하세요. 상세 가이드: 데이터 백업 후 패키지 패치
  6. 2024년 5월 29일 이전 패키지: restart.shrun_docker_compose build --no-cache ${SERVICE} 라인이 빠져있을 경우 추가해야 합니다.
  7. ClickHouse 로그 레벨: {exemone 설치 경로}/containers/exemone-clickhouse/config.d/config.xml에서 변경 가능하며, 재시작 없이 바로 적용됩니다.

참고 문서: