Glance에서 제공해주는 이미지를 이용하여 인스턴스를 생성하여 제공한다.
Nova-api
user의 api 호출에 대해 반응을 한다.
instance의 실행, 정책 부분을 담당한다.
orchestration을 진행한다.
Nova-compute
하이퍼바이저를 통해 instance의 생성 및 삭제에 직접적으로 담당한다.
보통적으로 Controller, Compute node를 분리해서 실행 할 경우 compute node에서 담당한다.
하이퍼바이저의 경우 3개의 그룹에 지원한다.
KVM, Qemu
Hyper-V, VMware, Xenserver
baremetal, docker
Database와 상호 작용하며 인스턴스의 메타데이터를 업데이트한다.
Nova-scheduler
Queue를 통해 요청된 사항에 대해 가용가능한 compute node를 선정하게 되는 역할을 하게된다.
Database에 등록된 metadata를 바탕으로 판단한다.
Nova-conductor
Nova-compute가 직접적으로 데이터베이스에 접근하는 것을 막기 위해 존재한다.
Database
Nova-compute의 상태 및 인스턴스의 metadata를 저장하고 있다.
placement와 지속적으로 통신이 이루어진다.
여기도 마찬가지로 database에 삭제된 instance에 대한 정보가 그대로 남아있다.
Nova-cert
EC2 API를 사용할때만 필요한 서비스
Horizon 혹은 CLI를 통해 nova-api(인스턴스 생성 혹은 삭제) 호출
Queue를 통해 호출 전달
생성의 경우 nova-scheduler를 통해 nova-compute의 가용구역 확인
Queue를 통해 nova-compute에 전달
Nova-compute의 hypervisor를 통해 인스턴스 생성 요청
Glance 이미지를 제공 받는다.
인스턴스 생성
Qemu vs KVMKVM
하드웨어에 직접적인 접근이 가능하다.
하나의 시스템을 여러개의 시스템 처럼 보이게 할 수 있다.
Host os에 종속적이게 될 수 있다.
Qemu
하드웨어에 직접적인 접근이 불가하다.
하나의 시스템이 다른 시스템으로 둔갑해 보일 수 있다.
소프트웨어적으로 특정 시스템을 구현이 필요하다
위의 이유때문에 상대적으로 느리다
추가 공부 목표cell
cell_v2
cell0의 경우 스케줄링에 실패한 데이터를 저장.
memcache와 queue의 부하를 덜기 위해 제안된 방법
기존의 방식은 3번의 데이터 베이스 조회를 기반으로 했지만 cell을 사용하면 2번만에 데이터 조회가 가능하다.
추후 공부가 더 필요할듯하다.
Quota
만들수 있는 instance 수를 제한하는 용도로 사용되어진다.
Oslo
코드의 일관되고 안정적인 배포를 위해 사용이 되어진다.