Thursday, March 15, 2012

Cấu trúc của một đám mây nguồn mở



Cấu trúc của một đám mây nguồn mở


Các khối xây dựng cho cơ sở hạ tầng như một dịch vụ


Tóm tắt:  Điện toán đám mây không còn là một công nghệ ở đỉnh điểm bùng nổ nữa mà là một công nghệ có giá trị và quan trọng đang thay đổi cơ bản cách chúng ta sử dụng và phát triển các ứng dụng. Như bạn mong đợi, Linux® và mã nguồn mở cung cấp nền tảng cho đám mây (dành cho cơ sở hạ tầng công cộng và riêng tư). Hãy nghiên cứu cấu trúc đám mây, kiến trúc của nó và các công nghệ mã nguồn mở được sử dụng để xây dựng các nền tảng điện toán và lưu trữ có khả năng mở rộng và năng động.


Ngày:  12- 07- 2011
Bản gốc tiếng Anh  tại đây 


Việc sử dụng đám mây như là một khái niệm trừu tượng khá phổ biến với hệ thống phân tán là Internet, nhưng một vài năm qua đã cho thấy khái niệm trừu tượng này được mở rộng để hợp nhất các cơ sở hạ tầng có khả năng mở rộng và được ảo hóa mức độ cao, dễ dàng được cung cấp như một dịch vụ (hoặc cục bộ hoặc từ xa). Bài viết này bỏ qua định nghĩa chi tiết về kiến trúc đám mây và các lợi ích của nó và thay vào đó hãy tham chiếu các tài liệu nên đọc trong phần Tài nguyên.

Cấu trúc điện toán đám mây

Bài viết này bắt đầu bằng việc xem xét các khái niệm trừu tượng cốt lõi của kiến trúc đám mây (từ cơ sở hạ tầng như một dịch vụ [IaaS: Infrastructure as a Service]), sau đó bước ra ngoài các khối xây dựng tới các giải pháp tích hợp cao hơn.

Những chữ viết tắt thường dùng


  • API: Giao diện lập trình ứng dụng.

  • I/O: Vào/ra.

  • SLA: Thỏa thuận mức dịch vụ

  • UI: Giao diện người dùng.



Mặc dù không phải là một yêu cầu, nhưng công nghệ ảo hóa mang lại các lợi ích có một không hai để xây dựng các kiến trúc có khả năng mở rộng động. Ngoài khả năng mở rộng, công nghệ ảo hóa còn đưa vào khả năng di chuyển các máy ảo (VM) giữa các máy chủ vật dùng cho các mục đích cân bằng tải. Hình 1 cho thấy rằng thành phần ảo hóa được tạo ra bởi một tầng phần mềm có tên là tầng siêu giám sát -hypervisor (đôi khi được gọi là giám sát máy ảo [VMM]). Tầng này tạo ra khả năng chạy đồng thời nhiều hệ điều hành (và các ứng dụng của chúng) trên một máy tính vật lý. Trên tầng siêu giám sát là đối tượng gọi là máy ảo chứa đựng hệ điều hành, các ứng dụng và cấu hình. Theo tùy chọn, sự mô phỏng thiết bị có thể được tạo ra trong tầng siêu giám sát hoặc như là một máy ảo. Cuối cùng, do tính chất năng động mới của công nghệ ảo hóa và các khả năng mới do nó mang lại, cần có các lược đồ quản lý mới. Việc quản lý này tốt nhất được thực hiện trong các tầng, khi tính đến quản lý cục bộ tại máy chủ, cũng như quản lý cơ sở hạ tầng mức cao hơn, tạo ra sự phối hợp tổng thể của môi trường ảo.
Hình 1. Các phần tử cốt lõi của một nút trong đám mây

Nếu bạn lấy các nút mạng như Hình 1 và nhân chúng lên nhiều lần trên một mạng vật lý với lưu trữ có chia sẻ, phối hợp quản lý trên toàn bộ cơ sở hạ tầng, rồi cung cấp cân bằng tải ban đầu của các kết nối đến (cho dù theo cách thiết lập công cộng hay riêng tư) với việc lưu trữ nhanh và lọc, bạn có một cơ sở hạ tầng ảo được gọi là đám mây. Cấu trúc mới này được chỉ ra trong Hình 2. Các máy không hoạt động có thể được tắt nguồn điện cho đến khi cần bổ sung thêm khả năng tính toán (tạo ra hiệu năng tốt hơn), với các máy ảo được cân bằng (thậm chí là động) trên các nút tùy thuộc vào tải riêng của chúng.
Hình 2. Cơ sở hạ tầng điện toán đám mây


Với kiến trúc cơ bản của một đám mây đã xác định, bây giờ chúng ta hãy tìm hiểu xem nguồn mở đang được áp dụng ở đâu để xây dựng cơ sở hạ tầng điện toán đám mây động.

Về đầu trang

Các công nghệ mã nguồn mở cốt lõi

Bối cảnh Linux đang chứng kiến một làn sóng phát triển tập trung vào các cơ sở hạ tầng được ảo hóa dành cho việc ảo hóa, quản lý và tích hợp với quy mô lớn hơn của các gói phần mềm đám mây. Chúng ta hãy bắt đầu xem xét mã nguồn mở ở cấp nút mạng riêng lẻ, sau đó chuyển lên toàn bộ cơ sở hạ tầng để xem chuyện gì đang xảy ra ở đây.

Các tầng siêu giám sát

Cơ sở của đám mây ở cấp nút mạng là tầng siêu giám sát. Mặc dù việc ảo hóa không phải là một yêu cầu, nhưng nó cung cấp khả năng không thể thiếu được cho các kiến trúc có khả năng mở rộng và có hiệu năng. Ở đó tồn tại một số giải pháp ảo hóa mã nguồn mở, nhưng có hai giải pháp chủ yếu là chuyển đổi hệ điều hành Linux thành một tầng siêu giám sát: KVM (Linux Kernel Virtual Machine - Máy ảo nhân Linux) và Lguest. KVM là giải pháp tầng siêu giám sát chính thức, được triển khai trong môi trường sản xuất. Lguest là một giải pháp tập trung vào Linux, chỉ chạy các máy ảo Linux, nhưng được tích hợp trong nhân (kernel) và đang được sử dụng rộng rãi hơn.

Ngoài việc chuyển đổi Linux thành tầng siêu giám sát, có những giải pháp khác chọn cách tiếp cận tập trung vào máy ảo khách. UML (User-Mode Linux - Linux trong chế độ người dùng) là một cách tiếp cận, sửa đổi nhân (kernel) Linux máy khách để chạy trên hệ điều hành Linux (không có phần mở rộng tầng siêu giám sát). Vì hầu hết người dùng muốn chạy một nhân chưa sửa đổi, nên các giải pháp ảo hóa đầy đủ (như KVM) được ưa thích hơn.

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

Mô phỏng thiết bị

Tầng siêu giám sát cung cấp các phương tiện để chia sẻ CPU với nhiều hệ điều hành (ảo hóa CPU), nhưng để cung cấp công nghệ ảo hóa đầy đủ, toàn bộ môi trường phải được ảo hóa cho các máy ảo. Việc mô phỏng máy — hay nền tảng — có thể được thực hiện theo một số cách, nhưng một gói mã nguồn mở phổ biến hỗ trợ một số các tầng siêu giám sát được gọi là QEMU. QEMU là trình mô phỏng và tầng siêu giám sát đầy đủ. Nhưng KVM sử dụng QEMU để mô phỏng thiết bị như một quá trình riêng biệt trong vùng người dùng (xem Hình 1). Một tính năng thú vị của QEMU là vì nó cung cấp mô phỏng đĩa (thông qua định dạng QCOW), nên QEMU cung cấp các tính năng cao cấp khác như ảnh chụp nhanh và di chuyển máy ảo sống.

Kể từ nhân 2.6.25, KVM sử dụng virtio như là một phương tiện tối ưu hóa hiệu năng ảo hóa vào/ra. Virtio thực hiện điều này bằng cách đưa vào các trình điều khiển có ảo hóa một phần vào tầng siêu giám sát với các móc nối từ máy khách để mang lại hiệu năng đến mức gần như nguyên bản. Việc này chỉ thực hiện được khi hệ điều hành có thể được sửa đổi cho mục đích này, nhưng tìm ra được cách sử dụng trong máy khách Linux trong các kịch bản tầng siêu giám sát của Linux.

Hiện nay, virtio và QEMU hoạt động cùng với nhau sao cho các giao dịch thiết bị được mô phỏng có thể được tối ưu hóa giữa máy khách Linux và bộ mô phỏng QEMU trong vùng người sử dụng.

Nối mạng ảo

Do các máy ảo hợp nhất trong các máy chủ vật lý, nên các nhu cầu nối mạng của nền tảng này tăng lên. Nhưng thay vì bắt buộc tất cả nối mạng các máy ảo tới các lớp vật lý của nền tảng này, để thay thế thì truyền thông nội bộ có thể tự được ảo hóa . Để tối ưu hóa truyền thông mạng giữa các máy ảo, có đưa vào chuyển mạch ảo. Chuyển mạch ảo vSwitch hoạt động giống như một chuyển mạch vật lý, nhưng được ảo hóa trong nền tảng này (xem Hình 3). Trong hình này, các giao diện được ảo hóa (VIF) đã liên kết với các máy ảo truyền thông qua chuyển mạch ảo tới các giao diện vật lý (các PIF).
Hình 3. Khung nhìn mức cao của Open vSwitch với các giao diện ảo và giao diện vật lý



Nguồn mở cũng đang giải quyết vấn đề này, bằng 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 chuyển mạch ảo cho các môi trường ảo, vSwitch cũng có thể tích hợp ngang qua các nền tảng vật lý và cung cấp các tính năng mức doanh nghiệp như các mạng cục bộ ảo (VLAN), Chất lượng dịch vụ (QoS) dựa trên quyền ưu tiên, trung chuyển và hỗ trợ tăng tốc phần cứng (như các bộ điều hợp mạng ảo hóa vào/ra một gốc [IOV-single-root I/O virtualization]). Open vSwitch hiện có sẵn cho các nhân 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ý (Remote Switched Port Analyzer - Bộ phân tích cổng được chuyển mạch từ xa [RSPAN], NetFlow, v.v..).

Các công cụ và các công nghệ máy ảo

Do các máy ảo là sự kết hợp của hệ điều hành, hệ thống tệp gốc và cấu hình, nên không gian này đã chín muồi để phát triển công cụ. Nhưng để thấy rõ tiềm năng đầy đủ của các máy ảo và các công cụ, phải có một cách di động để lắp ráp chúng. Cách tiếp cận hiện tại, được gọi là Định dạng ảo hóa mở (OVF: Open Virtualization Format) là một cấu trúc máy ảo linh hoạt, hiệu quả và di động. OVF gói gọn một hình ảnh đĩa ảo trong một trình bao gói XML định nghĩa cấu hình của máy ảo, bao gồm các yêu cầu cấu hình nối mạng, bộ xử lý và bộ nhớ và một loạt siêu dữ liệu mở rộng để định nghĩa thêm các nhu cầu hình ảnh và nền tảng của nó. Khả năng quan trọng mà OVF cung cấp là tính di động để phân phối các máy ảo theo cách mà tầng siêu giám sát không thể biết được.

Hiện có một số tiện ích để quản lý các ảnh máy ảo (VMI) cũng như chuyển đổi chúng sang và từ các định dạng khác. ovftool của VMware là một công cụ hữu ích mà bạn có thể sử dụng để chuyển đổi VMI (ví dụ, để chuyển đổi từ định dạng Bộ dụng cụ phát triển đĩa ảo VMware [VMDK: VMware Virtual Disk Development Kit] sang OVF). Công cụ này và các công cụ khác rất hữu ích một khi bạn có một VMI, nhưng điều gì sẽ xảy ra nếu bạn có một máy chủ vật lý mà bạn muốn chuyển đổi thành một VMI? Bạn có thể sử dụng một công cụ hữu ích được gọi là Clonezilla cho mục đích này. Mặc dù lúc khởi đầu Clonezilla được phát triển như một công cụ sao chép đĩa dùng để phục hồi sau thảm họa, những bạn có thể sử dụng nó để chuyển đổi một thực thể máy chủ vật lý thành máy ảo để triển khai dễ dàng trong một cơ sở hạ tầng ảo hóa. Rất nhiều công cụ khác hiện có (như là các tiện ích được xây dựng trên libvirt) hoặc đang được phát triển để chuyển đổi và quản lý khi định dạng OVF được chấp nhận.

Quản lý cục bộ

Bài viết này tìm hiểu cách quản lý từ hai quan điểm. Phần này bàn về cách quản lý nền tảng, phần sau mở rộng sang cách quản lý cơ sở hạ tầng ở cấp độ cao hơn.

Red Hat đã giới thiệu thư viện libvirt như là một Giao diện lập trình ứng dụng (API) để quản lý ảo hóa nền tảng (các tầng siêu giám sát và các máy ảo). Điều làm cho libvirt thú vị là nó hỗ trợ một số các giải pháp tầng siêu giám sát (KVM và Xen là hai trong số đó) và cung cấp các liên kết API với một số ngôn ngữ (như C, Python và Ruby). Nó cung cấp "bước đi cuối cùng" về quản lý, giao tiếp trực tiếp với tầng siêu giám sát của nền tảng và mở rộng các API ra tới các giải pháp quản lý cơ sở hạ tầng lớn hơn. Với libvirt, để khởi động và dừng máy ảo rất đơn giản và nó cung cấp các API cho nhiều hoạt động cao cấp hơn, chẳng hạn như di chuyển các máy ảo giữa các nền tảng. Khi sử dụng libvirt, có thể sử dụng trình vỏ (shell) của nó (được xây dựng trên libvirt), được gọi là virsh.

Về đầu trang

Các công nghệ mã nguồn mở của cơ sở hạ tầng

Bây giờ bạn đã nhìn thấy một số các giải pháp nguồn mở ở cấp nút mạng ảo hóa, hãy xem xét một số ứng dụng nguồn mở khác có hỗ trợ cơ sở hạ tầng. Bài viết này tìm hiểu ba thể loại. Hai thể loại đầu là các công nghệ cấp cơ sở hạ tầng bổ sung cho các giải pháp đã thảo luận ở trên. Thể loại thứ ba bao gồm các giải pháp tích hợp để ghép tất cả các mảnh với nhau giúp cho việc triển khai đơn giản hơn.

Các công nghệ vào/ra

Việc xây dựng một kiến trúc Web có thể mở rộng và cân bằng tùy thuộc vào khả năng cân đối lưu lượng truy cập Web ngang qua các máy chủ thực hiện các chức năng tầng sau. Một số giải pháp cân bằng tải hiện có, nhưng gần đây, Yahoo! đã mở mã nguồn một giải pháp được gọi là Máy chủ lưu lượng (Traffic Server). Traffic Server rất thú vị, vì nó chứa đựng một số lượng lớn các khả năng trong một gói dành cho các cơ sở hạ tầng đám mây, bao gồm cả quản lý phiên làm việc, chứng thực, lọc, cân bằng tải và định tuyến. Yahoo! ban đầu mua lại sản phẩm này từ Inktomi, nhưng bây giờ đã mở rộng và giới thiệu sản phẩm trong nguồn mở.

Quản lý cơ sở hạ tầng

Việc quản lý cơ sở hạ tầng quy mô lớn hơn (quản lý nhiều tầng siêu giám sát và thậm chí nhiều máy ảo hơn) có thể được thực hiện theo một số cách. Hai trong số các giải pháp phổ biến nhất là mỗi giải pháp được xây dựng từ cùng một nền tảng (libvirt). Gói oVirt là một công cụ quản lý máy ảo mở có quy mô từ một vài máy ảo đến hàng ngàn máy ảo chạy trên hàng trăm máy chủ. Gói oVirt, do Red Hat phát triển, là một bàn điều khiển quản lý dựa trên Web, ngoài việc quản lý truyền thống, còn hỗ trợ tự động hóa phân cụm và cân bằng tải. Công cụ oVirt được viết bằng ngôn ngữ Python. VirtManager, cũng dựa trên libvirt và do Red Hat phát triển, là một ứng dụng với một giao diện người dùng GTK+ (thay vì dựa trên Web như oVirt). VirtManager trình bày một màn hình đồ họa phong phú hơn nhiều (về hiệu năng trực tiếp và sử dụng tài nguyên) và bao gồm một trình hiển thị khách Điện toán mạng ảo (VNC: Virtual Network Computing) với một bàn điều khiển đồ họa đầy đủ cho các máy ảo từ xa.

Còn Puppet là một gói phần mềm nguồn mở khác được thiết kế cho cơ sở hạ tầng trung tâm dữ liệu (một đám mây). Mặc dù không được thiết kế riêng cho các cơ sở hạ tầng ảo hóa, nó làm đơn giản hoá việc quản lý các cơ sở hạ tầng lớn bằng cách trừu tượng hóa các chi tiết của hệ điều hành ngang hàng. Nó thực hiện điều này thông qua việc sử dụng ngôn ngữ Puppet. Puppet là lý tưởng để tự động hóa các nhiệm vụ quản trị trên một số lượng lớn các máy chủ và được sử dụng rộng rãi hiện nay.

Về đầu trang

Các giải pháp IaaS tích hợp

Các gói nguồn mở sau đây có cách tiếp cận toàn diện hơn bằng cách tích hợp tất cả các chức năng cần thiết vào trong một gói duy nhất (bao gồm cả ảo hóa, quản lý, các giao diện và an ninh). Khi được thêm vào một mạng các máy chủ và lưu trữ, các gói này tạo ra các cơ sở hạ tầng điện toán đám mây và lưu trữ linh hoạt (IaaS). Để biết chi tiết về các nền tảng này, xem Tài nguyên.

Eucalyptus

Một trong những gói mã nguồn mở phổ biến nhất để xây dựng các cơ sở hạ tầng điện toán đám mây là Eucalyptus (viết tắt của Elastic Utility Computing Architecture for Linking Your Programs to Useful Systems - Kiến trúc điện toán tiện ích linh hoạt để liên kết các chương trình của bạn với các hệ thống có ích). Điều làm cho nó độc nhất vô nhị là giao diện của nó là tương thích với Đám mây điện toán linh hoạt Amazon - Amazon Elastic Compute Cloud (Amazon EC2 — giao diện của điện toán đám mây của Amazon). Ngoài ra, Eucalyptus bao gồm Walrus (Hải mã), là một ứng dụng lưu trữ đám mây tương thích với Dịch vụ lưu trữ đơn giản của Amazon – Amazon Simple Storage Service (Amazon S3 — giao diện lưu trữ đám mây của Amazon).

Eucalyptus hỗ trợ KVM/Linux và Xen cho các tầng siêu giám sát và bao gồm việc trình phân phối cụm Rocks để quản lý phân cụm.

OpenNebula

OpenNebula là một ứng dụng mã nguồn mở thú vị khác (theo giấy phép của Apache) được phát triển tại Đại học Complutense de Madrid. Ngoài việc hỗ trợ xây dựng đám mây riêng, OpenNebula ủng hộ ý tưởng về các các đám mây lai. Đám mây lai cho phép kết hợp một cơ sở hạ tầng đám mây riêng tư với một cơ sở hạ tầng đám mây công cộng (như Amazon) để cho phép các mức độ mở rộng cao hơn.

OpenNebula hỗ trợ Xen, KVM/Linux và VMware và dựa vào các phần tử như libvirt để quản lý và tự kiểm tra.

Nimbus

Nimbus là một giải pháp IaaS khác tập trung vào các tính toán khoa học. Với Nimbus, bạn có thể thuê tài nguyên ở xa (chẳng hạn như tài nguyên do Amazon EC2 cung cấp) và quản lý chúng cục bộ (đặt cấu hình, triển khai các máy ảo, theo dõi, v.v). Nimbus được biến đổi từ dự án Dịch vụ vùng làm việc -Workspace Service (một phần của Globus.org). Do lệ thuộc vào Amazon EC2, nên Nimbus hỗ trợ Xen và KVM/Linux.

Nền tảng đám mây Xen

Citrix đã tích hợp Xen vào một nền tảng IaaS, sử dụng Xen như là tầng siêu giám sát trong khi tích hợp các khả năng mã nguồn mở khác như vSwitch Open. Một ưu điểm thú vị với giải pháp Xen là tập trung vào quản lý dựa theo các tiêu chuẩn (bao gồm cả OVF, Lực lượng đặc nhiệm quản lý phân tán [DTMF: Distributed Management Task Force], Mô hình thông tin chung [CIM: Common Information Model] và Sáng kiến quản lý ảo hóa [VMAN: Virtualization Management Initiative]) từ dự án Kensho. Ngăn xếp quản lý Xen hỗ trợ cho các bảo đảm của Thỏa thuận cấp dịch vụ (SLA), cùng với các số liệu thông kê chi tiết để trả phí sau.

OpenQRM

Cuối cùng nhưng không kém quan trọng là OpenQRM, được phân loại là nền tảng quản lý trung tâm dữ liệu. OpenQRM cung cấp một bàn điều khiển duy nhất để quản lý toàn bộ trung tâm dữ liệu được ảo hóa, về mặt kiến trúc trung tâm này có cho phép cắm thêm để tích hợp các công cụ của bên thứ ba. OpenQRM kết hợp hỗ trợ với tính sẵn sàng cao (thông qua dự phòng) và hỗ trợ một loạt các các tầng siêu giám sát, bao gồm KVM/Linux, Xen, VMware và Linux VServer.

Về đầu trang

Đi xa hơn nữa

Người ta có thể đã viết nhiều cuốn sách về vai trò dẫn đầu mà nguồn mở đang chào đón lĩnh vực đám mây và ảo hóa, còn bài viết này chỉ đưa ra một giới thiệu ngắn về một số giải pháp phổ biến và dễ thấy có sẵn hiện nay. Cho dù bạn đang muốn xây dựng một đám mây dựa trên các yêu cầu riêng của bạn từ những mảnh riêng biệt hoặc đơn giản chỉ muốn có một giải pháp gắn kết sẵn sàng hoạt động ngay, thì mã nguồn mở vẫn hỗ trợ đủ cho bạn. Xem phần Tài nguyên để biết thêm chi tiết về các giải pháp được thảo luận tại đây và các giải pháp khác.

Tài nguyên

Học tập

Lấy sản phẩm và công nghệ

Thảo luận

Đôi nét về tác giả

Cấp độ đóng góp cho developerWorks của tác giảM. Tim Jones là một kiến trúc sư chương trình cơ sở nhúng và là tác giả của Trí tuệ nhân tạo (AI): Một cách tiếp cận hệ thống, lập trình ứng dụng GNU/Linux, lập trình ứng dụng AI và lập trình các ổ cắm BSD (BSD Sockets) từ một phối cảnh đa ngôn ngữ. Nền tảng kỹ thuật của ông trải rộng từ việc phát triển các nhân chương trình (kernel) cho vệ tinh địa tĩnh đến kiến trúc các hệ thống nhúng và phát triển giao thức kết nối mạng. Ông là một kiến trúc sư cao cấp của Emulex Corp tại Longmont, Colorado.http://www.ibm.com/developerworks/vn/library/os-cloud-anatomy/index.html

----------------------------------------------------------------------------------------------------------------------

Anatomy of an open source cloud


Building blocks for Infrastructure as a Service


M. Tim Jones, Independent author

Summary:  Cloud computing is no longer a technology on the cusp of breaking out but a valuable and important technology that is fundamentally changing the way we use and develop applications. As you would expect, Linux® and open source provide the foundation for the cloud (for public and private infrastructures). Explore the anatomy of the cloud, its architecture, and the open source technologies used to build these dynamic and scalable computing and storage platforms.

The use of the cloud as an abstraction is quite common for the distributed system that is the Internet, but the past few years have seen this abstraction expanded to incorporate highly virtualized and scalable infrastructures that are easily provisioned as a service (either locally or remotely). This article forgoes an in-depth definition of cloud architecture and its benefits, and instead refers to worthwhile reading in the Resources section.

Cloud computing anatomy

This article begins with an exploration of the core abstractions of cloud architectures (from Infrastructure as a Service [IaaS]), then moves beyond the building blocks to the more highly integrated solutions.

Frequently used acronyms


  • API: Application programming interface

  • I/O: Input/output

  • SLA: Service-level agreement

  • UI: User interface


Although not a requirement, virtualization provides unique benefits for building dynamically scalable architectures. In addition to scalability, virtualization introduces the ability to migrate virtual machines (VMs) between physical servers for the purposes of load balancing. Figure 1 shows that the virtualization component is provided by a layer of software called a hypervisor (sometimes called a virtual machine monitor [VMM]). This layer provides the ability to execute multiple operating systems (and their applications) simultaneously on a single physical machine. On the hypervisor is an object called a virtual machine that encapsulates the operating system, applications, and configuration. Optionally, device emulation can be provided in the hypervisor or as a VM. Finally, given the new dynamic nature of virtualization and the new capabilities it provides, new management schemes are needed. This management is best done in layers, considering local management at the server, as well as higher-level infrastructure management, providing the overall orchestration of the virtual environment.
Figure 1. Core elements of a node in the cloud

If you take those nodes from Figure 1 and multiply them on a physical network with shared storage, orchestrating management over the entire infrastructure, then provide front-end load balancing of incoming connections (whether in a private or a public setting) with caching and filtering, you have a virtual infrastructure called a cloud. This new construction is shown in Figure 2. Dormant machines can be powered down until needed for additional compute capacity (providing better power efficiency), with VMs balanced (even dynamically) across the nodes depending upon their individual loads.
Figure 2. Cloud computing infrastructure




With the basic architecture of a cloud defined, let's now explore where open source is being applied to build out a dynamic cloud infrastructure.

Back to top

Core open source technologies

The Linux landscape is seeing a wave of development focused on virtualized infrastructures for virtualization, management, and larger-scale integration of cloud software packages. Let's start with a view of open source at the individual node level, then step up to the infrastructure to see what's happening there.

Hypervisors

The base of the cloud at the node level is the hypervisor. Although virtualization is not a requirement, it provides undisputed capabilities for scalable and power-efficient architectures. There exist a number of open source virtualization solutions, but two key solutions are those that transform the Linux operating system into a hypervisor: the Linux Kernel Virtual Machine (KVM) and Lguest. KVM is the official hypervisor solution, being deployed into production environments. Lguest is a Linux-focused solution that runs only Linux VMs, but is integrated into the kernel and finding wider use.

Outside of converting Linux to a hypervisor, there are other solutions that take a guest VM-focused approach. User-Mode Linux (UML) is another approach that modifies a guest Linux kernel to run on top of another Linux operating system (without hypervisor extensions). Because most users want to run an unmodified kernel, full virtualization solutions (such as KVM) are preferred.

This UML approach is also popular, but requires virtualized hardware (such as a console, virtual disk, and networking).

Device emulation

The hypervisor provides the means to share the CPU with multiple operating systems (CPU virtualization), but to provide full virtualization, the entire environment must be virtualized for the VMs. Machine — or platform — emulation can be performed in a number of ways, but a popular open source package that supports a number of hypervisors is called QEMU. QEMU is a complete emulator and hypervisor. But KVM makes use of QEMU for device emulation as a separate process in the user space (see Figure 1). One interesting feature of QEMU is that because it provides disk emulation (through the QCOW format), QEMU provides other advanced features such as snapshots and live VM migration.

KVM, since kernel 2.6.25, uses virtio as a means of optimizing I/O virtualization performance. It does this by introducing paravirtualized drivers into the hypervisor with hooks from the guest to bring performance to near-native levels. This works only when the operating system can be modified for this purpose, but finds use in Linux guest on Linux hypervisor scenarios.

Today, virtio and QEMU work together so emulated device transactions can be optimized between the Linux guest and QEMU emulator in the user space.

Virtual networking

As VMs consolidate onto physical servers, the networking needs of the platform intensify. But rather than force all of the VM's networking to the physical layer of the platform, local communication could instead be virtualized itself. To optimize network communication among VMs, there is the introduction of the virtual switch. The vSwitch behaves like a physical switch, but is virtualized into the platform (see Figure 3). In this figure, virtualized interfaces (VIFs) associated with the VMs communicate through the virtual switch to the physical interfaces (PIFs).
Figure 3. High-level view of Open vSwitch with virtual and physical interfaces




Open source is addressing this problem as well, with one very interesting solution called the Open vSwitch. In addition to providing a virtual switch for virtual environments, the vSwitch can also integrate across physical platforms and provide enterprise-level features like virtual local area networks (VLANs), priority-based Quality of Service (QoS), trunking, and support for hardware acceleration (such as single-root I/O virtualization [IOV] network adapters). The Open vSwitch is currently available for 2.6.15 kernels and supports the range of Linux-based virtualization solutions (Xen, KVM, VirtualBox) and management standards (Remote Switched Port Analyzer [RSPAN], NetFlow, etc.).

VM tools and technologies

As VMs are an aggregation of operating system, root file system, and configuration, the space is ripe for tool development. But to realize the full potential of VMs and tools, there must be a portable way to assemble them. The current approach, called the Open Virtualization Format (OVF) is a VM construction that is flexible, efficient, and portable. OVF wraps a virtual disk image in an XML wrapper that defines the configuration of the VM, including networking configuration, processor and memory requirements, and a variety of extensible metadata to further define the image and its platform needs. The key capability provided by OVF is the portability to distribute VMs in a hypervisor-agnostic manner.

A number of utilities exist to manage VM images (VMIs) as well as convert them to and from other formats. The ovftool from VMware is a useful tool that you can use for VMI conversion (for example, to convert from the VMware Virtual Disk Development Kit [VMDK] format into OVF). This tool and others are useful once you have a VMI, but what if you have a physical server you'd like to convert into a VMI? You can employ a useful tool called Clonezilla for this purpose. Although it was originally developed as a disk-cloning tool for disaster recovery, you can use it to convert a physical server instance into a VM for easy deployment into a virtualized infrastructure. Numerous other tools exist (such as utilities built upon libvirt) or are in development for conversion and management as the OVF format gains adoption.

Local management

This article explores management from two perspectives. This section discusses platform management; a later section expands to infrastructure management at the higher level.

Red Hat introduced the libvirt library as an API for managing platform virtualization (hypervisors and VMs). What makes libvirt interesting is that it supports a number of hypervisor solutions (KVM and Xen being two) and provides API bindings for a number of languages (such as C, Python, and Ruby). It provides the "last mile" of management, interfacing directly with the platform hypervisor and extending APIs out to larger infrastructure-management solutions. With libvirt, it's simple to start and stop VMs, and it provides APIs for more advanced operations, such as migration of VMs between platforms. Using libvirt, it's also possible to use its shell (built on top of libvirt), called virsh.

Back to top

Infrastructure open source technologies

Now that you've seen some of the open source solutions at the virtualized node level, look at some other open source applications that support this infrastructure. This article explores three categories. The first two are infrastructure-level technologies that complement the solutions previously discussed. The third category consists of integrated solutions that bring all of the pieces together for simpler deployment.

I/O technologies

Building a scalable and balanced Web architecture depends upon the ability to balance Web traffic across the servers that implement the back-end functionality. A number of load-balancing solutions exist, but recently, Yahoo! open sourced a solution called Traffic Server. Traffic Server is interesting, because it encapsulates a large number of capabilities in one package for cloud infrastructures, including session management, authentication, filtering, load balancing, and routing. Yahoo! initially acquired this product from Inktomi, but has now extended and introduced the product into open source.

Infrastructure management

Larger-scale infrastructure management (managing many hypervisors and even more VMs) can be accomplished in a number of ways. Two of the more common solutions are each built from the same platform (libvirt). The oVirt package is an open VM management tool that scales from a small number of VMs to thousands of VMs running on hundreds of hosts. The oVirt package, developed by Red Hat, is a Web-based management console that, in addition to traditional management, supports the automation of clustering and load balancing. The oVirt tool is written in the Python language. VirtManager, also based on libvirt and developed by Red Hat, is an application with a GTK+ UI (instead of being Web-based like oVirt). VirtManager presents a much more graphically rich display (for live performance and resource utilization) and includes a VNC client viewer for a full graphical console to remote VMs.

And Puppet is another open source package designed for data center infrastructure (a cloud). Although not designed solely for virtualized infrastructures, it simplifies the management of large infrastructures by abstracting the details of the peer operating system. It does this through the use of the Puppet language. Puppet is ideal for automating administrative tasks over large numbers of servers and is widely used today.

Back to top

Integrated IaaS solutions

The following open source packages take a more holistic approach by integrating all of the necessary functionality into a single package (including virtualization, management, interfaces, and security). When added to a network of servers and storage, these packages produce flexible cloud computing and storage infrastructures (IaaS). For details about these platforms, see Resources.

Eucalyptus

One of the most popular open source packages for building cloud computing infrastructures is Eucalyptus (for Elastic Utility Computing Architecture for Linking Your Programs to Useful Systems). What makes it unique is that its interface is compatible with Amazon Elastic Compute Cloud (Amazon EC2 — Amazon's cloud computing interface). Additionally, Eucalyptus includes Walrus, which is a cloud storage application compatible with Amazon Simple Storage Service (Amazon S3 — Amazon's cloud storage interface).

Eucalyptus supports KVM/Linux and Xen for hypervisors and includes the Rocks cluster distribution for cluster management.

OpenNebula

OpenNebula is another interesting open source application (under the Apache license) developed at the Universidad Complutense de Madrid. In addition to supporting private cloud construction, OpenNebula supports the idea of hybrid clouds. A hybrid cloud permits combining a private cloud infrastructure with a public cloud infrastructure (such as Amazon) to enable even higher degrees of scaling.

OpenNebula supports Xen, KVM/Linux, and VMware and relies on elements like libvirt for management and introspection.

Nimbus

Nimbus is another IaaS solution focused on scientific computing. With Nimbus, you can lease remote resources (such as those provided by Amazon EC2) and manage them locally (configure, deploy VMs, monitor, etc.). Nimbus morphed from the Workspace Service project (part of Globus.org). Being dependent on Amazon EC2, Nimbus supports Xen and KVM/Linux.

Xen Cloud Platform

Citrix has integrated Xen into an IaaS platform, using Xen as the hypervisor while incorporating other open source capabilities such as the Open vSwitch. An interesting advantage to the Xen solution is the focus on standards-based management (including OVF, Distributed Management Task Force [DTMF], the Common Information Model [CIM], and Virtualization Management Initiative [VMAN]) from the project Kensho. The Xen management stack supports SLA guarantees, along with detailed metrics for charge-back.

OpenQRM

Last but not least is OpenQRM, which is categorized as a data center management platform. OpenQRM provides a single console to manage an entire virtualized data center that is architecturally pluggable to permit integration of third-party tools. OpenQRM integrates support for high availability (through redundancy) and supports a variety of hypervisors, including KVM/Linux, Xen, VMware, and Linux VServer.

Back to top

Going further

Volumes could be written about the leadership role that open source is playing in the cloud and virtualization domain, but this article provided a short introduction to some of the popular and visible solutions available today. Whether you're looking to build a cloud based on your own requirements from individual pieces or simply want a cohesive solution that works out of the box, open source has you covered. See the Resources section for more details on the solutions discussed here and others.

Resources

Learn

Get products and technologies

Discuss

About the author

M. Tim Jones is an embedded firmware architect and the author of Artificial Intelligence: A Systems Approach, GNU/Linux Application Programming, AI Application Programming, and BSD Sockets Programming from a Multi-language Perspective. His engineering background ranges from the development of kernels for geosynchronous spacecraft to embedded systems architecture and networking protocols development. He is a senior architect for Emulex Corp. in Longmont, Colo.



No comments:

Post a Comment

Thank for your comments