117 lines
4.0 KiB
Markdown
117 lines
4.0 KiB
Markdown
# 250731 로그 저장소 SSHFS 설정과 템플릿 해결책
|
|
|
|
## 문제 상황
|
|
|
|
### 초기 문제
|
|
- rb10508 등 로빙 컨테이너들의 로그가 SSD에 저장되고 있음
|
|
- CLAUDE.md에 명시된 대로 로그는 HDD(/mnt/hdd/logs/)에 저장되어야 함
|
|
- 51123 서버에 HDD가 있고, 51124 서버에서 접근 필요
|
|
|
|
### SSHFS가 적합한 이유
|
|
1. 이미 SSH 키 설정 완료 - 추가 인증 설정 불필요
|
|
2. 다양한 로그 형태 지원 - stdout/stderr뿐만 아니라 파일 로그도 저장
|
|
3. 설정 최소화 - 51123 서버는 디렉토리만 만들면 됨
|
|
4. 투명한 작동 - 컨테이너는 로컬 디렉토리처럼 사용
|
|
|
|
## 실제 설정 과정
|
|
|
|
### 오후 10시 48분 - 51123 서버 작업
|
|
```bash
|
|
# 1. 51124서버 전용 로그 디렉토리 생성
|
|
sudo mkdir -p /mnt/hdd/logs/51124-server
|
|
sudo chown admin:admin /mnt/hdd/logs/51124-server
|
|
|
|
# 2. 51124서버의 SSH 공개키 추가
|
|
# 51124 서버의 ~/.ssh/id_rsa_deploy.pub 내용을 ~/.ssh/authorized_keys에 추가
|
|
|
|
# 3. cleanup 스크립트에 51124 서버 로그 정리 추가
|
|
# 51124 서버 로그도 30일 후 자동 정리되도록 설정
|
|
```
|
|
|
|
### 오후 10시 50분 - 51124 서버 작업
|
|
```bash
|
|
# 1. SSHFS 설치
|
|
sudo apt install -y sshfs
|
|
|
|
# 2. 마운트 포인트 생성
|
|
sudo mkdir -p /mnt/51123logs
|
|
|
|
# 3. 마운트 시도 (초기 실패 - SSH 키 문제)
|
|
sudo sshfs -o allow_other,reconnect admin@192.168.219.45:/mnt/hdd/logs/51124-server /mnt/51123logs -p 51123
|
|
```
|
|
|
|
### 오후 10시 51분 - SSHFS 마운트 성공
|
|
```bash
|
|
# 1. SSH 키 파일 지정하여 마운트
|
|
sshfs -o IdentityFile=/home/admin/.ssh/id_rsa_deploy admin@192.168.219.45:/mnt/hdd/logs/51124-server /mnt/51123logs -p 51123
|
|
|
|
# 2. 마운트 확인
|
|
df -h /mnt/51123logs
|
|
# 결과: 916G 크기의 HDD가 성공적으로 마운트됨
|
|
|
|
# 3. 테스트
|
|
mkdir -p /mnt/51123logs/rb10508
|
|
echo "SSHFS mount test - $(date)" > /mnt/51123logs/rb10508/test.log
|
|
```
|
|
|
|
## 권한 문제의 딜레마
|
|
|
|
### 발견된 문제점
|
|
1. **SSHFS 마운트**: admin(UID 1000)으로 마운트됨
|
|
2. **Docker 컨테이너**: UID 999로 실행
|
|
3. **권한 불일치**: Docker가 디렉토리 생성 시 실패
|
|
|
|
### 검토한 해결방안들
|
|
|
|
#### 1. 심볼릭 링크
|
|
```bash
|
|
ln -s /mnt/51123logs/rb10508 logs
|
|
```
|
|
- 간단하지만 로빙마다 수동 작업 필요
|
|
|
|
#### 2. docker-compose.yml 직접 수정
|
|
```yaml
|
|
volumes:
|
|
- /mnt/51123logs/rb10508:/code/logs:rw
|
|
```
|
|
- 명확하지만 역시 로빙마다 수정 필요
|
|
|
|
#### 3. SSHFS UID 매핑
|
|
```bash
|
|
sudo sshfs -o allow_other,uid=999,gid=999 ...
|
|
```
|
|
- root 권한 필요, 복잡함
|
|
|
|
#### 4. 사전 권한 설정
|
|
```bash
|
|
sudo chown -R 999:999 /mnt/hdd/logs/51124-server/
|
|
```
|
|
- 여전히 디렉토리는 수동 생성 필요
|
|
|
|
## 제안된 해결책 (미구현)
|
|
|
|
**참고**: 이 템플릿 방식은 제안만 되었고, 실제로는 250801 크론잡 방식으로 해결됨.
|
|
- 크론잡으로 매일 새벽 3시 rsync 동기화
|
|
- 자세한 내용은 [250801_claude_크론잡로그동기화설정.md](./250801_claude_크론잡로그동기화설정.md) 참조
|
|
|
|
## 교훈
|
|
1. **서버 간 통신은 항상 SSH 키 먼저**: 51123-51124 간 SSH 키가 설정되어 있지 않았음
|
|
2. **마운트 포인트 이름 규칙**: /mnt/51123logs처럼 연결하는 서버 번호를 명시하면 관리가 편함
|
|
3. **SSHFS vs NFS**: 간단한 로그 저장용도는 SSHFS가 설정이 훨씬 간편함
|
|
4. **SSH 키 파일 명시**: -o IdentityFile 옵션으로 특정 키 파일 지정 필요
|
|
5. **처음부터 템플릿 설계**: 하드코딩은 나중에 고통
|
|
6. **권한 문제는 미리 해결**: Docker UID/GID 차이 주의
|
|
7. **자동화는 필수**: 수동 작업은 실수의 원인
|
|
|
|
## 실제 구현 상태
|
|
- **250801 크론잡 방식으로 구현 완료**
|
|
- 매일 새벽 3시 자동 동기화 중
|
|
- 7일 이상 로컬 로그 자동 삭제
|
|
|
|
---
|
|
|
|
작성일: 2025-07-31
|
|
작성자: Claude (51123 서버 - SSH 키 등록 및 디렉토리 생성)
|
|
Claude (51124 서버 - SSHFS 설정 및 마운트)
|
|
로컬 개발자 (템플릿 해결책 제안)
|
|
주제: 로그 저장소 중앙화를 위한 SSHFS 설정과 템플릿 기반 자동화 |