🔴 문제: qwen3:30b가 채팅에서 500 에러
증상
- 벤치마크: ✅ 정상 (68.69 tok/s, 1위)
- 채팅 (Open WebUI): ❌ 500 에러 (모델 로드 실패)
원인 분석
1단계: 원격 서버 접속 및 로그 확인
| |
발견:
GGML_ASSERT(ggml_nbytes(src0) <= INT_MAX) failed
llama runner 프로세스 crash (exit status 2)
원인: qwen3:30b의 MoE (Mixture of Experts) 아키텍처 때문에 특정 텐서가 INT32 최대값을 초과합니다.
🔧 해결 방법: Docker → 호스트 바이너리로 전환
왜 Docker에서만 실패했나?
로컬 벤치마크 (호스트 바이너리): ✅ 성공
- 벤치마크 스크립트가 호스트의 올라마 바이너리를 직접 사용
- CUDA 환경이 온전히 활용됨
Docker 채팅 (컨테이너화된 ollama): ❌ 실패
- Docker 환경에서 CUDA 드라이버 호환성 문제
- MoE 모델의 특정 텐서 처리 실패
해결 절차
1단계: Docker 올라마 중지
| |
2단계: 호스트 바이너리 ollama serve 시작
| |
3단계: systemd 서비스로 자동 실행 설정
| |
⚠️ 중요: 환경변수 설정
처음 실패한 방법:
| |
올바른 방법:
| |
이유: Ollama는 --host 커맨드라인 옵션을 지원하지 않음. OLLAMA_HOST 환경변수로만 지정 가능.
병렬 처리 설정
Docker에서 사용하던 설정을 그대로 적용:
| |
🌐 Nginx 프록시 문제: 502 Bad Gateway
문제 상황
설정: Main 서버 (58880) → 포트포워딩 → 원격 서버 (8080, Nginx) → ollama (11434)
결과: 502 Bad Gateway
원인 분석
1. Upstream 호스트 분석
| |
문제:
upstream ollama_backend {
server ollama-1:11434 # ❌ 종료된 Docker 컨테이너
server ollama-2:11434 # ❌ 종료된 Docker 컨테이너
}
Nginx는 여전히 종료된 Docker 컨테이너들을 참조하고 있었습니다!
해결: Nginx 재구성
1단계: 기존 Nginx 삭제
| |
2단계: 새로운 설정 적용
| |
⚠️ 주의: Host 헤더
처음 시도 (실패):
| |
결과: 400 Bad Request: malformed Host header
올바른 설정:
| |
🔐 보안: VPN 경유 SSH 접속
배경
처음: SSH 직접 접속 (포트 5022)
| |
최종: VPN 경유 (내부 IP)
| |
VPN 설정 파일
위치: ~/.ssh/chloe-main.ovpn
포트: UDP 51194
📊 최종 상태
| 항목 | 상태 | 상세 |
|---|---|---|
| Ollama 서비스 | ✅ 정상 | 호스트 바이너리 + systemd |
| qwen3:30b | ✅ 정상 | 68.69 tok/s (1위) |
| 병렬 처리 | ✅ 정상 | 동시 5개, 큐 512개 |
| 포트포워딩 | ✅ 정상 | 외부 58880 → 내부 8080 |
| Nginx 프록시 | ✅ 정상 | |
| SSH 접속 | ✅ VPN | 내부 IP |
💡 교훈
1. Docker vs 호스트 바이너리
- CUDA 호환성: 벤치마크와 실제 환경이 다를 수 있음
- MoE 모델: Docker에서 INT32 오버플로우 가능
- 해결: 문제 발생 시 호스트 바이너리로 전환 검토
2. 환경변수 설정
- Ollama는
--host옵션 미지원 →OLLAMA_HOST환경변수 사용 - systemd Service에서
Environment=섹션으로 설정
3. 프록시 설정
- upstream에서 실제 호스트/포트 명시 (DNS 이름 아님)
- Host 헤더는 백엔드가 기대하는 형식으로 설정
4. 포트포워딩 + 프록시
- 포트포워딩으로 들어오는 요청의 Host 헤더가 변형됨
- 필요시 명시적으로 백엔드 주소로 재설정
🔍 향후 개선 계획
VPN 자동화 (systemd 서비스)
- 백그라운드에서 항상 VPN 유지
- 아침/저녁 자동 켜기/끄기
iptables 접근 제어
- Main 서버(
)에서만 SSH 포트 5022 허용 - VPN 없이도 필요시 빠른 접속
- Main 서버(
모니터링 강화
- Ollama 서비스 다운 감지
- Nginx 상태 헬스체크
다음 단계: qwen3:30b 안정성 검증 및 다른 MoE 모델 테스트