Key concept
Manager & Agent
- 사용자 요청을 수락하고, 세션을 생성 / 소멸하고, 코드 실행 요청을 적절한 에이전트 및 세션으로 라우팅
- 세션의 출력을 수집하고 사용자에게 응답함
- 커널 컨테이너의 수명주기를 관리 및 모니터링
- 세션의 입력 / 출력 조정
- 서버의 리소스 용량과 상태를 보고하여 관리자가 유휴 서버에 새 세션을 할당하여 부하를 분산 할 수 있음
Computing session & Kernel
Computing session : Backend.AI는 사용자 API 요청에 따라 컨테이너 형태로 컴퓨팅 세션을 생성함
Kernel : 각 컴퓨팅 세션에는 하나 이상의 컨테이너 (다른 노드에 분산 됨)가 있을 수 있으며 이러한 구성원 컨테이너를 "커널"이라고 함
- 에이전트는 필요한 경우 커널 이미지를 자동으로(?) 가져 와서 업데이트함
Cluster networking을 위한 조건
1. 관리자 서버 (HTTPS 443 포트)는 클라이언트가 액세스 할 수있는 공용 인터넷 또는 네트워크에 노출되어야함
2. 관리자, 에이전트 및 기타 모든 데이터베이스 / 스토리지 서버는 트래픽이 투명하게 허용되는 동일한 로컬 사설 네트워크에 있어야 함
3. 대용량 빅 데이터 처리의 경우 Infiniband 및 RoCE 어댑터와 같은 각 서버의 보조 네트워크 인터페이스를 사용하여 스토리지 용 네트워크를 분리 할 수 있어야 함
Database
1. Redis, PostgreSQL
- 키 쌍 및 리소스 사용 통계와 같은 사용자 메타 데이터를 저장
Configuration Management
대부분의 cluster-level 구성은 etcd server 혹은 cluster에 저장됨
etcd 서버는 서비스 검색에도 사용됨
새 에이전트가 부팅되면 etcd를 통해 클러스터 관리자에 등록됨
4. 프로덕션 배포의 경우 고 가용성을 유지하기 위해 홀수 (3개 이상)의 노드로 구성된 etcd 클러스터를 사용하는 것이 좋음
Virtual Folders
2. 사용자는 데이터 파일, 라이브러리 및 프로그램 코드를 저장하기 위해 자신 만의 (하나 이상의) 가상 폴더를 만들 수 있음
3. 각 vfolder (가상 폴더)는 지정된 스토리지 마운트 ( "vfolder 호스트"라고 함) 아래에 생성됨
5. Backend.AI v18.12부터 사용자는 읽기 전용 및 읽기-쓰기와 같은 차별화 된 권한으로 다른 사용자와 자신의 가상 폴더를 공유 할 수도 있음
6. Backend.AI cluster setup에서는 파일 시스템 내용이 모든 노드에서 동기화되는 경우, 각 노드 (관리자 및 에이전트 포함)에서 로컬 마운트 지점을 제공하는 모든 파일 시스템을 사용할 수 있음
8. 단일 노드 설정의 경우 빈 로컬 디렉토리를 사용할 수 있음
Manager & Agent (single node) 설치하기
조건
설치하기
sudo ./install-dev.sh ---> 참고로 여기 뒤에 -h를 붙이면 추가 옵션 확인(예: 기본 포트번호 변경)
.pyenv
scripts/backend.ai-dev/
혹은 scripts$ ./delete-dev.sh -e [environment ID]
# 설치시 Default로 설정되어 있는 포트번호를 변경하여 설치한다. 포트 번호 지정하기 전 해당 포트를 사용하고 있는 프로세스가 없는지 확인
sudo ./install-dev.sh --postgres-port 6100 --redis-port 6110 --etcd-port 6120
정상적으로 설치되는 것을 볼 수 있음. '_backendai-' 앞에 붙은 것은 environment id임
2) destination path 'backend.ai' already exists and is not an empty directory 에러
- scripts/backend.ai-dev/ 폴더 삭제해야 함
- .pyenv도 재삭제 후 처음부터 다시 시작해야 함