From f9add055e003f86ba06384ada00b8bfcd3206c4f Mon Sep 17 00:00:00 2001 From: Claude-51124 Date: Fri, 1 Aug 2025 09:58:38 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20=ED=81=AC=EB=A1=A0=EC=9E=A1=20=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=20=EB=8F=99=EA=B8=B0=ED=99=94=20=EC=84=A4=EC=A0=95=20?= =?UTF-8?q?=ED=8A=B8=EB=9F=AC=EB=B8=94=EC=8A=88=ED=8C=85=20=EB=AC=B8?= =?UTF-8?q?=EC=84=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Docker SSHFS 충돌 문제를 크론잡으로 해결 - 매일 새벽 3시 자동 로그 백업 설정 - SSHFS 권한 문제 해결 과정 기록 - rb10508_test 중복 디렉토리 구조 문제 발견 --- ...1_claude_크론잡로그동기화설정.md | 123 ++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 troubleshooting/250801_claude_크론잡로그동기화설정.md diff --git a/troubleshooting/250801_claude_크론잡로그동기화설정.md b/troubleshooting/250801_claude_크론잡로그동기화설정.md new file mode 100644 index 0000000..934ceb8 --- /dev/null +++ b/troubleshooting/250801_claude_크론잡로그동기화설정.md @@ -0,0 +1,123 @@ +# 250801 크론잡 로그 동기화 설정 + +## 배경 + +### 이전 문서 참조 +- [250731_로그저장소_SSHFS설정과_템플릿해결책.md](./250731_로그저장소_SSHFS설정과_템플릿해결책.md) +- [250731_claude_SSHFS권한문제해결.md](./250731_claude_SSHFS권한문제해결.md) + +### 문제 상황 +- Docker SSHFS 충돌로 중앙 로그 시스템 구축 실패 +- 로그가 51124 서버 SSD에 저장되고 있음 (CLAUDE.md 규칙 위반) +- SSHFS 마운트는 되어있지만 Docker 볼륨 마운트 시 충돌 발생 + +## 해결 방안: 크론잡 동기화 + +### 오전 9시 30분 - 새로운 접근 방식 결정 +로컬 개발자 제안: "24서버에 로그 저장하고 하루에 한번씩 크론잡으로 HDD로 넘기는 건 어때?" + +장점: +1. Docker 설정 변경 불필요 +2. SSHFS 충돌 없음 +3. SSD 쓰기 성능 활용 +4. 배포 시 추가 작업 불필요 +5. 로그 손실 위험 감소 + +### 오전 9시 35분 - 스크립트 작성 +```bash +# 스크립트 디렉토리 생성 +mkdir -p /home/admin/scripts + +# 동기화 스크립트 작성 +/home/admin/scripts/sync_logs_to_hdd.sh +``` + +초기 실행 시 권한 문제 발생: +- `/var/log/sync_logs` 생성 실패 (Permission denied) +- `/home/admin/logs/sync_logs`로 변경하여 해결 + +### 오전 9시 38분 - SSHFS 권한 문제 발견 +``` +rsync: [receiver] mkstemp failed: Permission denied (13) +``` + +원인: SSHFS가 UID 999(docker)로 마운트되어 admin(UID 1001)이 쓸 수 없음 + +해결: +1. SSHFS를 UID/GID 매핑으로 재마운트 +```bash +fusermount -u /mnt/51123logs +sshfs -o IdentityFile=/home/admin/.ssh/id_rsa_deploy,reconnect,uid=$(id -u),gid=$(id -g) \ + admin@192.168.219.45:/mnt/hdd/logs/51124-server /mnt/51123logs -p 51123 +``` + +2. 51123 서버에서 디렉토리 권한을 admin으로 변경 (로컬 개발자가 수행) + +### 오전 9시 41분 - 동기화 성공 +모든 서비스 로그 동기화 완료: +- rb10508_test: 474,540 bytes 동기화 +- rb10408_test: 0 bytes 동기화 +- rb8001: 18,751 bytes 동기화 +- skill_news: 125 bytes 동기화 +- skill_email: 로그 디렉토리 없음 + +### 오전 9시 42분 - 크론탭 설정 +```bash +# 크론탭 설정 (매일 새벽 3시) +0 3 * * * /home/admin/scripts/sync_logs_to_hdd.sh >> /home/admin/logs/sync_logs/cron.log 2>&1 +``` + +## 최종 구조 + +### 51124 서버 (원본) +``` +/home/admin/ivada_project/ +├── rb10508_test/logs/ +├── rb10408_test/logs/ +├── rb8001/logs/ +├── skill_news/logs/ +└── skill_email/logs/ +``` + +### 51123 서버 (백업) +``` +/mnt/hdd/logs/51124-server/ +├── rb10508_test/ +├── rb10408_test/ +├── rb8001/ +├── skill_news/ +└── skill_email/ +``` + +## 발견된 문제 + +### rb10508_test 중복 디렉토리 구조 +51124 서버에 이미 중복 구조 존재: +``` +/home/admin/ivada_project/rb10508_test/logs/ +├── rb10508_test_app.log +└── rb10508_test/ + └── rb10508_test_app.log (0 bytes) +``` + +이는 Docker 볼륨 마운트나 애플리케이션 설정 문제로 추정됨. + +## 결과 + +1. **로그 백업 자동화 완성**: 매일 새벽 3시에 자동 실행 +2. **SSD 공간 관리**: 7일 이상된 로컬 로그 자동 삭제 +3. **CLAUDE.md 준수**: 로그가 최종적으로 HDD에 저장됨 +4. **Docker 충돌 회피**: SSHFS 마운트 포인트와 Docker 볼륨 충돌 없음 + +## 교훈 + +1. **복잡한 해결책보다 간단한 방법이 낫다**: Docker SSHFS 통합보다 크론잡이 더 안정적 +2. **권한 문제는 여러 레벨에서 발생**: SSHFS UID 매핑과 원격 디렉토리 권한 모두 확인 필요 +3. **점진적 마이그레이션**: 실시간 동기화보다 배치 처리가 더 안전할 수 있음 +4. **로그 파일 경로 정리 필요**: 중복 디렉토리 구조는 추후 정리 필요 + +--- + +작성일: 2025-08-01 09:30 - 09:45 +작성자: Claude (51124 서버) +주제: Docker SSHFS 충돌 회피를 위한 크론잡 로그 동기화 설정 \ No newline at end of file