팀 AI와 멀티노드¶
팀이 성장해서 한 대의 머신으로 충분하지 않거나, GPU 다양성이 필요하거나, 장애 허용이 필요한 경우, Backend.AI GO의 멀티노드 클러스터링을 사용하면 여러 머신을 하나의 AI 인프라로 묶을 수 있습니다. 팀 구성원은 어떤 노드에든 연결하여 클러스터 전체의 모든 모델에 접근할 수 있으며, 어떤 물리 머신이 호스팅하는지 신경 쓸 필요가 없습니다.
이 가이드에서는 멀티노드 클러스터 설정, 외부 접근 구성, 팀 전체 사용을 위한 클러스터 관리 방법을 안내합니다.
멀티노드를 사용하는 이유¶
| 단일 노드 설정 | 멀티노드 클러스터 |
|---|---|
| GPU 하나, 머신 하나 | 여러 머신에 GPU를 풀링 |
| 한 번에 한 사용자 (또는 대기열) | 팀 전체가 동시 접근 |
| 단일 장애 지점 | 장애 허용 — 다른 노드가 계속 운영 |
| 하나의 하드웨어 유형으로 제한 | 하드웨어 혼합: Apple Silicon + NVIDIA + AMD |
사전 준비¶
시작하기 전에 다음을 확인하세요:
- Backend.AI GO가 설치된 두 대 이상의 머신
- 모든 머신이 같은 로컬 네트워크 (또는 VPN을 통해 접근 가능)에 있을 것
- 각 노드에 최소 하나의 모델이 다운로드되어 있을 것 (노드마다 다른 모델 가능)
- Continuum Router 포트(기본값:
39080)와 디스커버리 포트(기본값: mDNS용5353)에 대한 네트워크 방화벽 규칙 허용
아키텍처 개요¶
멀티노드 클러스터는 자동으로 서로를 발견하는 피어 노드로 구성됩니다:
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Node A │ │ Node B │ │ Node C │
│ (Mac Studio)│ │ (Linux GPU) │ │ (Windows) │
│ Llama 3 8B │◄──►│ Mistral 7B │◄──►│ Phi-3 │
│ MLX backend │ │ CUDA backend│ │ CUDA backend│
└──────────────┘ └──────────────┘ └──────────────┘
▲ ▲ ▲
└───────────────────┴───────────────────┘
mDNS Discovery
Continuum Router
- 노드 디스커버리: 노드는 로컬 네트워크에서 mDNS(Bonjour/Avahi)를 사용하여 서로를 발견합니다.
- Continuum Router: 각 노드의 라우터가 클러스터 전체의 사용 가능한 모델 목록을 유지하고 요청을 적절한 노드로 라우팅합니다.
- 중앙 서버 없음: 클러스터는 완전한 피어투피어 방식입니다. 다른 노드를 재구성하지 않고 어떤 노드든 추가하거나 제거할 수 있습니다.
멀티노드 클러스터 설정¶
1단계: 각 노드에서 외부 접근 활성화¶
기본적으로 Backend.AI GO는 API 서버를 localhost에만 바인딩합니다. 다른 노드와 팀 구성원이 연결할 수 있도록 외부 접근을 활성화하세요:
-
설정 > API 서버를 엽니다.
-
TCP 서버를 켠 다음 외부 액세스 허용을 활성화합니다.
-
Router 포트를 설정합니다 (기본값:
39080). 일관성을 위해 모든 노드에서 같은 포트를 사용하세요. -
설정 > API 서버 > 보안에서 배포 환경에 필요한 인증 정책을 활성화합니다.
-
설정 > API 서버 > 액세스 키에서 원격 클라이언트용 키를 만듭니다. 클러스터 전체가 하나의 클라이언트 키를 공유하는 대신, 피어 노드는 각자의 연결 키로 등록하세요.
보안
외부 접근을 활성화하면 네트워크에 API 서버가 노출됩니다. 팀 환경에서는 반드시 API 키를 설정하세요. 로컬 네트워크 밖에서의 접근에는 포트를 공용 인터넷에 노출하는 대신 VPN을 사용하세요.
2단계: 노드 디스커버리 활성화¶
노드 디스커버리를 통해 머신이 자동으로 서로를 찾을 수 있습니다.
-
설정 > 노드 > 이 컴퓨터 공유하기를 열어 다른 컴퓨터와 공유를 활성화합니다.
-
연결 방법에서 승인 없이 연결 허용 (같은 네트워크)을 활성화합니다. 같은 네트워크의 다른 컴퓨터가 연결 키 없이 연결할 수 있게 되므로, 신뢰할 수 있는 네트워크에서만 활성화하세요(자동 검색 참고).
-
노드가 자신의 존재를 브로드캐스트하고 다른 노드를 수신하기 시작합니다.
몇 초 내에 다른 컴퓨터의 설정 > 노드 > 다른 컴퓨터 연결하기에 있는 네트워크에 있는 컴퓨터에 노드가 나타납니다.
3단계: 클러스터 확인¶
두 개 이상의 노드가 공유 중이면 다음 순서로 확인합니다.
-
다른 노드를 사용할 노드에서 설정 > 노드 > 다른 컴퓨터 연결하기를 엽니다. 다른 노드는 네트워크에 있는 컴퓨터에 표시되며, 각 노드의 노드 추가를 클릭합니다.
-
추가한 노드는 연결된 컴퓨터에 다음 정보와 함께 표시됩니다.
- 이름과 주소
- ID
- 가속기와 모델 수
- 연결 상태 (온라인/오프라인)
-
모델 목록을 엽니다 — 모든 노드의 모델이 호스트 노드 표시와 함께 보입니다.
노드별 다른 모델
모든 노드에 같은 모델이 있을 필요는 없습니다. 일반적인 패턴은 각 머신에 다른 모델을 호스팅하여 팀이 더 다양한 모델에 접근할 수 있게 하는 것입니다 (예: GPU 서버에 대형 코딩 모델, Mac Mini에 빠른 채팅 모델).
4단계: 팀 구성원 연결¶
팀 구성원은 두 가지 방법으로 클러스터에 연결할 수 있습니다:
옵션 A: 자신의 머신에서 Backend.AI GO 실행
- 팀 구성원의 머신에 Backend.AI GO를 설치합니다.
- 노드 디스커버리를 활성화합니다 — 클러스터 노드가 자동으로 나타납니다.
- Continuum Router가 모델 라우팅을 투명하게 처리합니다.
옵션 B: OpenAI 호환 API 직접 사용
팀 구성원은 OpenAI 호환 클라이언트를 아무 노드의 API 엔드포인트에 연결할 수 있습니다:
curl http://<node-ip>:39080/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <api-key>" \
-d '{
"model": "llama-3-8b-instruct",
"messages": [{"role": "user", "content": "Hello"}]
}'
요청은 해당 모델을 호스팅하는 노드로 자동 라우팅됩니다.
클러스터 관리¶
부하 분산¶
같은 모델이 여러 노드에서 실행 중이면 Continuum Router가 요청을 분산합니다. 이를 통해:
- 높은 처리량: 여러 요청이 병렬로 처리됨
- 장애 허용: 한 노드가 오프라인이 되면 요청이 나머지 노드로 라우팅됨
새 노드 추가¶
- 새 머신에 Backend.AI GO를 설치합니다.
- 원하는 모델을 다운로드합니다.
- 설정 > API 서버에서 외부 액세스를 활성화하고, 설정 > 노드 > 이 컴퓨터 공유하기에서 다른 컴퓨터와 공유와 승인 없이 연결 허용 (같은 네트워크)을 활성화합니다.
- 다른 노드의 설정 > 노드 > 다른 컴퓨터 연결하기에 있는 네트워크에 있는 컴퓨터에 새 노드가 표시되고, 노드 추가로 연결 키 없이 추가할 수 있습니다. 기존 노드는 재시작할 필요가 없습니다.
노드 제거¶
머신에서 Backend.AI GO를 종료하거나 노드 디스커버리를 비활성화하면 됩니다. 다른 노드가 몇 초 내에 이탈을 감지하고 라우팅 테이블을 업데이트합니다.
모니터링¶
각 노드의 대시보드에는 다음이 표시됩니다:
- 클러스터 전체 모델 가용성
- 노드별 리소스 사용량 (CPU, GPU, 메모리)
- 요청 라우팅 통계
- 노드 헬스 상태
네트워크 설정¶
방화벽 규칙¶
클러스터 노드 간에 다음 포트가 열려 있는지 확인하세요:
| 포트 | 프로토콜 | 용도 |
|---|---|---|
39080 (또는 사용자 지정) | TCP | Continuum Router (모델 추론) |
5353 | UDP | mDNS 노드 디스커버리 |
VPN 고려사항¶
팀이 다른 네트워크에 분산되어 있는 경우:
- VPN(WireGuard 또는 Tailscale 등)을 사용하여 모든 노드를 가상 LAN에 배치하세요.
- 멀티캐스트를 지원하는 VPN 서브넷에서는 mDNS 디스커버리가 작동합니다.
- 연결 키로 노드를 추가할 수도 있습니다. 호스트 노드의 설정 > 노드 > 이 컴퓨터 공유하기에서 연결 키(aigo:// URL 또는 QR 코드)를 만든 뒤, 연결할 노드의 설정 > 노드 > 다른 컴퓨터 연결하기에서 붙여넣거나 스캔하세요.
Tailscale
Tailscale은 방화벽 규칙 설정 없이 모든 장치 간에 플랫 네트워크를 생성합니다. mDNS 포워딩을 지원하므로 분산된 Backend.AI GO 클러스터에서도 자동 노드 검색이 그대로 동작합니다.
보안 고려사항¶
| 우려 사항 | 권장 사항 |
|---|---|
| 무단 접근 | 모든 노드에 강력한 API 키 설정 |
| 전송 중 데이터 | 노드 간 암호화 통신을 위해 VPN 사용 |
| 노드 사칭 | 신뢰할 수 있는 네트워크에서만 클러스터 유지 |
| 모델 접근 제어 | 현재 모든 모델이 모든 클러스터 구성원에게 공유됩니다. 필요시 네트워크 수준에서 제한하세요. |
공용 인터넷에는 부적합
멀티노드 기능은 신뢰할 수 있는 로컬 네트워크와 VPN용으로 설계되었습니다. 추가 보안 계층(TLS 리버스 프록시, IP 허용 목록 등) 없이 Backend.AI GO 포트를 공용 인터넷에 직접 노출하지 마세요.
예제: 스타트업 팀 설정¶
5명의 개발자가 있는 스타트업이 팀 AI를 설정합니다:
하드웨어:
- Node A — Mac Studio M2 Ultra (192 GB) → Llama 3 70B (MLX, 4-bit) 호스팅
- Node B — RTX 4090이 장착된 Linux 워크스테이션 → CodeLlama 34B (CUDA) 호스팅
- Node C — Mac Mini M4 (32 GB) → Phi-3 Mini (빠른 작업용) 호스팅
설정:
- 세 대의 머신 모두 사무실 네트워크에 연결.
- 각 머신에 Backend.AI GO가 설치되고 외부 접근 및 노드 디스커버리 활성화.
- 모든 노드에 API 키
team-secret-key-2024설정. - 개발자들이 자신의 노트북에서 Backend.AI GO 실행 — 세 노드와 모델이 자동으로 나타남.
활용:
- 개발자들이 복잡한 추론 작업에 Llama 3 70B를 사용.
- CodeLlama 34B가 코드 생성과 리뷰를 처리.
- Phi-3 Mini가 최소 지연으로 빠른 채팅과 요약 요청을 처리.
- Node B가 유지보수로 다운되면 코드 생성 요청이 자동으로 사용 가능한 다음 노드로 장애 조치됨.
팁¶
- 하드웨어별 노드를 특화하세요. VRAM이 큰 GPU에서 대형 모델을, 에너지 효율적인 하드웨어에서 빠른 소형 모델을 실행하세요.
- 모든 노드에서 같은 API 키를 사용하면 클라이언트가 노드별 설정 없이 어느 노드에든 인증할 수 있습니다.
- 대시보드에서 리소스 사용량을 모니터링하여 병목 지점을 파악하고 용량을 계획하세요.
- 오프시간에 모델을 다운로드하세요. 대형 모델 다운로드는 클러스터 성능에 영향을 줄 수 있는 대역폭을 소비합니다.
- 호환성을 위해 모든 노드에서 Backend.AI GO를 같은 버전으로 업데이트하세요.
문제 해결¶
| 문제 | 해결 방법 |
|---|---|
| 노드가 서로를 발견하지 못함 | mDNS 포트(5353/UDP)가 열려 있는지 확인하세요. 모든 노드가 같은 서브넷에 있는지 확인하세요. 일부 기업 네트워크는 멀티캐스트를 차단합니다 — 대안으로 연결 키를 사용하여 노드를 수동 등록하세요. |
| 노드에 접근 시 "Connection refused" | 대상 노드에서 외부 접근이 활성화되어 있고 방화벽에서 API 포트가 열려 있는지 확인하세요. |
| 모델 요청이 잘못된 노드로 라우팅됨 | Continuum Router가 모델 가용성을 기반으로 선택합니다. 모델이 여러 노드에 있으면 라우팅은 자동입니다. 모델 이름이 정확히 일치하는지 확인하세요. |
| 많은 사용자로 인한 성능 저하 | 같은 인기 모델을 가진 노드를 추가하여 부하 분산을 활성화하세요. 빈번한 작업에는 더 빠른 모델 사용을 고려하세요. |
| 노드가 간헐적으로 오프라인으로 표시됨 | 네트워크 안정성을 확인하세요. 무선 연결은 디스커버리 플래핑을 유발할 수 있습니다 — 클러스터 노드에는 유선 연결을 선호하세요. |
관련 페이지¶
- 헤드리스 모드 — Backend.AI GO를 전용 서빙을 위한 백그라운드 서비스로 실행
- 클러스터 통합 — Backend.AI Enterprise 클러스터에 연결
- API로 앱 만들기 — OpenAI 호환 API 엔드포인트 활용
- 설정 — 네트워크 및 접근 설정 구성