Core open source technologies of an open source cloud platform


1. Hypervisor

Nền tảng của các đám mây ở cấp độ nút là hypervisor. Mặc dù ảo hóa không phải là một yêu cầu bắt buộc nhưng nó cung cấp khả năng không thể thiếu cho kiến trúc có khả năng mở rộng và sử dụng tài nguyên tính toán, năng lượng hiệu quả. Hiện tồn tại một số giải pháp ảo hóa nguồn mở chạy trên hệ điều hành Linux nhưng hai giải pháp chủ yếu được dùng là: KVM (Kernel Virtual Machine) và Lguest.

KVM là một hypervisor đáng tin cậy, được triển khai rộng rãi. Lguest là một giải pháp chỉ tập trung hỗ trợ chạy các máy ảo Linux, được tích hợp thẳng vào Linux kernel. Xen là hypervisor khác cũng được sử dụng rộng rãi trong các giải pháp IaaS riêng lẫn công cộng.

Ngoài cách sử dụng một hypervisor chạy trên nền của Linux kernel thì có những giải pháp khác mà có cách tiếp cận tập trung vào máy ảo và User-Mode Linux (UML) là một trong các cách như vậy. Về cơ bản, nó sẽ sửa đổi Linux kernel để biến nó trở thành một máy ảo chạy trên một hệ điều hành Linux khác mà không cần tới hypervisor. Bởi vì nhiều người dùng muốn chạy một Linux kernel chưa bị sửa đổi, giải pháp ảo hóa đầy đủ (full virtualization) như KVM được ưa dùng hơn.

Cách tiếp cận UML này cũng rất phổ biến, nhưng đòi hỏi các phần cứng khác cũng phải được ảo hóa như giao tiếp điều khiển, đĩa ảo, và mạng.

2. Device emulation

Hypervisor cung cấp phương tiện để chia sẻ CPU vậ lý giữa nhiều hệ điều hành (CPU virtualization), nhưng để cung cấp ảo hóa đầy đủ, toàn bộ môi trường bao gồm các phần cứng khác cũng phải được ảo hóa để cho các máy ảo có thể dùng được. QEMU là một phần mềm nguồn mở có khả năng hỗ trợ cho nhiều hypervisor khác nhau. Nó có thể được dùng làm một hypervisor hoàn chỉnh nhưng KVM chỉ sử dụng QEMU làm trình giả lập thiết bị chạy trong user-space. Một tính năng thú vị của QEMU là nó có thể ảo hóa đĩa cứng (thông qua định dạng qcow). Ngoài ra, QEMU còn cung cấp các tính năng cao cấp khác như snapshot và live VM migration.

3. Network virtualization

Do việc hợp nhất các máy ảo trên các máy chủ vật lý nên nhu cầu về mạng càng được tăng cường. Nhưng thay vì ép tất cả các kết nối mạng giữa các máy ảo phải đi qua lớp vật lý của máy chủ thì các cuộc truyền thông cục bộ giữa các máy ảo có thể được ảo hóa. Để tối ưu hóa mạng lưới truyền thông giữa các máy ảo, người ta đề ra các switch ảo (vSwitch hay virtual switch). CácvSwitch có cơ chế hoạt động hệt như một switch vật lý, nhưng chỉ là sự ảo hóa trên nền tảng của máy chủ (xem Hình 3). Trong hình 3 này, các giao diện ảo hóa (VIF – Virtual Interface) được liên kết với các máy ảo sẽ giao tiếp với nhau thông qua vSwitch rồi đi tới các giao diện vật lý (PIF – Physical Interface).

Các giải pháp mã nguồn mở đang giải quyết vấn đề này khá tốt, với một giải pháp rất thú vị được gọi là Open vSwitch. Ngoài việc cung cấp một switch ảo cho các môi trường ảo hóa, vSwitch cũng có thể tích hợp trên nền tảng phần cứng vật lý và cung cấp các tính năng thường thấy trong các doanh nghiệp như VLAN, priority-based QoS, trunking, hardware acceleration (ví dụ card mạng có hỗ trợ single-root I/O virtualization [IOV]). Open vSwitch hiện có sẵn cho Linux 2.6.15 và hỗ trợ một loạt các giải pháp ảo hóa dựa trên Linux (Xen, KVM, VirtualBox) và các tiêu chuẩn quản lý như RSPAN, NetFlow, v.v..

4. VM tools

Khi mà các máy ảo đã là một tập hợp của hệ điều hành, hệ thống tập tin và các cấu hình, thì sẽ tới thời điểm để phát triển các tiêu chuẩn và công cụ hỗ trợ cho nó. Một trong số đó là OVF (Open Virtualization Format), nó sẽ bao bọc một virtual disk image trong một XML wrapper mà định nghĩa ra cấu hình của máy ảo, bao gồm các cấu hình mạng, bộ vi xử lý, bộ nhớ và một loạt các metadata mở rộng khác để định nghĩa thêm các nhu cầu dành cho nền tảng mà image đó sẽ chạy trên.

Một số tiện ích được tạo ra để quản lý các virtual machine image cũng như chuyển đổi chúng sang các định dạng khác. ovftool từ VMware là một công cụ hữu ích mà ta có thể sử dụng để chuyển đổi định dạng của một VMI (ví dụ, để chuyển đổi từ định dạng VMDK sang OVF). Công cụ này và những thứ tương tự khác rất hữu ích khi có một VMI cần chuyển đổi, nhưng liệu có thể chuyển đổi một máy chủ vật thành một VMI hay không? Câu trả lời là hoàn toàn có thể và Clonezilla là một công cụ phục vụ cho mục đích này. Mặc dù ban đầu nó được phát triển như một công cụ nhân bản ổ đĩa (disk-clone) để sao lưu dự phòng khi có sự cố xảy ra với máy vật lý nhưng ta vẫn có thể sử dụng nó để chuyển đổi một máy vật lý thành một máy ảo để dễ dàng triển khai các máy ảo được nhân bản đó. Nhiều công cụ khác tồn tại (ví dụ như các tiện ích được xây dựng dựa trên libvirt) hoặc đang được phát triển cho mục đích chuyển đổi và quản lý các VMI khi mà định dạng mở OVF đang dần phổ biến song song với các định dạng đóng khác như VMDK, VHD.

5. Virtual machine management

Red Hat đã giới thiệu thư viện libvirt như là một API để quản lý cho phần ảo hóa gồm hypervisor và các máy ảo. libvirt hỗ trợ nhiều giải pháp hypervisor (KVM và Xen là hai trong số đó) và còn cung cấp API cho một số ngôn ngữ như C, Python, và Ruby. Nó có thể coi là “chặng cuối” của cơ chế quản lý vì sẽ đảm nhận việc giao tiếp trực tiếp với hypervisor và các API của nó sẽ trợ giúp hình thành nên các giải pháp quản lý cơ sở hạ tầng ảo hóa tiện dụng hơn. Với libvirt, thật đơn giản để khởi chạy và tạm ngừng các máy ảo và ngoài ra thì nó còn cung cấp các API cho các thao tác nâng cao hơn, chẳng hạn như di chuyển các máy ảo giữa các máy chủ vật lý. Cuối cùng, ta cũng có thể dùng virsh, được coi là shell của libvirt để quản lý các máy ảo.

6. Cloud infrastructure management

Quản lý cơ sở hạ tầng với quy mô lớn bao gồm rất nhiều hypervisor và các VM có thể được thực hiện theo nhiều cách. oVirt và VirtManager là hai trong số các giải pháp phổ biến và chúng đều được xây dựng từ cùng một nền tảng thư viên chung là libvirt.

Gói oVirt là một công cụ quản lý máy ảo mở quy mô nhỏ tầm một vài máy ảo cho đến hàng ngàn máy ảo đang chạy trên hàng trăm máy chủ vật lý. oVirt được viết bằng Python bởi Red Hat, cung cấp giao diện quản lý dựa trên nền web và ngoài các chức năng quản lý máy ảo cơ bản thì nó còn hỗ trợ tự động hóa việc gom nhóm các máy chủ (server clustering) và cân bằng tải.

VirtManager, cũng dựa trên libvirt và được phát triển bởi Red Hat, là một ứng dụng có giao diện người dùng dựa trên thư viện GTK +. VirtManager cung cấp một màn hình hiển thị với đồ họa phong phú hơn và bao gồm một chương trình VNC viewer cho phép người dùng tương tác với VM từ xa.

Puppet là một gói phần mềm mã nguồn mở khác tuy không được thiết kế chuyên cho môi trường ảo hóa nhưng nó vẫn giúp đơn giản hóa việc quản lý cơ sở hạ tầng quy mô lớn và đây thực sự là một công cụ lý tưởng giúp tự động hóa nhiều tác vụ quản lý cho một số lượng lớn các máy chủ và được sử dụng rộng rãi trong ngày nay.

7. Các công nghệ khác
???
—–

Bài được lược dịch từ nguồn trên IBM Developer tại:
http://www.ibm.com/developerworks/opensource/library/os-cloud-anatomy/index.html

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s