Thuật toán Lập lịch dựa trên Cân bằng tải

Một phần của tài liệu cơ chế quản lý máy chủ ảo trong điện toán đám mây (Trang 57 - 59)

a) Ý tưởng

Tải của máy ảo đƣợc thể hiện qua thời gian thực thi dự đoán của nhiệm vụ chạy trên máy ảo, gọi là Vli. Và tải của host đƣợc biểu diễn bởi tải trung bình của máy ảo chạy trên nó, gọi là HLi , ta có HLi = 1

n j j

VL

n trong đó n là số máy ảo chạy trên host.

Từ HLi, giá trị tải trung bình avgl và giá trị đánh giá cân bằng tải B của môi trƣờng điện toán đám mây có thể định nghĩa nhƣ sau:

avgl = 1 m i HLi m B= 2 1 ( ) m i Li avgl m

Số hóa bởi Trung tâm Học liệu 52 http://www.lrc-tnu.edu.vn/

Trong các phƣơng trình trên, số host là m, giá trị B càng nhỏ thì cân bằng tải càng tốt và giá trị B càng lớn thì cân bằng tải kém hơn.

b) Thuật toán

Input: tài nguyên host, công suất xử lý của host Output: máy ảo có tải nhẹ nhất

Các bƣớc thuật toán:

Bƣớc 1. Theo mô hình tài nguyên host, tạo tập tài nguyên host nhƣ sau H = {h0, h2, ... hm-1} và xếp theo thứ tự từ dƣới lên theo công suất xử lý.

Bƣớc 2. Theo mô hình nhiệm vụ, tạo tập nhiệm vụ H = {t0, t2, ... tm-1} Trong quá trình này, bộ lập lịch mức thứ nhất tạo mô tả máy ảo theo các đặc tính của nhiệm vụ, cung cấp thông tin cấu hình cho việc gán tài nguyên và tạo máy ảo.

Bƣớc 3. Theo mô tả máy ảo của Nhiệm vụ ti T, chọn một tài nguyên host hj có thể đạt đƣợc tài nguyên yêu cầu và tải là nhỏ nhất. Nếu host tồn tại, tạo máy ảo và gán tài nguyên yêu cầu cho nó, sau đó cập nhật tài nguyên khả dụng hFcap của Host hj , nếu không nhiệm vụ ti sẽ xuống cuối hàng đợi nhiệm vụ và chờ lập lịch tiếp theo.

Bƣớc 4. Nếu yêu cầu tài nguyên của nhiệm vụ ti giảm đi, thì giải phóng tài nguyên thừa mà máy ảo đó chiếm giữ, và cập nhật tài nguyên khả dụng giữ bởi host.

Bƣớc 5. Nếu nhiệm vụ ti đã đƣợc hoàn thành, thì huỷ máy ảo của nhiệm vụ ti và giải phóng tài nguyên đƣợc chiếm giữ cho các nhiệm vụ chƣa đƣợc thực thi khác.

Bƣớc 6. Tính giá trị đánh giá cân bằng tải B trong môi trƣờng hiện tại, nếu B lớn hơn ngƣỡng giá trị B0, điều này chỉ ra trạng thái cân bằng tải kém đi, thì chọn một máy ảo với tải nhẹ hơn và chuyển nó đến host mà có thể đạt đƣợc yêu cầu tài nguyên với tải nhẹ nhất.

Bƣớc 7. Lặp lại bƣớc 3 đến 6 cho đến khi mọi nhiệm vụ đƣợc hoàn thành. Trong thuật toán trên, máy ảo đƣợc lập lịch cho host có tải nhẹ nhất trong mỗi lần thực hiện. Ƣu điểm là để tránh quá tải cho host giữ nhiều tài nguyên hơn. Nếu máy ảo hiện thời đƣợc lập lịch cho một host, khi lƣợng tính toán tăng lên, dẫn đến tải của máy ảo nặng gây mất cân bằng tải, thì hoạt động di chuyển động đƣợc sử dụng, giữ cân bằng tải trong môi trƣờng hiện tại.

c) Cài đặt

struct server {

Số hóa bởi Trung tâm Học liệu 53 http://www.lrc-tnu.edu.vn/

int state; /* server state (SRV_*) */

int cklen; /* the len of the cookie, to

speed up checks */

char *cookie; /* the id set in the cookie */

char *id; /* just for identification */

struct list pendconns; /* pending connections */

int nbpend, nbpend_max; /* number of pending

connections */

struct task *queue_mgt; /* the task associated

to the queue processing */

struct sockaddr_in addr; /* the address to

connect to */

struct sockaddr_in source_addr; /* the address to

which we want to bind for connect() */

short check_port; /* the port to use for the

health checks */

int health; /* 0->rise-1 = bad; rise->rise+fall-1 =

good */

int rise, fall; /* time in iterations */

int inter; /* time in milliseconds */

int result; /* 0 = connect OK, -1 = connect KO */

unsigned char uweight, eweight; /* user-specified

weight-1, and effective weight-1 */

unsigned int wscore; /* weight score, used during

srv map computation */

int cur_sess, cur_sess_max; /* number of currently

active sessions (including syn_sent) */

unsigned int cum_sess; /* cumulated number of

sessions really sent to this server */

unsigned int maxconn, minconn; /* max # of active

sessions (0 = unlimited), min# for dynamic limit. */

unsigned failed_checks, down_trans; /* failed checks

and up-down transitions */

unsigned failed_conns, failed_resp; /* failed

connect() and responses */

unsigned failed_secu; /* blocked responses because

of security concerns */

struct proxy *proxy; /* the proxy this server

belongs to */ };

Một phần của tài liệu cơ chế quản lý máy chủ ảo trong điện toán đám mây (Trang 57 - 59)