Tải bản đầy đủ (.pdf) (26 trang)

Giải pháp cấp phát tài nguyên theo thời khóa biểu trên OpenStack (tt)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (520.83 KB, 26 trang )

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
---------------------------------------

BÙI XUÂN AN

GIẢI PHÁP CẤP PHÁT TÀI NGUYÊN
THEO THỜI KHÓA BIỂU
TRÊN OPENSTACK
Chuyên ngành:
Mã số:

HỆ THỐNG THÔNG TIN

8480104

TÓM TẮT LUẬN VĂN THẠC SĨ

TP. HỒ CHÍ MINH - NĂM 2018


Luận văn được hoàn thành tại:
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

Người hướng dẫn khoa học: PGS.TS. Thoại Nam

Phản biện 1: .........................................................................
Phản biện 2: .........................................................................

Luận văn sẽ được bảo vệ trước Hội đồng chấm luận văn thạc
sĩ tại Học viện Công nghệ Bưu chính Viễn thông
Vào lúc:



....... giờ ....... ngày ....... tháng 01 năm 2018

Có thể tìm hiểu luận văn tại:
- Thư viện của Học viện Công nghệ Bưu chính Viễn thông


1
MỞ ĐẦU
Trong những năm gần đây, các thuật ngữ như Cloud
Computing, Private Cloud, Virtualization đã trở nên phổ biến với
nhiều người. Không chỉ trong lĩnh vực công nghệ thông tin (CNTT)
mà ở khắp nơi trên thế giới người ta đều nhắc tới ảo hóa và điện toán
đám mây. Điện toán đám mây đã trở thành một trong những xu
hướng phát triển của CNTT ngày nay bởi những lợi ích mà nó mạng
lại cho các tổ chức là hết sức to lớn:
-

Giảm chi phí quản trị, điện năng, không gian do cho phép
triển khai nhiều máy chủ ảo trên số ít máy chủ vật lý.

-

Tài nguyên được cấp phát linh động, co giãn theo nhu cầu,
tận dụng được tối đa tài nguyên đã đầu tư.

-

Khả năng cấp phát/thu hồi tài nguyên nhanh chóng theo từng
thời điểm, mục đích sử dụng.


Từ năm 2015, Trường Đại học Văn Lang bắt đầu triển khai giải pháp
ảo hóa máy chủ tại trung tâm dữ liệu của Trường, góp phần nâng cao
hiệu quả khai thác tài nguyên hệ thống, phục vụ hiệu quả cho công
tác đào tạo, quản lý. Trong đó, yêu cầu cung cấp máy chủ ảo cho
sinh viên Khoa Công nghệ Thông tin học thực hành, làm đồ án có
yêu cầu khá phức tạp và phát sinh những thách thức mới đặt ra cho
người quản trị hệ thống:
-

Để tận dụng và tiết kiệm tài nguyên, việc cấp phát máy ảo
cần được triển khai dựa trên thời khoá biểu: máy ảo sử dụng
trong khoảng thời gian nào, cấu hình yêu cầu ra sao để từ đó
cung cấp tài nguyên cho hợp lý, tối ưu, phù hợp với khả


2
năng đáp ứng còn lại của hệ thống, đặc biệt là những thời
điểm có nhiều môn học sử dụng nhiều máy ảo cùng lúc.
-

Việc cấp phát/thu hồi máy ảo hoàn toàn tự động dựa vào thời
khoá biểu.

-

Số lượng máy chủ ảo tăng nhanh, yêu cầu người quản trị
phải có biện pháp quản lý số lượng máy chủ ngày càng lớn
một cách hiệu quả, cho phép tổng hợp các thông tin quản trị
trong thời gian ngắn.


-

Các yêu cầu cấp phát máy chủ, tài nguyên ảo hóa ngày càng
nhiều và đòi hỏi thời gian đáp ứng nhanh tuy nhiên quy trình
cấp phát truyền thống chưa được tối ưu do vậy chưa đáp ứng
được yêu cầu từ phía người sử dụng.

Tại cơ quan tôi đang công tác, việc cấp phát máy chủ ảo cho sinh
viên còn làm theo phương pháp thủ công khi có yêu cầu từ môn học.
Chính vì vậy, tôi chọn đề tài "Giải pháp cấp phát tài nguyên theo
thời khóa biểu trên OpenStack" để đáp ứng nhu cầu học thực thực
hành, làm đồ án của sinh viên sao cho tài nguyên được cấp phát hiệu
quả, nhanh chóng và tiết kiệm.


3
CHƯƠNG 1 - TỔNG QUAN VỀ ĐIỆN TOÁN ĐÁM MÂY
VÀ OPENSTACK
1.1

Xu hướng công nghệ Điện toán đám mây hiện nay

1.1.1

Xu hướng điện toán đám mây
Với ý tưởng bảo toàn năng lượng, hợp nhất nguồn tài

nguyên, làm cho thông tin trở nên bảo mật và sẵn sàng bất cứ khi nào
cần thiết, khắc phục những hạn chế của môi trường điện toán truyền

thống:
-

Một lượng lớn các tài nguyên tính toán không được sử dụng
làm tiêu tốn không gian trong các trung tâm dữ liệu lớn

-

Cần tối thiểu một quản trị viên để vận hành hệ thống

-

Chi phí cho năng năng lượng ngày một tăng cao
Với điện toán đám mây, các tài nguyên nhàn rỗi có thể đưa

vào sử dụng và được tận dụng bằng cách bán cho người dùng có nhu
cầu. Từ ý tưởng cơ bản đó, điện toán đám mây ngày càng phát triển
với nhiều tính năng vượt trội, cho phép tối ưu tài nguyên tính toán,
đảm bảo tính bảo mật, linh hoạt trong vận hành.
1.1.2

Đặc điểm của điện toán đám mây

-

Tính tự phục vụ theo nhu cầu

-

Truy cập diện rộng


-

Dùng chung tài nguyên và độc lập vị trí

-

Khả năng co giãn nhanh chóng

-

Chi trả theo thực dùng

1.1.3
mây

Các mô hình triển khai và các dịch vụ của điện toán đám


4
Bốn mô hình dịch vụ:
-

Public Cloud

-

Private Cloud

-


Community Cloud

-

Hybrid Cloud
Ba mô hình triển khai:

-

Infrastructure as a Service (IaaS

-

Platform as a Service (PaaS)

-

Software as a Service (SaaS)

1.2

OpenStack là gì?

1.2.1

Giới thiệu chung

-


Openstack là dự án mã nguồn mở cho phép triển khai IaaS
Cloud computing. Bên cạnh sự hỗ trợ tích cực từ cộng đồng,
OpenStack cũng được hỗ trợ bởi nhiều công ty tên tuổi như
Redhat, IBM, VMWare… OpenStack là giải pháp cho public
cloud và private cloud với quy mô đa dạng.

-

Được thiết kế thành các component, kết nối với nhau qua các
API nên OpenStack rất linh động, một component có thể
được thay thế mà không ảnh hưởng đến các component còn
lại.

1.2.2

Các phiên bản OpenStack

1.2.3

Các thành phần chính của OpenStack

1.2.4

Ưu điểm và hạn chế của OpenStack
Ưu điểm:

-

Cho phép triển khai cả private cloud và public cloud



5
-

Có thể quản trị qua trình duyệt web với dashboard

-

Dung lượng lưu trữ được tính đến mức megabyte, cho phép
tính toán chi phí rất linh động

-

Dễ dàng tích hợp, triển khai với nhiều cấu hình phần cứng

-

Nâng cấp dữ dàng

-

Hỗ trợ sẵn công cụ quản lý lưu trữ

Hạn chế:
-

Phát hành các phiên bản rất thường xuyên và người dùng
phải luôn cập nhật với các thay đổi

-


Thời gian upload dữ liệu chưa được tối ưu

-

Chưa hỗ trợ sẵn đa ngôn ngữ, hệ thống giám sát, hệ thống
tính phí

-

Vấn đề kỹ thuật chỉ mới được hỗ trợ qua kênh email

1.2.5

Những Case Study đã triển khai OpenStack

1.3

Kết luận chương
Nền tảng điện toán đám mây đang là một xu thế trong công

nghệ thông tin. Nó cho phép triển khai nhiều mô hình ứng dụng, phù
hợp với các nhu cầu ngày càng đa dạng. Trong đó, OpenStack là một
hệ thống mã nguồn mở nổi trội. Ngoài việc được hỗ trợ bởi các tập
đoàn công nghệ thông tin lớn, OpenStack còn có một cộng đồng phát
triển mạnh mẽ. Yếu tố mã nguồn mở cũng là một ưu điểm của
OpenStack, nó cho phép người dùng tinh chỉnh, phát triển các chức
năng tùy theo nhu cầu của mình, đóng góp cho cộng đồng. Trong
chương tiếp theo, tôi sẽ tập trung nghiên cứu khả năng, cơ chế cấp



6
phát tài nguyên của OpenStack để ứng dụng nó vào nhu cầu thực tế
tại cơ quan đang công tác.


7
CHƯƠNG 2 - CẤP PHÁT TÀI NGUYÊN
TRONG OPENSTACK
2.1

Cơ chế cấp phát máy ảo của OpenStack
Một trong những use-case quan trọng nhất trong mọi dịch vụ

Cloud là việc cấp phát máy ảo. Phần này sẽ trình bày việc một máy
ảo được được cấp phát như thế nào trên OpenStack, bao gồm:
workflow yêu cầu máy ảo, sự tương tác giữa các thành phần của các
project khác nhau trong OpenStack.
Bước 1: Dashboard / CLI nhận thông tin đăng nhập và gởi
tới Keystone để chứng thực
Bước 2: Keystone xác nhận tài khoản, sinh ra và gởi authtoken về. Token này được dùng gởi yêu cầu đến các thành phần khác
qua REST-Call
Bước 3: Dashboard / CLI chuyển đổi yêu cầu tạo máy ảo
trong ‘launch instance’ hoặc ‘nova boot’ thành REST-API và gởi đến
nova-api
Bước 4: nova-api nhận và gởi yêu cầu đến keystone để kiểm
tra auth-token và quyền truy cập
Bước 5: Keystone kiểm tra token và gởi lại header được cập
nhật cùng với quyền truy cập
Bước 6: nova-api tương tác với nova-database

Bước 7: Khởi tạo record database cho máy ảo mới
Bước 8: nova-api gởi yêu cầu rpc.call tới nova-scheduler
Bước 9: nova-scheduler chọn yêu cầu từ hàng đợi


8
Bước 10: nova-scheduler tương tác với nova-database để tìm
ra host phù hợp thông qua việc lọc và đánh trọng số
Bước 11: Trả về thông tin host phù hợp cho máy ảo sau khi
lọc và đánh trọng số
Bước 12: nova-scheduler gởi yêu cầu rpc.cast tới novacompute để tạo máy ảo trên host phù hợp
Bước 13: nova-compute chọn yêu cầu từ hàng đợi
Bước 14: nova-compute gởi yêu cầu rpc.call tới novaconductor để lấy thông tin nhưng host ID và flavor (RAM, CPU,
DISK)
Bước 15: nova-conductor chọn yêu cầu từ hàng đợi
Bước 16: nova-conductor tương tác với nova-database
Bước 17: Trả về thông tin máy ảo
Bước 18: nova-compute chọn máy ảo từ hàng đợi
Bước 19: nova-compute thực hiện REST call bằng việc
chuyển auth-token tới glance-api để lấy Image URI bằng Image ID
và tải image từ trung tâm lưu trữ
Bước 20: glance-api kiểm tra token với keystone
Bước 21: nova-compute lấy thông tin metadata của image
Bước 22: nova-compute thực hiện REST-call bằng việc
chuyển auth-token tới Network API để cấp phát cấu hình mạng cho
máy ảo
Bước 23: quantum-server kiểm tra auth-token với keystone
Bước 24: nova-compute lấy thông tin cấu hình mạng



9
Bước 25: nova-compute thực hiện REST-call bằng việc
chuyển auth-token tới Volume API để gán các volume vào máy ảo
Bước 26: cinder-api kiểm tra auth-token với keystone
Bước 27: nova-compute lấy thông tin block storage
Bước 28: nova-compute phát sinh dữ liệu cho hypervisor và
thực thi yêu cầu trên hypervisor
2.2

Cơ chế lập lịch của OpenStack

2.2.1

Bộ lọc lập lịch
Bộ lọc lập lịch (Filter Scheduler) trong OpenStack hỗ trợ

việc lọc và đánh trọng số để quyết định một máy ảo mới sẽ được tạo
trên host (Compute node) nào.
Suốt quá trình hoạt động, bộ lọc lập lịch lặp lại việc rà soát
mọi compute node, đánh giá các host dựa trên bộ lọc. Danh sách các
host kết quả được sắp xếp theo trọng số. Bộ lọc sau đó lựa chọn các
host có trọng số cao nhất để dùng cho việc cấp phát các máy ảo được
yêu cầu. Host được chọn là host phù hợp với các tiêu chí của bộ lọc
(mô tả chi tiết bên dưới).
Các bộ lọc chuẩn có sẵn trong Nova Scheduler
-

AllHostsFilter

-


ImagePropertiesFilter

-

AvailabilityZoneFilter

-

ComputeCapabilitiesFilter

-

AggregateInstanceExtraSpecsFilter

-

ComputeFilter

-

CoreFilter


10
-

AggregateCoreFilter

-


IsolatedHostsFilter

-

RamFilter

-

DiskFilter

Để tự viết một bộ lọc, ta phải kế thừa từ BaseHostFilter và
cài đặt phương thức host_passes. Phương thức này trả về True nếu
một host thoả điều kiện của bộ lọc. Nó dùng host_state (mô tả về
host) và filter_properties làm các tham số.
Ví dụ: file nova.conf có thể chứa các thiết lập bộ lọc như sau:
--scheduler.driver=nova.scheduler.FilterScheduler
--filter_scheduler.available_filters=nova.scheduler.filters.all_filters
--filter_scheduler.available_filters=myfilter.MyFilter
-filter_scheduler.enabled_filters=RamFilter,ComputeFilter,MyFilter
Với những thiết lập này, nova sẽ dùng FilterScheduler làm trình
điều khiển lập lịch. Các bộ lọc nova chuẩn và MyFilter được áp dụng
vào FilterScheduler. Các bộ lọc RamFilter, ComputeFilter và
MyFilter được áp dụng mặc định khi không có bộ lọc nào được đưa
ra trong yêu cầu tạo máy ảo.
2.2.2

Trọng số
Bộ lọc lập lịch sử dụng việc đánh trọng số để làm việc, đây


là cách để lựa ra host phù hợp nhất từ nhóm các host phù hợp bằng
cách đánh trọng số cho mọi host trong danh sách.
Để ưu tiên một trọng số so với các trọng số khác, mọi trọng
số phải được định nghĩa một số nhân trước khi tính toán trọng số cho


11
từng node. Mọi trọng số được chuẩn hoá trước nên số nhân được áp
dụng dễ dàng. Trọng số cuối cùng có cách tính như sau:
weight = w1_multiplier * norm(w1) + w2_multiplier * norm(w2) +
...
Bộ lọc lập lịch đánh trọng số các host dựa trên thông số
filter_scheduler.weight.-classes với các tiêu chí sau
-

RAMWeigher

-

DiskWeigher

-

MetricsWeigher

-

IoOpWeigher

-


ServerGroupSoftAffinityWeigher

-

ServerGroupSoftAntiAffinityWeigher

Bộ lọc lập lịch tạo một danh sách cục bộ các host được chấp
nhận bằng việc lặp đi lặp lại việc lọc và đánh trọng số. Mỗi khi chọn
một host, nó đánh dấu các tài nguyên vừa cấp phát đã được dùng hết
để việc lựa chọn tiếp theo có thể điều chỉnh cho phù hợp. Điều này là
có lợi nếu người dùng yêu cầu một số lớn các máy ảo, vì trọng số
được tính toán cho mỗi máy ảo được yêu cầu.
2.3

Kết luận chương
OpenStack có cơ chế cấp phát tài nguyên khá linh động. Nó

đáp ứng tốt nhu cầu của các trung tâm dữ liệu, các đơn vị kinh doanh
VPS, hosting. Tuy nhiên, với bài toán cụ thể của luận văn, nó chưa
cho phép ta cấp phát các máy ảo theo thời gian. Đồng thời, việc gán
máy ảo vào các node đang là cố định. Vấn đề này sẽ được nghiên
cứu và đề xuất giải pháp trong Chương 4.


12
CHƯƠNG 3 - BÀI TOÁN VECTOR BIN PACKING
VÀ GIẢI PHÁP CẤP PHÁT TÀI NGUYÊN
3.1


Tương quan giữa bài toán Vector Bin Packing (VBP) với

việc cấp phát tài nguyên tính toán
Trong bài toán VBPd, ta được cho một tập I có n hộp I1, I2, I3
… In với mỗi Ii thuộc Rd. Một cách đóng gói hợp lệ là một phân vùng
của I vào k tập (hoặc hộp) B1 … Bk sao cho với mỗi j, I thì ∑𝑙 ∈𝐵𝑗 𝐼𝑖𝑙
≤ 1. Mục tiêu của VBPd là tìm ra một cách đóng gói hợp lệ với k nhỏ
nhất. VBPd có độ khó NP-hard với mỗi d và APX-hard với d ≥ 2.
Mô hình VBP mô tả tốt bài toán cấp phát tài nguyên với một
tập các server với khả năng đã biết trước và tập các dịch vụ / máy ảo
với nhu cầu biết trước. Nhu cầu của các dịch vụ và khả năng của các
server thể hiện bằng một số chiều. Gần đây VBP được quan tâm vì
nó mô hình hóa tốt bài toán sắp xếp các máy ảo. Ảo hóa đang phát
triển mạnh mẽ trong các trung tâm dữ liệu và hứa hẹn sẽ khai khác
sức mạnh tính toán hiệu quả hơn. Nhiều nhà cung cấp dịch vụ đã ứng
dụng công nghệ này để tiết kiệm ngân sách IT và chi phí bảo trì. Tuy
nhiên sức mạnh của kỹ thuật này chỉ thật sự tốt khi layer quản lý
thực hiện tốt việc lập lịch / gán các máy ảo vào các máy vật lý trong
trung tâm dữ liệu. Khi thực hiện việc gán, nó phải đảm bảo rằng
không máy vật lý nào bị quá tải đồng thời giảm tối thiểu số máy vật
lý. Mục tiêu không chỉ là giảm đầu tư vào phần cứng và còn giảm
được năng lượng tiêu thụ trong việc vận hành trung tâm dữ liệu.
Bài toán này có khó khăn ở yếu tố đa chiều. Ví dụ, mỗi máy
ảo có thông số sử dụng CPU, RAM, HDD và Network. Đồng thời,


13
mỗi host cũng có các thông số như vậy và việc sắp xếp các máy ảo
phải chắc chắn rằng số host là tối thiểu trong khi không được vượt
quá các ràng buộc về quá tải.

Có 2 thuật toán đã được sử dụng cho bài toán này. Thuật
toán đầu tiên là các FFD (First Fit Decreasing) heuristic. Trong FFD,
một số trọng số được áp dụng cho các vật để mỗi vật được gán một
đơn vô hướng. Các vật sau đó được sắp xếp và lần lượt xếp từ lớn
đến nhỏ. Trong trường hợp d=1, cách tiếp cận này là rất hiệu quả.
Một cách tiếp cận khác là xem bài toán như Phương trình tuyến tính
nguyên (Integer Linear Program). Tuy nhiên với tiếp cận này, khi n
lớn đến hơn 100 thì thuật toán hoạt động rất chậm.
3.2

Họ các thuật toán FFD
Thuật toán tham lam là heuristic tự nhiên nhất cho VBP một

chiều. Trong đó, các vật được xếp theo kích thước giảm dần, sau đó
các vật được xếp lần lượt vào hộp đầu tiên còn đủ chỗ. Thuật toán
này thường được gọi là FFD. FFD đảm bảo tìm được một cấp phát
với nhiều nhất

11
OPT
9

+ 1 hộp trong trường hợp một chiều và được

đánh giá là hiệu quả trong thực tế.
Không có một cách tổng quát hóa rõ ràng của FFD cho
trường hợp nhiều chiều. Ta phải quyết định gán một trọng số cho
một vector d-chiều. Ở đây, ta xét 2 tùy chọn:
w(i) = ∏𝑖 ≤𝑑 𝐼𝑖 (FFDProd) (1)
w(i) = ∑𝑖 ≤𝑑 𝑎𝑖 𝐼𝑖 (FFDSum) (2)



14
Với vector a = a1, …. ad là một vector tỷ lệ. Vector a có hai
chức năng. Thứ nhất, nó được dùng để tỷ lệ hóa và bình thường hóa
yêu cầu giữa các chiều. Thứ hai, nó cho phép ta đánh trọng số yêu
cầu của các chiều tùy theo mức độ quan trọng của chúng.
3.2.1

Chọn trọng số
Nếu bài toán xếp chỗ giới hạn với chỉ một loại tài nguyên

(như CPU) thì bản chất của bài toán là một chiều và FFD là thuật
toán được lựa chọn để sử dụng. Ví dụ, nếu một chiều nào đó luôn
trội hơn về yêu cầu so với các chiều khác thì FFD sẽ bỏ qua yêu cầu
của các chiều khác. Thuật toán FFD dùng tích vô hướng (FFDProd)
không có thuộc tính này: sự thay đổi trong mọi hướng ảnh hưởng tới
việc sắp xếp, bất kể chiều đó có độ quan trọng như thế nào. FFDSum
thì tốt hơn trong trường hợp này, các chiều ít có ảnh hưởng có thể
được gán hệ số ai nhỏ hơn và có tác động ít hơn vào việc sắp xếp.
Một lựa chọn tự nhiên là gán ai bằng yêu cầu trung bình avdemi =
1 𝑛
∑ 𝐼𝑙
𝑛 𝑙=1 𝑙

trong chiều i. Việc này cho ta một heuristic gọi là

FFDAvgSum. Một lựa chọn khác là ta khảo sát là cho ai ở dạng mũ,
tức là ai = exp(ϵ.avdemi) cho một vài hằng số ϵ phù hợp. Ta gọi
heuristic này là FFDExpSum. Các trọng số này cũng được dùng

trong heuristic hình học ở phần sau.
3.2.2

Thời gian chạy của FFD
FFD có hai giai đoạn, giai đoạn một là sắp xếp các vật, tốn

thời gian O(nd+nlogn). Trong giai đoạn hai, các vật được xếp vào
hộp đầu tiên có đủ chỗ chứa. Trong trường hợp một chiều, tổng thời
gian chạy của thuật toán được giới hạn ở O(nlogn). Tuy nhiên, trong


15
trường hợp đa chiều, không biết được là một vật có hộp nào có thể
chứa nó hay không. Một thuật toán quét mọi hộp bất cứ lúc nào một
vật đang được thêm vào có thời gian chạy Ω(nlogn + nk), với k là số
hộp. Đây là thuật toán được dùng để triển khai.
3.3

Các Heuristic hình học

3.3.1

Dot Product
Heuristic này định nghĩa vật “lớn nhất” là vật cho tích vô

hướng cực đại giữa vector khả năng chứa còn lại và vector yêu cầu
chỗ chứa của vật. Tại thời gian t, r(t) biểu thị khả năng còn lại của
hộp đang mở, tức là lấy khả năng chứa của hộp trừ đi chỗ chứa đã bị
chiếm bởi các vật đã được xếp vào. Vật Il được lựa để xếp vào là vật
cho tích vô hướng giữa a-weighted với vector chỗ chứa còn lại mà

không vượt quá ràng buộc về chỗ chứa.
3.3.2

Norm-based Greedy L2
Heuristic này xét sự khác nhau giữa vector Il và chỗ chứa còn

lại r(t) dưới một định mức nhất định thay vì tích vô hướng. Ví dụ, từ
mọi vật chưa được xếp, heuristic này sẽ xếp vật Il làm đại lượng
∑𝑖 𝑎𝑖 (𝐼𝑖𝑙 − 𝑟(𝑡)𝑖 )2 cực tiểu và việc xếp không phá vỡ ràng buộc về
chỗ chứa.
3.4

Thuật toán thường dùng trong cấp phát tài nguyên.

3.4.1

Thuật toán Round robin
Trong thuật toán round robin, ban đầu, khi có yêu cầu cấp

phát tài nguyên cho máy ảo, máy vật lý đầu tiên trong danh sách
(pm0) sẽ được xét.


16
- Nếu pmj đang xét có thể chứa máy ảo đó, thì máy ảo sẽ được xếp
vào máy vật lý j. máy ảo tiếp theo sẽ được xét từ máy pmj+1. Khi đã
đi hết danh sách máy vật lý, việc xét sẽ quay lại bắt đầu từ pm0.
- Nếu pmj không chứa được máy ảo, máy ảo pmj+1 sẽ được xét kế
tiếp. Khi đã xét hết máy vật lý mà vẫn không tìm được chỗ chứa máy
ảo thì cần phải tăng thêm số máy vật lý.

3.4.2

Thuật toán First Fit
Thuật toán First Fit được xem là một thuật toán tối ưu cục

bộ. Khi một máy ảo yêu cầu tài nguyên, thuật toán sẽ xét danh sách
các máy vật lý từ máy vật lý pm0 đầu tiên. Khi tìm được máy vật lý
pmj đầu tiên chứa được máy ảo thì máy ảo đó sẽ được xếp vào pmj.
Nếu đã xét hết danh sách máy vật lý mà vẫn chưa tìm được chỗ chứa
cho máy ảo thì số máy vật lý cần phải được tăng lên.
3.5

Kết luận chương
Thuật toán Norm-based Greedy L2 với số chiều là ba (03)

phù hợp với giải pháp cấp phát tài nguyên cho các máy ảo trên các
máy vật lý. Xem các máy vật lý là các hộp chứa, máy ảo là các vật
cần xếp vào hộp, các chiều tương ứng với các loại tài nguyên cần cấp
phát, bài toán Vector Bin Packing minh họa trực quan nhu cầu cấp
phát tài nguyên tính toán trong trung tâm dữ liệu.
Tôi quyết định chọn thuật toán này, kết hợp với yếu tố thời
khóa biểu sử dụng các máy ảo để xây dựng Giải pháp cấp phát tài
nguyên theo thời khóa biểu trên OpenStack.


17
CHƯƠNG 4 – HỆ THỐNG CẤP PHÁT TÀI NGUYÊN
DỰA TRÊN OPENSTACK
Đề xuất thuật toán cấp phát tài nguyên theo thời khóa


4.1
biểu
4.1.1
-

Phát biểu bài toán
Đầu vào:


Thời khóa biểu sử dụng các máy ảo, mỗi máy ảo bao
gồm: thời gian bắt đầu, thời gian kết thúc, tài nguyên
yêu cầu



Số máy vật lý và cấu hình về tài nguyên các máy vật
lý đang có

-

Đầu ra: kết quả sắp xếp các máy ảo vào các máy vật lý sao
cho sử dụng ít máy vật lý nhất

4.1.2
-

Các ràng buộc, quy định
Xét máy vật lý, máy ảo với ba loại tài nguyên: số core CPU,
dung lượng RAM, băng thông mạng (NETWORK)


-

Các máy vật lý có tài nguyên như nhau

-

Không có máy ảo nào yêu cầu tài nguyên nhiều hơn tài
nguyên máy vật lý

-

Đơn vị tính tài nguyên của các máy ảo là phần trăm (%) – tỷ
lệ giữa tài nguyên máy ảo yêu cầu với tài nguyên máy vật lý.

-

Thời khóa biểu được xây dựng bằng file Excel với định dạng
được quy ước trước

4.1.3

Đề xuất thuật toán


18
Thuật toán xếp các máy ảo vào máy vật lý với số máy vật lý ít
nhất
-

Dựa trên heuristic Norm-based Greedy L2: đưa máy ảo vào

máy vật lý sao cho các loại tài nguyên còn lại của máy vật lý
là đồng đều nhất, có nghĩa là phần tài nguyên còn lại sau khi
xếp máy ảo vào có thể dễ dàng được dùng để xếp các máy ảo
khác vào.

-

Xét máy vật lý, máy ảo là một hình hộp chữ nhật với độ lớn
của các cạnh là độ lớn về tài nguyên.

-

Giá trị ∑𝑖(𝐼𝑖𝑙 − 𝑟(𝑡)𝑖 )2 trong Norm-based Greedy L2 tương
ứng với giá trị bình phương độ lớn đường chéo của hình hộp
đại diện cho phần tài nguyên còn lại (phần tài nguyên chưa
được cấp phát).

-

Việc xếp máy ảo vào máy vật lý sẽ xét đường chéo của phần
tài nguyên còn lại: máy vật lý được chọn để chứa máy ảo là
máy vật lý có đường chéo của phần tài nguyên còn lại sau
khi xếp máy ảo vào là nhỏ nhất.
Giá trị đường chéo được tính theo công thức tính đường chéo

của hình hộp chữ nhật với R_RAM, R_CPU, R_NET là chiều dài của
ba cạnh:
𝑎 = √𝑅_𝑅𝐴𝑀2 + 𝑅_𝐶𝑃𝑈 2 + 𝑅_𝑁𝐸𝑇 2
Thuật toán xếp các máy ảo vào máy vật lý theo thời khóa
biểu với số máy vật lý ít nhất. Tôi đặt tên cho thuật toán này là BFD

(Best Fit by Diagonal)
-

Khởi tạo các máy vật lý trống hoàn toàn.


19
-

Dựa vào thời khóa biểu, sắp xếp các máy ảo theo thời gian
bắt đầu tăng dần. Thời gian trong bài toán này được chia
thành các slot theo tiết học của từng buổi học.

-

Lần lượt xếp máy ảo vào máy vật lý theo nguyên tắc máy vật
lý được chọn là máy khi xếp máy ảo tiếp theo vào sẽ cho
đường chéo của phần tài nguyên còn lại là nhỏ nhất.

-

Vào thời điểm xếp một máy ảo vào máy vật lý, những máy
ảo đã hết thời gian hoạt động sẽ được kết thúc và giải phóng
tài nguyên trả lại cho máy vật lý. Phần tài nguyên còn lại của
máy vật lý là phần đã trừ đi tài nguyên của các máy ảo đã
ngừng hoạt động trên máy vật lý đó.

4.2

Đưa thuật toán cấp phát tài nguyên theo thời khóa biểu


vào OpenStack
Dựa vào cơ chế bộ lọc của OpenStack, để triển khai giải
pháp này, ta cần viết một bộ lọc mới với thuật toán đã đề xuất, sau đó
đưa vào bộ lọc vào project nova của OpenStack. Khi đó, OpenStack
sẽ cấp phát máy ảo vào máy vật lý theo bộ lọc của ta. Tuy nhiên,
cách làm này sẽ gặp vấn đề về tương thích khi nâng cấp OpenStack
lên phiên bản khác.
Từ đó, tôi đề xuất giải pháp sử dụng một chương trình chạy
trên máy của người quản trị. Chương trình này sẽ có dữ liệu đầu vào
là thời khóa biểu sử dụng máy ảo, cấu hình yêu cầu của từng máy ảo,
số máy vật lý. Dữ liệu đầu ra của chương trình là kết quả xếp máy ảo
vào máy vật lý tối ưu. Đồng thời chương trình sẽ tương tác với


20
OpenStack để khởi tạo tạo và vận hành các máy ảo theo kết quả đầu
ra.
4.2.1

Thiết kế các module của ứng dụng
Ứng dụng hoạt động trên nền web, được viết bằng Python

2.7 để có thể tương tác tốt nhất với OpenStack, bao gồm các module
chính sau đây:
-

Module đọc dữ liệu thời khóa biểu sử dụng các máy ảo, tài
nguyên yêu cầu của các máy ảo ở dạng excel (Excel_reader)


-

Module mô phỏng sắp xếp các máy ảo vào các máy vật lý
(Algorithm): chứa đựng các hiện thực hóa của thuật toán đã
đề xuất, lấy dữ liệu đã được xử lý trước bởi module
Excel_reader và trả về thông tin cấu hình của các máy ảo
cũng như thời điểm tắt bật của chúng.

-

Module hiển thị kết quả sắp xếp và phát sinh tập lệnh cho
OpenStack (UI)
Dữ liệu đầu vào là file Excel có định dạng như sau: các tiết

trong buổi học được tổ chức theo dòng, thời gian sử dụng các máy ảo
được tổ chức theo cột. Máy ảo sử dụng trong nhiều tiết sẽ được thể
hiện bằng cách gộp (merged) các dòng tương ứng với các tiết.
4.2.2

Thiết lập hệ thống OpenStack

-

Hệ điều hành: Ubuntu 16.04 LTS

-

Phiên bản OpenStack: Pike

-


Dùng hai lớp mạng 172.16.3.0/24 và 10.0.0.0/24

-

Mô hình cài đặt, các dịch vụ: 01 node controller, 03 node
compute, 01 node shared storage.


21
4.2.3
-

-

Cơ chế di chuyển máy ảo (migration) trong OpenStack
Di chuyển máy ảo trên node compute bị lỗi


nova evacuate



nova host-evacuate

Di chuyển máy ảo trên node compute đang hoạt động bình
thường


nova host-evacuate-live




nova host-server-migrate



nova live-migration



nova migrate

Trong phạm vi luận văn này, ta xét trường hợp máy ảo VM1
đã dừng hoạt động trên máy vật lý PM1 khi hết giờ, khi đến giờ máy
ảo VM1 hoạt động và cần được di chuyển đến máy vật lý PM3 theo
thuật toán. Tuy nhiên, hệ thống của OpenStack chưa cho phép ta
thực hiện điều này. Để thực hiện giải pháp theo thuật toán, khi máy
ảo VM1 cần di chuyển từ PM1 đến PM3, tôi giả lập PM1 đã bị lỗi để
thực hiện câu lệnh nova evacuate và chỉ định PM3 là node đích.
4.2.4

Tương tác giữa ứng dụng và OpenStack
Trước khi đồng bộ nội dung kịch bản vận hành máy ảo theo

thời khóa biểu, ta cần thực hiện khởi tạo các máy ảo trên hệ thống
OpenStack.
Crontab mà ứng dụng phát sinh ra có dạng như bên dưới.
Các crontab này sẽ được thực thi trên node Controller để tạo, khởi
động, dừng, di chuyển các máy ảo theo lịch trình do ứng dụng đưa

ra.


22

4.2.5

Kết quả đạt được
Ứng dụng đang phát triển tương tác tốt với OpenStack bằng

việc đưa crontab chạy trên node Controller. Quản trị viên upload tập
tin excel chứa thời khóa biểu, tài nguyên yêu cầu của các máy ảo,
sau đó ứng dụng sẽ dùng thuật toán BFD để cho ra kết quả sắp xếp
các máy ảo vào các máy vật lý (node Compute).
So sánh kết quả với hai thuật toán thường dùng

4.3

Để so sánh sự hiệu quả của thuật toán đã đề xuất với hai
thuật toán thường dùng là Round robin và First fit, tôi sử dụng tập dữ
liệu sau để làm dữ liệu đầu vào cho ba thuật toán, sau đó so sánh số
máy vật lý cần dùng của mỗi thuật toán.
-

Tập dữ liệu thực tế là dữ liệu thời khóa biểu thực tế với yêu
cầu cấu hình máy ảo thực tế. Kết quả chạy thử cho thấy thuật
toán được đề xuất cho số máy vật lý cần dùng ít hơn so với
thuật toán Round robin và tương đương với First fit. Tuy
nhiên, so với First fit thì thuật toán BFD cho kết quả sắp xếp
tốt hơn xét về mặt tỷ lệ các tài nguyên còn lại, tức là phần tài

nguyên còn lại có thể xếp tiếp các máy ảo khác vào nếu cần.

-

Tập dữ liệu thời khóa biểu thực tế với yêu cầu cấu hình máy
ảo là dữ liệu được lấy ngẫu nhiên. Các loại tài nguyên được
lấy ngẫu nhiên trong đoạn [10%,50%] để cho thấy khả năng
đáp ứng với các nhu cầu khác nhau về tài nguyên tính toán.
Sử dụng cùng cách so sánh trên, tôi chạy thử nghiệm ba
thuật toán với mười tập dữ liệu ngẫu nhiên, sau đó so sánh số


23
máy trung bình mỗi buổi mà mỗi thuật toán cần dùng. Kết
quả so sánh cho thấy thuật toán BFD có số máy vật lý tốt
hơn so với Round Robin và First fit.
4.4

Kết luận chương
Bằng việc kết hợp heuristic Norm-based Greedy L2 với thuật

toán xử lý tài nguyên theo thời khóa biểu sử dụng máy ảo, bài toán
đặt ra đã được giải quyết. Bốn loại tài nguyên thường dùng trong
việc cấp phát được mô phỏng theo vector đa chiều cho ta thấy khả
năng mở rộng số loại tài nguyên của bài toán thực tế.
Về mặt cải tiến, so hai thuật toán thường được dùng các giải
pháp cấp phát máy ảo, thuật toán BFD sử dụng số máy vật lý ít hơn
cụ thể 21.67% so với thuật toán Round robin và ít hơn 1.4% so với
thuật toán First fit. Đây cũng có thể là tiền đề để phát triển những
thuật toán tốt hơn.

Việc xây dựng ứng dụng bên ngoài tương tác với OpenStack
là một giải pháp linh động và hiệu quả. Nó cho phép ta cập nhật ứng
dụng một cách nhanh chóng mà không ảnh hưởng đến hệ thống đang
hoạt động hoặc khi cần nâng cấp hệ thống lên phiên bản mới hơn.


×