Nền tảng ảo hóa XEN là công nghệ được biết đến rộng rãi như là phần mềm ảo hóa nhanh và an toàn nhất trong lĩnh vực công nghiệp. XEN mang lại tốc độ xử lý gần như nguyên bản cho các máy chủ ảo, được thiết kế để các máy chủ ảo đạt hiệu quả cao nhất và hoạt động gần như liên tục. XEN được tạo ra bởi Phòng thí nghiệm máy tính trường đại học Cambridge và ngày nay được phát triển và bảo trì bởi XEN như một phần mềm miễn phí, bản quyền thuộc GNU General Public License.
3.4. Một số sản phẩm về quản lý và phân phối tài nguyên đã đƣợc phát triển
3.4.1. vCloud của WMWare
vCloud là một phần mềm hỗ trợ các lập trình viên trong việc thực hiện các tác vụ tương tác với VMWare thông qua web services REST. vCloud khách – chủ giao tiếp với nhau thông qua HTTP (HyperText Transfer Protocol - giao thức truyền tải siêu văn bản), các đối tượng của vCloud được truyền đi dưới định dạng XML.
Các giao thức:
GET: nhận thông tin của một đối tượng. POST: tạo một đối tượng.
PUT: thay đổi một đối tượng. DELETE: xóa một đối tượng.
vCloud hỗ trợ việc tải lên/xuống các định dạng ảo mở (OVF – Open Virtualization Format) và các tập tin ảnh từ máy trạm tới các máy ảo. Nó cũng hỗ trợ việc sao chép các ứng dụng ảo, các mẫu ứng dụng hay các tập tin giúp triển khai việc cài đặt máy ảo và các ứng dụng trên đó, cấu hình các thông tin mạng cần thiết và quản lý các máy ảo được tạo ra.
vCloud là phần mềm bản quyền, để sử dụng, người dùng cần mua bản quyền. Giá cả của nó tùy thuộc vào số lượng máy ảo mà người dùng muốn triển khai và quản lý. thích hợp cho các doanh nghiệp nhỏ muốn triển khai ngay cơ sở hạ tầng ảo mà không phát triển thêm hay cung cấp dịch vụ điện toán đám mây. Giá tham khảo cho một phần mềm vCloud để quản lý 25 máy ảo là $3750.
3.4.2. Tivoli Provisioning Manager của IBM
Tivoli Provisioning Manager (TPM) của IBM là sản phẩm cho phép tạo và quản lý cơ sở hạ tầng động bằng cách tự động quản lý các máy chủ vật lý, các máy chủ ảo, các phần mềm, việc lưu trữ và các hệ thống mạng.
TPM cung cấp cho các doanh nghiệp một giải pháp để quản lý môi trường ảo hóa của họ dễ dàng hơn. Họ có thể triển khai một máy ảo chỉ trong vài giây và hàng nghìn máy ảo đồng thời.
TPM còn hỗ trợ cả cho việc triển khai trên cơ sở hạ tầng hỗn tạp. Đó là khả năng hỗ trợ hệ thống phần cứng ảo khác nhau từ một hệ thống quản lý duy nhất - có thể sử dụng các giải pháp ảo hóa cơ sở hạ tầng của VMware, PowerVM, và Xen và quản lý chúng trên cùng một giao diện điều khiển.
Cũng như vCloud, TPM là phần mềm bản quyền, giá tham khảo cho 1 bộ sản phẩm khoảng $1000 với sự hỗ trợ 12 tháng.
vCloud không hỗ trợ API dưới dạng web services mà chỉ hỗ trợ giao diện ứng dụng. Do đó, cũng chỉ thích hợp dùng cho doanh nghiệp muốn triển khai cơ sở hạ tầng ảo hóa trong nội bộ doanh nghiệp.
Các tính năng, ưu điểm và lợi ích của TPM được mô tả chi tiết ở website của IBM: http://www-01.ibm.com/software/tivoli/products/prov-mgr/features.html.
CHƢƠNG 4 – PHÁT TRIỂN DỊCH VỤ QUẢN LÝ VÀ PHÂN PHỐI TÀI NGUYÊN
4.1. Lựa chọn công nghệ
4.1.1. Sử dụng REST trong thiết kế các Web Service
REST được viết tắt bởi Representational State Transfer được giới thiệu đầu tiên năm 2000. Là cách thiết kế kiến trúc phần mềm cho các hệ thống phân phối. Được viết dưới dạng một Servlet để trả lời các yêu cầu dưới định dạng HTTP. Dịch vụ REST nhận các yêu cầu HTTP và chuyển đổi chúng thành các dữ liệu đầu vào để thực hiện một nhiệm vụ nào đó. Tùy thuộc vào yêu cầu được gửi đi, nó sẽ trả về dữ liệu phù hợp từ Servlet.
Các đặc điểm chính của REST:
Trong REST, mỗi một đối tượng tài nguyên sẽ được xác định bởi một định danh. Thông qua HTTP, mỗi đối tượng này sẽ có các đặc tả dưới dạng URI (Uniform Resource Identifier – Định danh tài nguyên đồng nhất) của nó.
Các tài nguyên được tổ chức phân cấp với các URI của nó.
REST hỗ trợ các phương thức GET, POST, PUT, DELETE trên HTTP để thực hiện các tác vụ của nó đối với tài nguyên.
Các đối tượng tài nguyên trong REST được hỗ trợ đặc tả bằng nhiều kiểu dữ liệu khác nhau như XML, JSON, XHTML…
REST là giải pháp tốt để ứng dụng vào việc phát triển dịch vụ quản lý và phân phối tài nguyên vì:
Trong môi trường điện toán đám mây, các thiết bị được ảo hóa và nhóm thành các kiểu tài nguyên ảo khác nhau như là máy ảo, lưu trữ dữ liệu ảo, mảng ảo. Tất cả các tài nguyên này có thể được định danh và gán với một URI xác định.
Các tài nguyên trong điện toán đám mây có thể được tổ chức phân cấp phù hợp với đặc điểm của REST như là:
– Chia các tài nguyên thành nhiều trung tâm dữ liệu ảo (Virtual Data Center).
– Chia các trung tâm dữ liệu ảo thành các cụm dữ liệu ảo (Virtual Cluster).
– Chia các cụm dữ liệu ảo thành các vùng dữ liệu ảo (Resource Pool). – Trong các Resource Pool sẽ chứa các máy ảo.
Hình dưới đây minh họa phân cấp tài nguyên mà chúng ta có thể tổ chức trong VMWare vSphere:
Hình 7: Minh họa tổ chức phân cấp tài nguyên trong VMWare vSphere
Trong môi trường ảo hóa, các thao tác trên tài nguyên chủ yếu là tạo mới, cấu hình lại/sửa đổi, truy vấn thông tin và xóa tài nguyên. Vì thế các phương thức của HTTP là POST, PUT, GET, DELETE phù hợp với các thao tác này.
Các thuộc tính của tài nguyên có thể được mô tả dưới dạng XML, JSON, XHTML…
Trong môi trường ảo hóa, các thao tác trên tài nguyên không làm thay đổi định danh của chúng. Vì thế các thao tác trên tài nguyên có thể được thiết kế như các phiên làm việc không xung đột.
4.1.2. Giải pháp ảo hóa cơ sở hạ tầng VMWare vSphere
Như đã được trình bày trong chương 3, có nhiều giải pháp ảo hóa cơ sở hạ tầng. Trong luận văn này, tôi sử dụng giải pháp ảo hóa cơ sở hạ tầng của VMWare vSphere vì các lý do sau:
VMWare là tổ chức có uy tín lâu năm trong lĩnh vực ảo hóa.
VMWare vSpherec cung cấp các API để làm việc với cơ sở hạ tầng ảo dưới dạng web service, được đặt trên máy chủ vCenter và ESX. Các API này cung cấp đầy đủ các thao tác cần thiết để điều khiển và quản lý các thành phần trong cơ sở hạ tầng ảo như là các tài nguyên tính toán, các máy ảo, tài nguyên mạng, lưu trữ.
VMWare vSphere cung cấp giao diện tương tác để ảo hóa cơ sở hạ tầng dưới nhiều dạng:
– vSphere Client: cung cấp giao diện dưới dạng desktop để quản lý và phân phối tài nguyên bằng tay.
– vSphere Power CLI (Command-Line Interface): cung cấp giao diện tương tác dưới dạng các dòng lệnh.
– vSphere Web Service SDK: cung cấp các API dưới dạng web service để hỗ trợ các hệ thống điện toán đám mây trong lập trình tự động ảo hóa, quản lý, phân phối tài nguyên và tối ưu hóa việc sử dụng tài nguyên.
VMWare vSphere hỗ trợ hệ thống tài liệu đầy đủ: – Các tài liệu hướng dẫn cài đặt,
– Các tài liệu hướng dẫn lập trình,
– Các tài liệu hướng dẫn thao tác với tài nguyên, – Một số ví dụ được viết bằng Java và C#. VMWare vSphere ESX là miễn phí.
VMWare vSphere Client có bản dùng thử 45 ngày (phục vụ cho quá trình kiểm thử hệ thống ở giai đoạn cuối của luận văn).
Các kiểu tài nguyên trong vSphere bao gồm: Trung tâm dữ liệu ảo (Virtual Data Center) Cụm dữ liệu (Cluster)
Vùng dữ liệu (Resource Pool) Lưu trữ dữ liệu (Data Store) Máy ảo (Virtual Machine) Mẫu mấy ảo (Template) Mạng (Network)
4.1.3. Ngôn ngữ lập trình Java
Ngôn ngữ lập trình được sử dụng trong luận văn này để phát triển dịch vụ quản lý và phân phối tài nguyên là Java vì:
Java là ngôn ngữ lập trình bậc cao, mạnh và có thể chạy trên nhiều nền tảng khác nhau.
Là ngôn ngữ lập trình mã nguồn mở nên dễ tìm kiếm tài liệu và các hướng dẫn lập trình.
Vì vSphere web service SDK có các ví dụ minh họa trong sách hướng dẫn lập trình bằng Java.
Chủ sở hữu của Java là Sun có hỗ trợ một công nghệ rất mạnh để có thể làm việc với REST web service thân thiện và chuyên nghiệp là Sun Jersey.
Vì học viên có nhiều năm kinh nghiệm với ngôn ngữ lập trình Java nên sẽ thuận lợi hơn trong quá trình viết các ví dụ minh họa cho luận văn.
4.2. Thiết kế kiến trúc tổng quan
4.2.1. Kiến trúc
Có nhiều lý do giải thích vì sao cần thiết phải phát triển dịch vụ quản lý và phân phối tài nguyên đáp ứng được một hệ thống cung cấp dịch vụ điện toán đám mây với API của nhiều hệ thống giám sát máy ảo (hypervisor) khác nhau như VMWare ESX/ESXi, Microsoft Hyper-V, Citrix XEN server… như là:
Các ứng dụng/dịch vụ khác nhau khi chạy trên các hệ thống hypervisor khác nhau sẽ có được sự hỗ trợ hay tốc độ khác nhau.
Một hệ thống giám sát không thể thỏa mãn hết mọi yêu cầu cho các hệ thống dịch vụ điện toán đám mây mà được thiết kế chức năng và dịch vụ phong phú.
Một số yêu cầu hệ thống hay yêu cầu máy ảo có thể được phục vụ hiệu quả hơn hay với chi phí hợp lý hơn ở các hypervisor khác nhau.
Nhà cung cấp dịch vụ hypervisor có thể chặn hay tạm ngưng cung cấp dịch vụ khi hệ thống cần nâng cấp. Khi đó, sử dụng nhiều hypervisor sẽ có phương án dự phòng để dịch vụ cung cấp cho khách hàng không bị đình trệ. Thêm lựa chọn phong phú cho người sử dụng dịch vụ điện toán đám mây.
Vì thế, họ có thể chọn sản phẩm mà họ cảm thấy thú vị hơn.
Trong dịch vụ quản lý và phân phối tài nguyên trong điện toán đám mây của luận văn này. Học viên đưa ra một thiết kế tổng quan cho việc cung cấp dịch vụ với đa hệ thống giám sát tài nguyên. Phần cài đặt ở mục 4.4 sẽ được viết minh họa cho việc cài đặt dịch vụ với VMWare ESX.
Hình 8: Kiến trúc tầng quản lý và phân phối tài nguyên
Các dịch vụ điện toán đám mây: chứa các dịch vụ của điện toán đám mây, các dịch vụ này sẽ gọi đến dịch vụ quản lý và phân phối tài nguyên được phát triển trong luận văn này để thực hiện các thao tác với hệ thống tài nguyên ảo. Phần này được cung cấp bởi các hệ thống chứa các dịch vụ điện toán đám mây như dịch vụ cung cấp ứng dụng, dịch vụ cung cấp nền tảng, dịch vụ cung cấp cơ sở hạ tầng. Chẳng hạn như hệ thống website thương mại điện tử.
Phần Core: chứa các hàm thao tác trực tiếp với API của vSphere web service SDK để thực hiện yêu cầu quản lý và phân phối tài nguyên. Phần này cũng chứa các lời gọi tới các hệ thống khác như hệ thống tính tiền (Billing), hệ thống bảo mật (Security), hệ thống lưu thông tin các thao tác (Logging)… Phần này được phát triển bằng ngôn ngữ lập trình Java.
Phần Web Services: chứa các REST web services để cung cấp API cho các truy cập để yêu cầu quản lý và phân phối tài nguyên.
API VMWare: là các thư viện và API được hỗ trợ bởi VMWare vSphere để thực hiện các thao tác với máy chủ vSphere nhằm ảo hóa cơ sở hạ tầng. API Microsoft: là các thư viện và API được hỗ trợ bởi Microsoft Hyper-V
để thực hiện các thao tác ảo hóa cơ sở hạ tầng.
API XEN: là các thư viện và API được hỗ trợ bởi Citrix XEN để thực hiện các thao tác ảo hóa cơ sở hạ tầng.
Phần cơ sở hạ tầng: chứa máy chủ VMWare vSphere, các thiết bị phần cứng khác như các server, mạng, ổ cứng lưu trữ…
4.2.2. Phân cấp tài nguyên
Như đã nói trong mục 4.1.1, hệ thống tài nguyên ảo trong điện toán đám mây có thể được thiết kế phân cấp như hình sau:
Datacenter
Cụm 1 Cụm 2 Cụm 3
Các mẫu máy ảo RP 1 RP 2 RP 3 Các máy chủ (hosts) Các hệ thống mạng ảo
VM 1 VM 2 VM 3 RP 3.1 RP 3.2 RP 3.3
CPU Memory Ổ đĩa cứng Các thiết bị ảo
Hình 9: Phân cấp tài nguyên ảo trong một hệ thống điện toán đám mây 4.3. Thiết kế các chức năng
Dịch vụ quản lý và phân phối tài nguyên được thiết kế với mục đích là để ảo hóa cơ sở hạ tầng điện toán đám mây cho các doanh nghiệp, dùng cho kỹ thuật viên của các nhà cung cấp dịch vụ đám mây và đồng thời dùng cho chức năng tự phục vụ việc cấp phát và sử dụng tài nguyên ảo của người dùng trong các hệ thống dịch vụ điện toán đám mây. Người sử dụng có thể là các doanh nghiệp thuê dịch vụ đám mây của nhà cung cấp hoặc các khách hàng cá nhân tùy. Mỗi doanh nghiệp hoặc nhóm khách hàng cá nhân sẽ được cấp một Resource Pool mà chứa các tài nguyên máy ảo, mạng, cpu, bộ nhớ phù hợp tùy theo yêu cầu thuê dịch vụ. Các thao tác của người dùng sẽ chủ yếu tác động lên tài nguyên Resource Pool và các máy ảo. Vì thế, luận văn này sẽ tập trung thiết kế chủ yếu các chức năng tương tác trên resource pool và máy ảo.
4.3.1. Các chức năng đƣợc phát triển
Chức năng Mô tả Tên phƣơng thức
Truy vấn danh sách các trung tâm dữ liệu
Truy vấn danh sách các trung tâm dữ liệu, thông tin bao gồm:
Tên datacenter
getDatacenters
Truy vấn danh sách các cụm (cluster)
Truy vấn danh sách các cụm có trong một trung tâm dữ liệu, thông tin bao gồm: Tên cụm getClusters Truy vấn danh sách các vùng tài nguyên (Resource Pool) có trong một cụm
Truy vấn danh sách các Resource Pool có trong một cụm, thông tin lấy ra gồm:
Tên Resource Pool
getResourcePools
Tạo mới một
Resource Pool
Tạo mới một Resource Pool với các thông tin đầu vào gồm có:
Tên Resource Pool (tên Resource Pool là duy nhất) Các thông tin về tài nguyên CPU gán cho Resource Pool
Các thông tin tài nguyên bộ nhớ gán cho Resource Pool
createResourcePool
Truy vấn thông tin của một Resource Pool theo tên
Truy vấn thông tin chi tiết của một Resource Pool theo tên, thông tin lấy ra bao gồm:
Tên Resource Pool (như dữ liệu đầu vào)
Số máy ảo có trong Resource Pool
Số máy ảo đang chạy Các thông tin về tài
nguyên CPU
Các thông tin về tài nguyên bộ nhớ
Danh sách các máy ảo và thông tin chi tiết của mỗi máy
Các thông tin thống kê việc sử dụng tài nguyên trong Resource Pool theo ngày, tuần, tháng, năm. Thay đổi thông tin
cấu hình của một Resource Pool
Thay đổi thông tin về các tài nguyên được gán cho Resource Pool:
Cấu hình lại thông tin tài nguyên CPU
Cấu hình lại thông tin tài nguyên bộ nhớ
reconfigResourcePool
Xóa một Resource Pool
Xóa một Resource Pool theo dữ liệu truyền vào là:
Tên datacenter Tên cluster
Tên Resource Pool cần xóa
deleteResourcePool
Truy vấn danh sách các mẫu
Lấy ra tất cả các mẫu máy ảo để phục vụ cho việc tạo mới máy ảo từ một mẫu có sẵn, các thông tin lấy ra bao gồm:
Tên mẫu máy Mã hệ điều hành Tên hệ điều hành Nhóm hệ điều hành Số lượng CPU Kích thước bộ nhớ getTemplates
Dung lượng ổ cứng Truy vấn danh sách
các máy ảo
Lấy ra tất cả các máy ảo có trong một Resource Pool. Các thông tin lấy ra bao gồm:
Tên máy ảo Mã hệ điều hành Tên hệ điều hành Nhóm hệ điều hành Số lượng CPU Kích thước bộ nhớ Dung lượng ổ cứng