TransWorker/README.md

130 lines
2.8 KiB
Markdown

# 이미지 처리 워커 시스템
메인서버와 분리된 독립적인 이미지 처리 워커 시스템입니다.
## 🏗️ 아키텍처
```
클라이언트 → 메인서버 (FastAPI) → Redis → 워커 시스템 (ImageProcessor)
```
- **메인서버**: 클라이언트 요청 중계, 인증, API 제공
- **워커**: 실제 OCR, 번역, 인페인팅 작업 처리
- **Redis**: 작업 큐 및 결과 저장소
## 🚀 실행 방법
### 1. Docker 모드 (권장)
```bash
cd ~/work/worker-system
WORKER_MODE=docker ./start_worker.sh
```
### 2. 로컬 모드
```bash
cd ~/work/worker-system
WORKER_MODE=local ./start_worker.sh
```
### 3. 원격 모드
```bash
cd ~/work/worker-system
REDIS_URL="redis://메인서버IP:6379/0" WORKER_MODE=remote ./start_worker.sh
```
## ⚙️ 환경 변수
| 변수 | 설명 | 기본값 |
|------|------|--------|
| `REDIS_URL` | Redis 서버 주소 | `redis://localhost:6379/0` |
| `MAIN_SERVER_HOST` | 메인 서버 주소 | `localhost` |
| `CONCURRENCY` | 동시 처리 작업 수 | `2` |
| `WORKER_MODE` | 실행 모드 | `docker` |
## 📋 사용 예시
### 로컬에서 실행
```bash
# 기본 설정으로 실행
./start_worker.sh
# 동시 처리 수 조정
CONCURRENCY=4 ./start_worker.sh
# 원격 메인서버에 연결
REDIS_URL="redis://192.168.1.100:6379/0" MAIN_SERVER_HOST="192.168.1.100" ./start_worker.sh
```
### 원격 서버에서 실행
```bash
# 원격 서버에 워커 시스템 배포
scp -r ~/work/worker-system user@remote-server:~/
# 원격 서버에서 실행
ssh user@remote-server
cd ~/worker-system
REDIS_URL="redis://메인서버IP:6379/0" WORKER_MODE=docker ./start_worker.sh
```
## 🔧 개발 모드
### 직접 실행
```bash
python worker.py --concurrency 2 --redis-url redis://localhost:6379/0
```
### 특정 큐만 처리
```bash
python worker.py --concurrency 1 --redis-url redis://localhost:6379/0
```
## 📊 모니터링
Flower를 통해 워커 상태를 모니터링할 수 있습니다:
- 메인서버의 Flower: http://메인서버:5555
## 🔄 자동 재시작
systemd를 사용한 자동 재시작 설정:
```bash
# /etc/systemd/system/image-worker.service
[Unit]
Description=Image Processing Worker
After=docker.service
[Service]
Type=forking
User=ckh08045
WorkingDirectory=/home/ckh08045/work/worker-system
Environment=WORKER_MODE=docker
Environment=REDIS_URL=redis://localhost:6379/0
ExecStart=/home/ckh08045/work/worker-system/start_worker.sh
Restart=always
[Install]
WantedBy=multi-user.target
```
```bash
sudo systemctl enable image-worker
sudo systemctl start image-worker
```
## 🐛 문제 해결
### Redis 연결 오류
- 메인서버의 Redis가 실행 중인지 확인
- 포트 6379가 열려있는지 확인
- 방화벽 설정 확인
### Docker 권한 오류
```bash
sudo usermod -aG docker $USER
newgrp docker
```
### 의존성 오류
```bash
pip install -r requirements.txt
```