TransWorker/REMOTE_SETUP.md

232 lines
5.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 원격 워커 설치 및 실행 가이드
이 가이드는 별도의 서버/컴퓨터에서 워커를 실행하여 메인서버와 연결하는 방법을 설명합니다.
## 1. 메인서버 설정 (이미 완료)
### Redis 포트 열기
```bash
# 메인서버에서 실행
sudo ufw allow 6379/tcp
```
### Docker Redis 외부 접속 확인
```bash
docker ps | grep redis
# 출력: 0.0.0.0:6379->6379/tcp 확인
```
## 2. 원격지 서버 설정
### 2.1 저장소 클론
```bash
git clone https://github.com/your-repo/worker-system.git
cd worker-system
```
### 2.2 Python 가상환경 생성
```bash
# Python 3.8+ 필요
python3 -m venv .
source bin/activate
# 또는 기존 가상환경이 있다면
source bin/activate
```
### 2.3 패키지 설치
```bash
# 기본 패키지 설치
pip install -r requirements.txt
# 누락된 패키지가 있다면 개별 설치
pip install simple-lama-inpainting translatepy celery redis
```
### 2.4 GPU 환경 설정 (선택사항)
```bash
# CUDA 사용 가능한 경우
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu118
# 또는 시스템에 맞는 PyTorch 설치
```
## 3. 워커 실행
### 3.1 메인서버 IP 확인
메인서버의 실제 IP 주소를 확인하세요:
- 내부 네트워크: `192.168.x.x`, `10.x.x.x`
- 외부 네트워크: 공인 IP 주소
### 3.2 네트워크 연결 테스트
```bash
# Redis 서버 연결 테스트
redis-cli -h 메인서버IP -p 6379 ping
# 응답: PONG
# 또는 telnet으로 테스트
telnet 메인서버IP 6379
```
### 3.3 워커 시작
#### 방법 1: 자동 스크립트 사용 (권장)
```bash
# 메인서버 IP를 실제 IP로 변경
MAIN_SERVER_IP=192.168.1.100 ./start_worker.sh
# 동시 처리 수 조정
MAIN_SERVER_IP=192.168.1.100 CONCURRENCY=4 ./start_worker.sh
# 원격 모드로 명시적 실행
MAIN_SERVER_IP=192.168.1.100 WORKER_MODE=remote ./start_worker.sh
```
#### 방법 2: 직접 실행
```bash
# 가상환경 활성화
source bin/activate
# 워커 실행
python worker.py \
--redis-url redis://메인서버IP:6379/0 \
--main-server 메인서버IP \
--worker-name worker-원격서버명 \
--concurrency 2
```
#### 방법 3: Docker 실행
```bash
# docker-compose.yml의 Redis URL 수정 후
MAIN_SERVER_IP=192.168.1.100 WORKER_MODE=docker ./start_worker.sh
```
## 4. 워커 상태 확인
### 4.1 메인서버에서 확인
```bash
# 메인서버에서 실행
python test_worker_client.py --test-type status
# 출력 예시:
# 활성 워커:
# celery@메인서버: 0개 작업 실행 중
# worker-원격서버@hostname: 0개 작업 실행 중
```
### 4.2 Flower 대시보드 확인
메인서버에서 Flower가 실행 중이라면:
```
http://메인서버IP:5555
```
## 5. 설정 예시
### 환경별 설정 예시
#### 같은 네트워크 내 서버
```bash
# 메인서버: 192.168.1.100
# 워커서버: 192.168.1.200
MAIN_SERVER_IP=192.168.1.100 \
WORKER_NAME=worker-gpu-server \
CONCURRENCY=4 \
./start_worker.sh
```
#### 클라우드 환경
```bash
# 메인서버: 퍼블릭 IP 또는 도메인
MAIN_SERVER_IP=your-server.com \
WORKER_NAME=worker-cloud-gpu \
CONCURRENCY=2 \
./start_worker.sh
```
#### 다중 워커 실행
```bash
# 서버1
MAIN_SERVER_IP=192.168.1.100 WORKER_NAME=worker-gpu1 ./start_worker.sh &
# 서버2
MAIN_SERVER_IP=192.168.1.100 WORKER_NAME=worker-gpu2 ./start_worker.sh &
```
## 6. 문제 해결
### 6.1 연결 실패
```bash
# Redis 연결 확인
redis-cli -h 메인서버IP -p 6379 ping
# 방화벽 확인 (메인서버)
sudo ufw status | grep 6379
# 네트워크 연결 확인
ping 메인서버IP
```
### 6.2 워커가 등록되지 않음
```bash
# 워커 로그 확인
tail -f worker.log
# Redis 연결 상태 확인
python -c "
import redis
r = redis.Redis(host='메인서버IP', port=6379, db=0)
print(r.ping())
"
```
### 6.3 패키지 오류
```bash
# 가상환경 재생성
rm -rf bin lib include pyvenv.cfg
python3 -m venv .
source bin/activate
pip install -r requirements.txt
```
### 6.4 GPU 메모리 부족
```bash
# 동시 처리 수 줄이기
CONCURRENCY=1 ./start_worker.sh
# GPU 메모리 모니터링
nvidia-smi
```
## 7. 보안 고려사항
### 7.1 Redis 보안
- 프로덕션 환경에서는 Redis에 비밀번호 설정 권장
- 방화벽에서 특정 IP만 허용하도록 설정
### 7.2 네트워크 보안
```bash
# 특정 IP만 허용 (메인서버에서 설정)
sudo ufw allow from 워커서버IP to any port 6379
sudo ufw delete allow 6379/tcp
```
## 8. 성능 최적화
### 8.1 동시 처리 수 조정
- **CPU 기반**: CPU 코어 수
- **GPU 기반**: GPU 메모리에 따라 1-2개
- **메모리 제한**: 이미지 크기 × 동시 처리 수 고려
### 8.2 네트워크 최적화
- 메인서버와 워커 간 네트워크 지연 최소화
- 가능한 같은 데이터센터/네트워크 사용
### 8.3 모니터링
```bash
# 시스템 리소스 모니터링
htop
nvidia-smi # GPU 사용 시
```
이제 원격지에서 `git clone` 후 메인서버 IP만 설정하면 워커를 쉽게 실행할 수 있습니다! 🚀