# 이미지 처리 워커 시스템 메인서버와 분리된 독립적인 이미지 처리 워커 시스템입니다. ## 🏗️ 아키텍처 ``` 클라이언트 → 메인서버 (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 ```