TransWorker/start_worker.sh

94 lines
3.2 KiB
Bash
Executable File

#!/bin/bash
# 워커 자동 시작 스크립트
echo "=== 이미지 처리 워커 시작 ==="
# 기본 설정 (원격 실행용)
# 메인서버 IP를 실제 IP로 변경하세요
MAIN_SERVER_IP=${MAIN_SERVER_IP:-"localhost"} # 원격지에서는 메인서버의 실제 IP 설정 필요
REDIS_URL=${REDIS_URL:-"redis://${MAIN_SERVER_IP}:6379/0"}
MAIN_SERVER=${MAIN_SERVER:-"$MAIN_SERVER_IP"}
CONCURRENCY=${CONCURRENCY:-"2"}
WORKER_MODE=${WORKER_MODE:-"local"}
WORKER_NAME=${WORKER_NAME:-"worker-$(hostname)-$$"}
echo "메인서버 IP: $MAIN_SERVER_IP"
echo "Redis URL: $REDIS_URL"
echo "메인 서버: $MAIN_SERVER"
echo "동시 처리 수: $CONCURRENCY"
echo "실행 모드: $WORKER_MODE"
echo "워커 이름: $WORKER_NAME"
# 원격 실행인지 확인
if [ "$MAIN_SERVER_IP" = "localhost" ]; then
echo ""
echo "⚠️ 경고: 원격지에서 실행하는 경우 메인서버 IP를 설정하세요!"
echo "사용법: MAIN_SERVER_IP=메인서버IP ./start_worker.sh"
echo "예시: MAIN_SERVER_IP=192.168.1.100 ./start_worker.sh"
echo ""
fi
case $WORKER_MODE in
"docker")
echo "Docker 모드로 워커 시작..."
docker-compose down
docker-compose build
docker-compose up -d
echo "워커 컨테이너 시작 완료!"
docker-compose logs -f worker
;;
"local")
echo "로컬 모드로 워커 시작..."
# 가상환경 활성화 확인
if [[ "$VIRTUAL_ENV" != "" ]]; then
echo "가상환경 활성화됨: $VIRTUAL_ENV"
else
echo "가상환경을 활성화하세요: source bin/activate"
if [ -f "bin/activate" ]; then
echo "자동으로 가상환경 활성화 중..."
source bin/activate
else
echo "❌ 가상환경을 찾을 수 없습니다. 먼저 설정하세요."
exit 1
fi
fi
python worker.py --concurrency $CONCURRENCY --redis-url $REDIS_URL --main-server $MAIN_SERVER --worker-name $WORKER_NAME
;;
"remote")
echo "원격 모드로 워커 시작..."
# 원격 모드는 local과 동일하지만 기본 설정이 원격용
if [[ "$VIRTUAL_ENV" != "" ]]; then
echo "가상환경 활성화됨: $VIRTUAL_ENV"
else
if [ -f "bin/activate" ]; then
echo "자동으로 가상환경 활성화 중..."
source bin/activate
else
echo "❌ 가상환경을 찾을 수 없습니다."
exit 1
fi
fi
python worker.py --concurrency $CONCURRENCY --redis-url $REDIS_URL --main-server $MAIN_SERVER --worker-name $WORKER_NAME
;;
*)
echo "사용법: WORKER_MODE=docker|local|remote ./start_worker.sh"
echo ""
echo "환경 변수:"
echo " MAIN_SERVER_IP: 메인서버 IP 주소 (필수 - 원격 실행시)"
echo " REDIS_URL: Redis 서버 URL"
echo " MAIN_SERVER: 메인 서버 주소"
echo " CONCURRENCY: 동시 처리 수 (기본값: 2)"
echo " WORKER_NAME: 워커 식별명"
echo ""
echo "원격 실행 예시:"
echo " MAIN_SERVER_IP=192.168.1.100 WORKER_MODE=remote ./start_worker.sh"
echo " MAIN_SERVER_IP=10.0.0.50 CONCURRENCY=4 ./start_worker.sh"
echo ""
exit 1
;;
esac