DOCS/journey/troubleshooting/250930_opensearch_hdd_migration.md

2.4 KiB

OpenSearch HDD 마이그레이션

문제

  • OpenSearch 데이터가 SSD(/var/lib/opensearch)에 저장
  • SSD 용량 부족 우려

해결

1. 데이터 마이그레이션

sudo mkdir -p /mnt/hdd/opensearch
sudo cp -rp /var/lib/opensearch/* /mnt/hdd/opensearch/
sudo chown -R 1000:1000 /mnt/hdd/opensearch

2. 설정 파일 변경

파일: /home/admin/opensearch/docker-compose.yaml

  • 34번 라인: /var/lib/opensearch/mnt/hdd/opensearch

파일: /home/admin/opensearch/.gitea/workflows/cicd.yml

  • 17-19번 라인: /var/lib/opensearch/mnt/hdd/opensearch
  • 30-31번 라인: 기존 컨테이너 중복 방지 코드 추가

파일: /home/admin/opensearch/Dockerfile

  • 보안 인증서 COPY 라인 제거
  • ENV plugins.security.disabled=true 추가

3. 보안 플러그인 비활성화

  • docker-compose.yaml 15번 라인: DISABLE_SECURITY_PLUGIN=true
  • 내부 네트워크 전용 서비스로 TLS 불필요

4. 해결 과정 중 발생한 문제

  • Actions 실패: TLS 인증서 파일 없음 → 보안 플러그인 비활성화로 해결
  • 컨테이너 이름 충돌 → Actions에 기존 컨테이너 제거 코드 추가
  • 설정 중복 에러 → Dockerfile ENV 제거, docker-compose.yaml에서만 설정

5. 최종 상태

  • 데이터 경로: /mnt/hdd/opensearch (354MB)
  • 컨테이너: opensearch (opensearch-opensearch-node 이미지)
  • 포트: 9200, 9600
  • HDD 여유 공간: 869GB
  • API 응답: 정상
  • 로그 수집: fluent-bit → data-prepper → OpenSearch 정상

6. 추가 이슈 (2025-09-30)

  • 문제: 9/29부터 로그 수집 중단
  • 증상: fluent-bit → data-prepper 200 OK, 하지만 OpenSearch 저장 실패
  • 에러: Cannot deserialize value of type java.util.ArrayList from Object value
  • 원인: Data Prepper가 JSON 배열 [{...}] 요구, fluent-bit이 단일 객체 {...} 전송
  • 시도한 해결책:
    • json_array on 추가 (Fluentd 전용 파라미터, Fluent Bit에는 없음)
    • Flush 5초, Grace 30 설정 (배치 처리 시도)
    • Format json_lines (Data Prepper 비호환)
  • 상태: 미해결, 추가 조사 필요

7. 커밋 이력

  • 7466068: HDD 경로 변경
  • 5f7bf49: Actions 워크플로우 경로 수정
  • 2df7afb: 보안 플러그인 비활성화
  • 8f667d3: DISABLE_SECURITY_PLUGIN 환경변수 수정
  • 66b5ee8: Dockerfile 중복 설정 제거