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 getVMs
Truy vấn thông tin chi tiết một máy ảo
Lấy thông tin chi tiết một máy ảo. Bao gồm các thông tin sau:
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 Các thông tin về mạng như: địa chỉ IP, DNS… Các thông tin chi tiết về tài
nguyên CPU (tài nguyên được gán, giới hạn, tài nguyên đã sử dụng, tài nguyên còn chưa sử dụng, tài nguyên được phép sử dụng vượt hạn mức…) Các thông tin chi tiết về tài
nguyên bộ nhớ (tài nguyên được gán, giới hạn, tài
nguyên đã sử dụng, tài nguyên còn chưa sử dụng, tài nguyên được phép sử dụng vượt hạn mức…) Tạo mới máy ảo Cho phép người dùng tạo mới một
máy ảo bằng cách truyền vào các tham số:
Tên máy ảo (tên máy ảo là duy nhất) Mã hệ điều hành Số lượng CPU Kích thước bộ nhớ Dung lượng ổ cứng createVM
Cấu hình lại máy ảo Sửa đổi thông tin máy ảo như: Số lượng CPU Kích thước bộ nhớ Dung lượng ổ cứng
reconfigVM
Xóa một máy ảo Xóa thông tin máy ảo theo tên máy ảo được truyền vào.
deleteVM
Đánh dấu một máy ảo như là một mẫu (template)
Đánh dấu một máy ảo như một template để sử dụng cho các lần sau.
markVMAsTemplate
Nhân bản máy ảo Nhân bản một máy ảo và cho phép cấu hình lại một số thông tin như: CPU, bộ nhớ, dung lượng ổ cứng, các thông tin về mạng như địa chỉ IP, Subnetmask, DNS, Getway.
Chức năng này hỗ trợ việc sao chép máy ảo:
Từ template ra một template mới
Từ template ra một máy ảo
mới
Từ một máy ảo ra một template mới
Từ một máy ảo ra một máy ảo mới
Bật máy ảo Bật máy ảo powerOnVM
Tắt máy ảo Tắt máy ảo powerOffVM
Khởi động lại một máy ảo
Khởi động lại một máy ảo resetVM
Tạm khóa một máy ảo
Tạm khóa một máy ảo suspendVM
Tắt hệ điều hành trên máy ảo
Tắt hệ điều hành trên máy ảo shutdownGuest
Khởi động lại hệ điều hành trên máy ảo
Khởi động lại hệ điều hành trên máy ảo
restartGuest
Chuyển hệ điều hành máy ảo sang chế độ chờ
Chuyển hệ điều hành máy ảo sang chế độ chờ
standbyGuest
Bảng 3: Các chức năng của dịch vụ quản lý và phân phối tài nguyên
4.3.2. URI của các web service tƣơng ứng với các chức năng Tên phƣơng thức Phƣơng
thức HTTP
URI Kiểu dữ liệu
getDatacenters GET /dcs Vào: không có
Ra: application/xml getClusters GET /dc/{dcname}/clusters Vào: không có
Ra: application/xml getResourcePools GET /dc/{dcname}/cluster/{cn
ame}/rps
Vào: không có Ra: application/xml
createResourcePool POST /dc/{dcname}/cluster/{cn ame}/rp
Vào: application/xml Ra: application/xml getResourcePool GET /dc/{dcname}/cluster/{cn
ame}/rp
Vào: không có Ra: application/xml reconfigResourcePool PUT /dc/{dcname}/cluster/{cn
ame}/rp
Vào: application/xml Ra: application/xml deleteResourcePool DELETE /dc/{dcname}/cluster/{cn
ame}/rp
Vào: không có Ra: không có
getTemplates GET /templates Vào: không có
Ra: application/xml
getVMs GET /dc/{dcname}/cluster/{cn
ame}/rp/{rpname}/vms
Vào: không có Ra: application/xml
getVM GET /vm/{vmname} Vào: không có
Ra: application/xml
createVM POST /vm Vào: application/xml
Ra: application/xml
reconfigVM PUT /vm/{vmname} Vào: application/xml
Ra: application/xml
deleteVM DELETE /vm/{vmname} Vào: không có
Ra: không có markVMAsTemplate PUT /vm/{vmname}/markAsT
emplate
Vào: không có Ra: không có
cloneVM POST /vm/{vmname}/clone Vào: application/xml Ra: application/xml powerOnVM PUT /vm/{vmname}/powerOn Vào: không có
powerOffVM PUT /vm/{vmname}/powerOff Vào: không có Ra: không có
resetVM PUT /vm/{vmname}/reset Vào: không có
Ra: không có suspendVM PUT /vm/{vmname}/suspend Vào: không có
Ra: không có shutdownGuest PUT /vm/{vmname}/shutdown Vào: không có
Ra: không có restartGuest PUT /vm/{vmname}/restart Vào: không có
Ra: không có standbyGuest PUT /vm/{vmname}/standby Vào: không có
Ra: không có
Bảng 4: Các URI của các web services 4.4. Mô tả chi tiết các chức năng
4.4.1. Truy vấn danh sách các trung tâm dữ liệu
Mô tả Liệt kê danh sách tên của các trung tâm dữ liệu.
URI http://servername/provisioning/dcs
Phương thức GET
Kiểu dữ liệu đầu vào Không có Dữ liệu đầu vào Không có
Kiểu dữ liệu đầu ra Application/xml
Dữ liệu đầu ra Danh sách tên các datacenter: HTTP/1.1 200 Ok
Server: Apache-Tomcat/6.0
Last-Modified: Thu, 11 Oct 2011 14:45:35 GMT Location: http://localhost:8080/provisioning/dcs
Date: Fri, 12 Oct 2011 12:00:28 GMT
Content-Type: application/xml; charset=UTF-8
<datacenters> <datacenter>
<name>VM-DC01</name> </datacenter> <datacenter> <name>VM-DC02</name> </datacenter> <datacenter> <name>VM-DC03</name> </datacenter> </datacenters>
Trạng thái dữ liệu đầu ra Mã dữ liệu trả về:
200 Ok: nếu giao dịch thành công.
500 Server error: nếu có lỗi xảy ra ở máy chủ.
Bảng 5: Chức năng truy vấn danh sách các trung tâm dữ liệu
4.4.2. Truy vấn danh sách các cụm
Mô tả Liệt kê danh sách tên của các cụm dữ liệu có trong một trung tâm dữ liệu căn cứ theo tên của trung tâm dữ liệu.
URI http://servername/provisioning/dcs/{dcname}/clusters
Phương thức GET
Kiểu dữ liệu đầu vào Tham số đường dẫn (path param). Dữ liệu đầu vào dcname: tên datacenter cần lấy dữ liệu. Kiểu dữ liệu đầu ra Application/xml
Dữ liệu đầu ra Danh sách tên các datacenter: HTTP/1.1 200 Ok
Server: Apache-Tomcat/6.0
Last-Modified: Thu, 11 Oct 2011 14:45:35 GMT Location: http://localhost:8080/provisioning/dc/VM- DC01/clusters
Date: Fri, 12 Oct 2011 12:00:28 GMT
Content-Type: application/xml; charset=UTF-8
<clusters> <cluster>
<name>Cluster01</name>
</cluster> <cluster>
<name>Cluster02</name>
</cluster> <cluster>
<name>Cluster03</name>
</cluster>
</clusters>
200 Ok: nếu giao dịch thành công.
404 Not found: nếu tên datacenter không đúng. 500 Server error: nếu có lỗi xảy ra ở máy chủ.
Bảng 6: Chức năng truy vấn danh sách các cụm
4.4.3. Truy vấn danh sách Resource Pool
Mô tả Liệt kê danh sách tên của các Resource Pool có trong một cụm dữ liệu căn cứ theo tên của trung tâm dữ liệu và tên của cụm dữ liệu chứa chúng.
URI http://servername/provisioning/dcs/{dcname}/cluster/{cna
me}/rps
Phương thức GET
Kiểu dữ liệu đầu vào Các tham số đường dẫn (path params)
Dữ liệu đầu vào dcname: tên của datacenter cần lấy dữ liệu.
cname: tên của cụm dữ liệu chứa các vùng dữ liệu cần lấy ra.
Kiểu dữ liệu đầu ra Application/xml
Dữ liệu đầu ra Danh sách tên các datacenter: HTTP/1.1 200 Ok
Server: Apache-Tomcat/6.0
Last-Modified: Thu, 11 Oct 2011 14:45:35 GMT Location: http://localhost:8080/provisioning/dc/VM- DC01/cluster/Cluster01/rps
Date: Fri, 12 Oct 2011 12:00:28 GMT
Content-Type: application/xml; charset=UTF-8
<resourcePools> <resourcePool> <name>RP001</name> </resourcePool> <resourcePool> <name>RP002</name> </resourcePool> <resourcePool> <name>RP003</name> </resourcePool> </resourcePools>
Trạng thái dữ liệu đầu ra Mã dữ liệu trả về:
200 Ok: nếu giao dịch thành công.
404 Not found: nếu tên datacenter và/hoặc tên cụm dữ liệu không đúng.
500 Server error: nếu có lỗi xảy ra ở máy chủ.
Bảng 7: chức năng truy vấn danh sách Resource Pool
4.4.4. Truy vấn thông tin chi tiết của một Resource Pool
Mô tả Lấy ra thông tin chi tiết của một Resource Pool căn cứ vào tên datacenter, tên cụm dữ liệu và tên Resource Pool cần lấy thông tin.
Các thông tin cần lấy ra là:
Các thông tin về tài nguyên được gán cho Resource Pool đó như bộ nhớ, CPU. Bao gồm các thông tin: kích thước, dung lượng được gán (reservation), giới hạn (limit), tài nguyên được phép vượt quá (overhead).
Các thông tin về tài nguyên đã tiêu thụ (usage) và còn sẵn sang (available) của Resource Pool. Danh sách các máy ảo thuộc Resource Pool đó và
các thông tin tài nguyên của các máy ảo.
Danh sách các Resource Pool con chứa trong nó.
URI http://servername/provisioning/dcs/{dcname}/cluster/{cna
me}/rp/{rpname}
Phương thức GET
Kiểu dữ liệu đầu vào Các tham số đường dẫn (path params)
Dữ liệu đầu vào dcname: tên của datacenter cần lấy dữ liệu.
cname: tên của cụm dữ liệu chứa các vùng dữ liệu cần lấy ra.
Kiểu dữ liệu đầu ra Application/xml
Dữ liệu đầu ra Danh sách tên các datacenter: HTTP/1.1 200 Ok
Server: Apache-Tomcat/6.0
Last-Modified: Thu, 11 Oct 2011 14:45:35 GMT Location: http://localhost:8080/provisioning/dc/VM- DC01/cluster/Cluster01/rp/RP001
Date: Fri, 12 Oct 2011 12:00:28 GMT
Content-Type: application/xml; charset=UTF-8
<resourcePool> <cpuResource> <limit>9200</limit> <reservation>0</reservation> <reservationUsed>0</reservationUsed> <unreserved>9200</unreserved> </cpuResource> <memoryResource> <limit>9200</limit> <reservation>0</reservation> <reservationUsed>0</reservationUsed> <unreserved>9200</unreserved> </memoryResource> <virtualMachine> <name>RP001.VM001</name> <memory>1024</memory> <numCPU>1</numCPU> <diskSize>15360</diskSize> <state>powerOn</state> <guest>
<guestOsFullName>Ubuntu Linux (32- bit)</guestOsFullName>
<guestOsId>ubuntuGuest</guestOsId> <nicSetting>
<ip>192.168.122.1</ip>
<macAddress>00:50:56:ae:3c:c5</macAddress> </nicSetting> </guest> <cpuResource> <limit>9200</limit> <reservation>0</reservation> <reservationUsed>0</reservationUsed> <unreserved>9200</unreserved> </cpuResource> <memoryResource> <limit>9200</limit> <reservation>0</reservation> <reservationUsed>0</reservationUsed> <unreserved>9200</unreserved> </memoryResource> </virtualMachine> <virtualMachine> <name>RP001.VM002</name> <memory>1024</memory> <numCPU>1</numCPU> <diskSize>15360</diskSize> <state>powerOn</state> <guest>
<guestOsFullName>Microsoft Windows XP Professional (32-bit)</guestOsFullName>
<guestOsId>winXPProGuest</guestOsId> <nicSetting>
<ip>192.168.11.99</ip>
</nicSetting> </guest> <cpuResource> <limit>9200</limit> <reservation>0</reservation> <reservationUsed>0</reservationUsed> <unreserved>9200</unreserved> </cpuResource> <memoryResource> <limit>9200</limit> <reservation>0</reservation> <reservationUsed>0</reservationUsed> <unreserved>9200</unreserved> </memoryResource> </virtualMachine> <resourcePool> <name>RP001</name> </resourcePool> <resourcePool> <name>RP001</name> </resourcePool> <resourcePool> <name>RP001</name> </resourcePool> </resourcePool>
Trạng thái dữ liệu đầu ra Mã dữ liệu trả về:
200 Ok: nếu giao dịch thành công.
404 Not found: nếu tên datacenter, tên cụm dữ liệu và/hoặc tên Resource Pool không đúng. 500 Server error: nếu có lỗi xảy ra ở máy chủ.
Bảng 8: Chức năng truy vấn thông tin chi tiết của một Resource Pool
4.4.5. Tạo mới một Resource Pool
Mô tả Tạo mới một Resource Pool với các tham số đầu vào là tên Resource Pool và các giá trị của tài nguyên được gán.
URI http://servername/provisioning/dcs/{dcname}/cluster/{cna
me}/rp/{rpname}
Phương thức POST
Kiểu dữ liệu đầu vào Các tham số đường dẫn (path params)
Xâu dữ liệu đầu vào định dạng application/xml. Dữ liệu đầu vào Các tham số đường dẫn:
dcname: tên của datacenter cần lấy dữ liệu.
liệu cần lấy ra.
Rpname: tên của Resource Pool cần tạo. Xâu dữ liệu đầu vào định dạng XML:
POST http://localhost:8080/provisioning/dc/VM- DC01/cluster/Cluster01/rp/{rpname} HTTP/1.1 Accept: application/xml Accept-Language: en-us <resourcePool> <name>RP001</name> <cpuResource> <expandableReservation>false</expandableReservation> <limit>7523</limit> <reservation>2385</reservation> <shareLevel>Custom</shareLevel> <shareValue>21920</shareValue> </cpuResource> <memoryResource> <expandableReservation>true</expandableReservation> <limit>2453</limit> <reservation>777</reservation> <shareLevel>Custom</shareLevel> <shareValue>21920</shareValue> </memoryResource> </resourcePool> Kiểu dữ liệu đầu ra Application/xml
Dữ liệu đầu ra Danh sách tên các datacenter: HTTP/1.1 200 Ok
Server: Apache-Tomcat/6.0
Last-Modified: Thu, 11 Oct 2011 14:45:35 GMT Location: http://localhost:8080/provisioning/dc/VM- DC01/cluster/Cluster01/rps
Date: Fri, 12 Oct 2011 12:00:28 GMT
Content-Type: application/xml; charset=UTF-8
<resourcePools> <resourcePool> <name>RP001</name> </resourcePool> <resourcePool> <name>RP002</name> </resourcePool> <resourcePool> <name>RP003</name>