Tìm hiểu về Openstack Nova
Khái niệm tổng quan
Nova là một Openstack project mà cung cấp một cách để cấp phát và quản lí các instances(hay máy ảo). Nova hỗ trợ tạo máy ảo, server baremetal(thông qua Ironic), và hỗ trợ giới hạn với container. Nova chạy như một bộ các daemon trên Linux node, làm việc với trình ảo hóa thông qua drive để thực hiện việc cấp phát và quản lý máy ảo.
Nó yêu cấu một số dịch vụ khác của Openstack để có thể sử dụng được nhũng chức năng cơ bản:
- Keystone: Để xác thực và ủy quyền
- Glance: Cung cấp dịch vụ quản lý image cho compute.
- Neutron: Cung cấp mạng cho máy ảo của Compute
- Placement: Theo dõi số lượng tài nguyên còn lại trên cloud và hỗ trợ compute trong việc đưa gia quyết định tạo máy ảo trên host nào. Nova cũng có thể liên kết đến nhiều dịch vụ khác để cung cấp các tính năng nâng cao như block storage, encrypt disk, hay baremetal compute instances. Một số công cụ để làm việc với Nova:
- Horizon: Giao diện web cho dự án Openstack
- Openstack client: Là công cụ dòng lệnh chính thức của cho hầu hết tất cả các dịch vụ của Openstack, trong đó có Nova.
- Nova client: Là công cụ dòng lênh để làm việc với Nova. Có một số câu lệnh nậng cao mà Openstack Client không có. Openstack client vẫn được khuyến nghị hơn.
Kiến trúc hệ thống của Nova
Nova được xây dựng theo hướng microservice với nhiều thành phần để biểu diễn các chức năng khác nhau. Người dùng giao tiếp với Nova thông qua REST API, trong khi đó các thành phần của Nova sẽ giao tiếp với nhau sử dụng cơ chế truyền tin nhắn RPC.
API server xử lý các REST request, thường là thực hiện các read/write với database, hoặc các thành phần của Nova giao tiếp với nhau qua RPC message để có thể xử lý và tạo phản hồi cho REST calls. RPC message được thực hiện thông qua thư viện oslo.messaging.
Nova cũng sử dụng một database tập trung mà về mặt logic, nó chia sẻ với tất cả các thành phần của Nova. Nhưng để hỗ trợ nâng cấp thì database được truy cập thông qua một lớp đối tượng để đảm bảo trong quá trình nâng cấp, nova-compute của phiên bản trước đó vẫn có thể giao tiếp với DB mới. Để làm được điều này thì nova-compute chuyển hướng các database request qua RPC message đến một thành phần của Nova là nova-conductor.
Để mở rộng triển khai Nova theo chiều ngang, Cells cần được triển khải. Tìm hiểu thêm về cell tại đây
Các thành phần
- DB: sql database để lưu dữ liệu
- API: thành phần có nhiệm vụ nhận các HTTP request, chuyển đồi các câu lệnh và giao tiếp với các thành phần khác thông qua olso.messaging hoặc qua HTTP.
- Scheduler: Đưa ra quyết định máy ảo sẽ được chạy trên host nào.
- Compute: quản lý giao tiếp với hypervisor và máy ảo.
- Conductor: là một proxy cho database, chuyển tiếp các yêu cầu giữa nova-compupe và database.
Tài liệu tham khảo:
- https://docs.openstack.org/nova/train/
- https://docs.openstack.org/nova/train/user/architecture.html