콘텐츠로 이동

설치 가이드

이 가이드는 Continuum Router를 설치하고 설정하는 다양한 방법을 다룹니다.

시스템 요구 사항

  • 운영 체제: Linux, macOS, 또는 Windows (WSL2 통해)
  • 아키텍처: x86_64 또는 ARM64
  • 메모리: 최소 256MB RAM (512MB 권장)
  • 디스크 공간: 바이너리 및 설정을 위한 100MB

설치 방법

릴리스 바이너리에서 설치 (권장)

가장 쉬운 방법은 GitHub 릴리스에서 사전 빌드된 바이너리를 다운로드하는 것입니다.

Linux (x86_64)

# 최신 릴리스 다운로드
curl -L https://github.com/lablup/continuum-router/releases/latest/download/continuum-router-linux-x86_64.tar.gz | tar -xz

# PATH로 이동
sudo mv continuum-router /usr/local/bin/

# 설치 확인
continuum-router --version

Linux (aarch64)

# 최신 릴리스 다운로드
curl -L https://github.com/lablup/continuum-router/releases/latest/download/continuum-router-linux-aarch64.tar.gz | tar -xz

# PATH로 이동
sudo mv continuum-router /usr/local/bin/

# 설치 확인
continuum-router --version

macOS (Apple Silicon)

# 최신 릴리스 다운로드
curl -LO https://github.com/lablup/continuum-router/releases/latest/download/continuum-router-macos-aarch64.zip

# 압축 해제
unzip continuum-router-macos-aarch64.zip

# PATH로 이동
sudo mv continuum-router /usr/local/bin/

# 설치 확인
continuum-router --version

소스에서 빌드

소스에서 빌드하면 최신 기능을 사용하고 사용자 정의가 가능합니다.

사전 요구 사항

  • Rust 1.75 이상
  • Git
  • C 컴파일러 (gcc, clang, 또는 MSVC)

빌드 단계

# 저장소 복제
git clone https://github.com/lablup/continuum-router.git
cd continuum-router

# 개발 빌드 (빠른 컴파일, 큰 바이너리)
cargo build

# 개발 빌드 실행
./target/debug/continuum-router --version

# 최적화된 릴리스 빌드 (느린 컴파일, 작고 빠른 바이너리)
cargo build --release

# 릴리스 빌드 실행
./target/release/continuum-router --version

# 시스템에 설치 (선택 사항)
cargo install --path .

Docker 사용

Docker는 다양한 시스템에서 일관된 환경을 제공합니다.

Docker로 빠른 시작

# 기본 설정으로 실행
docker run -p 8080:8080 ghcr.io/lablup/continuum-router:latest

# 백엔드 설정과 함께 실행
docker run -p 8080:8080 \
  -e CONTINUUM_BACKEND_URLS="http://host.docker.internal:11434" \
  ghcr.io/lablup/continuum-router:latest

# 설정 파일과 함께 실행
docker run -p 8080:8080 \
  -v $(pwd)/config.yaml:/app/config.yaml \
  ghcr.io/lablup/continuum-router:latest

Docker Compose 설정

docker-compose.yml 파일을 생성하세요:

version: '3.8'
services:
  continuum-router:
    image: ghcr.io/lablup/continuum-router:latest
    ports:
      - "8080:8080"
    environment:
      - CONTINUUM_BACKEND_URLS=http://ollama:11434,http://lm-studio:1234
      - CONTINUUM_LOG_LEVEL=info
    volumes:
      - ./config.yaml:/app/config.yaml
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 5s

  # 예제: Ollama 백엔드
  ollama:
    image: ollama/ollama:latest
    volumes:
      - ollama_data:/root/.ollama
    ports:
      - "11434:11434"

volumes:
  ollama_data:

Docker Compose로 실행:

docker-compose up -d

Homebrew 사용 (macOS)

# 출시 예정
brew tap lablup/tap
brew install continuum-router

패키지 관리자 사용

Debian/Ubuntu (APT)

# 출시 예정
sudo add-apt-repository ppa:lablup/continuum-router
sudo apt update
sudo apt install continuum-router

RedHat/CentOS (YUM)

# 출시 예정
sudo yum install continuum-router

Arch Linux (AUR)

# 출시 예정
yay -S continuum-router

설치 후 설정

1. 설정 생성

# 기본 설정 생성
continuum-router --generate-config > config.yaml

# 모든 기능이 포함된 종합 설정 생성
continuum-router --generate-comprehensive-config > config.yaml

# 설정 편집
nano config.yaml

2. 시스템 서비스로 설정

Linux (systemd)

/etc/systemd/system/continuum-router.service를 생성하세요:

[Unit]
Description=Continuum Router - LLM API Router
After=network.target
Wants=network.target

[Service]
Type=simple
User=continuum
Group=continuum
WorkingDirectory=/opt/continuum-router
ExecStart=/usr/local/bin/continuum-router --config /etc/continuum-router/config.yaml
Restart=always
RestartSec=10

# 보안 설정
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/var/log/continuum-router

# 환경 변수
Environment=RUST_LOG=continuum_router=info
Environment=RUST_BACKTRACE=1

[Install]
WantedBy=multi-user.target

서비스 활성화 및 시작:

sudo systemctl daemon-reload
sudo systemctl enable continuum-router
sudo systemctl start continuum-router
sudo systemctl status continuum-router

macOS (launchd)

~/Library/LaunchAgents/com.lablup.continuum-router.plist를 생성하세요:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.lablup.continuum-router</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/continuum-router</string>
        <string>--config</string>
        <string>/usr/local/etc/continuum-router/config.yaml</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
    <key>StandardOutPath</key>
    <string>/usr/local/var/log/continuum-router.log</string>
    <key>StandardErrorPath</key>
    <string>/usr/local/var/log/continuum-router.error.log</string>
</dict>
</plist>

서비스 로드:

launchctl load ~/Library/LaunchAgents/com.lablup.continuum-router.plist
launchctl start com.lablup.continuum-router

3. 설치 확인

# 버전 확인
continuum-router --version

# 헬스 엔드포인트 테스트
curl http://localhost:8080/health

# 사용 가능한 모델 목록
curl http://localhost:8080/v1/models

# 백엔드 상태 확인
curl http://localhost:8080/admin/backends

업그레이드

바이너리 설치

# 새 버전 다운로드
curl -L https://github.com/lablup/continuum-router/releases/latest/download/continuum-router-linux-x86_64.tar.gz | tar -xz

# 이전 바이너리 백업
sudo mv /usr/local/bin/continuum-router /usr/local/bin/continuum-router.backup

# 새 바이너리 설치
sudo mv continuum-router /usr/local/bin/

# 서비스 재시작
sudo systemctl restart continuum-router

Docker

# 최신 이미지 가져오기
docker pull ghcr.io/lablup/continuum-router:latest

# 컨테이너 재시작
docker-compose down
docker-compose up -d

소스에서

cd backend.ai-continuum/continuum-router
git pull
cargo build --release
sudo mv target/release/continuum-router /usr/local/bin/
sudo systemctl restart continuum-router

제거

바이너리 설치

# 서비스 중지
sudo systemctl stop continuum-router
sudo systemctl disable continuum-router

# 바이너리 제거
sudo rm /usr/local/bin/continuum-router

# 설정 제거
sudo rm -rf /etc/continuum-router

# 서비스 파일 제거
sudo rm /etc/systemd/system/continuum-router.service
sudo systemctl daemon-reload

Docker

# 컨테이너 중지 및 제거
docker-compose down

# 이미지 제거
docker rmi ghcr.io/lablup/continuum-router:latest

# 볼륨 제거 (있는 경우)
docker volume prune

문제 해결

권한 거부

# 바이너리 실행 가능하게 만들기
chmod +x continuum-router

# 시스템 디렉토리의 경우 sudo 사용
sudo mv continuum-router /usr/local/bin/

포트가 이미 사용 중

# 포트 8080을 사용 중인 프로세스 확인
lsof -i :8080

# 다른 포트 사용
continuum-router --bind-address 0.0.0.0:9090

서비스가 시작되지 않음

# 로그 확인
journalctl -u continuum-router -f

# 설정 유효성 검사
continuum-router --config config.yaml --validate

# 디버깅을 위해 포그라운드에서 실행
continuum-router --config config.yaml --log-level debug

Docker 네트워크 문제

# 호스트 네트워크 모드 사용
docker run --network host ghcr.io/lablup/continuum-router:latest

# 또는 백엔드 IP를 명시적으로 지정
docker run -e CONTINUUM_BACKEND_URLS="http://172.17.0.2:11434" ...

다음 단계