Top Banner
PROJECT CLOUD COMPUTING BY RnD PROJECT CLOUD COMPUTING Page 1 of 16 RnD
16

Bao Cao Viec Phat Trien Project Cloud Computing

Nov 20, 2014

Download

Documents

tranthanhhakg
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Bao Cao Viec Phat Trien Project Cloud Computing

PROJECT CLOUD COMPUTING BY RnD

PROJECTCLOUD COMPUTING

Page 1 of 13 RnD

Page 2: Bao Cao Viec Phat Trien Project Cloud Computing

PROJECT CLOUD COMPUTING BY RnD1. Mở đầu :

Đây là Project về Cloud Computing của Group RnD . Hiện Project này chưa hoàn thành , mục đích bài viết này là report về tình trạng project mà group đang xử lý và tiến hành chỉnh sửa để hoàn chỉnh hơn .

Hiện nhóm đang triển khai phần giải pháp merge các Server về mặt Physical thành 1 Server duy nhất nhưng tập trung tất cả các resources trên các server còn lại từ CPU , Hard Disk , RAM .

Về giải pháp này , nhóm đang thử nghiệm trên hệ thống chạy XenServer

Mô hình như sau :

Mô hình kết nối giữa các server

Page 2 of 13 RnD

Page 3: Bao Cao Viec Phat Trien Project Cloud Computing

PROJECT CLOUD COMPUTING BY RnD

XenServer là giải pháp của Citrix ( website của Citrix : http://www.citrix.com )

Bản XenServer là bản free , tuy nhiên thiếu 1 số tính năng . Các tính năng này nằm trong bảng Essential XenServer .

Giá của bản Essential XenServer là 2.750 usd ( bản Enterprise ) và 5.500 usd (bản Platinum ) .

Link tham khảo : http://store.citrix.com/store/citrixus/DisplayHomePage

Các tính năng bản Essential XenServer có thêm bao gồm :

Feature Express

Enterprise

Platinum

Integrated storage management with Citrix® StorageLink™

Workflow orchestration  

Dynamic provisioning services (virtual only)  

Dynamic provisioning services (virtual and physical)    

StorageLink Site Recovery Express (limited to two Hyper-V servers)    

StorageLink Site Recovery    

Automated lab management    

Stage management    

Chú thích 2 tính năng cần biết :

Tính năng HA ( tự động detect Master Pool Fail và chuyển Master Role sang cho Slave Role , và các VM ( Virtual machine ) sang các Server còn lại mà không có downtime)

Tính năng Workload Balancing : giúp cần bằng tải các VM trên các Server . Khi tính năng này được bật , nó đảm bảo rằng VM đc bật trên Server tốt nhất và thích hợp nhất cho Server .

Page 3 of 13 RnD

Page 4: Bao Cao Viec Phat Trien Project Cloud Computing

PROJECT CLOUD COMPUTING BY RnD

2. Thực hiện :

Hiện tại nhóm đã làm bản XenServer .

2.1 Cài đặt trên 3 Server :

- Server 1 : Cài đặt Xen Server

- Server 2 : Cài đặt Xen Server

- Server 3 : Cài đặt Microsoft Windows . Trên Server này cài thêm Xen Center để quản lý các Xen Server . Việc cài đặt Xen Center có thể thực hiện trên bất kì máy nào , nó không cố định , nó giống như là 1 software kết nối vô server .

- Việc hoạt động của Xen như sau :

o Tạo 1 Resource Pool để merge các server lại như đã nói ở trên . Trong Resource pool này sẽ yêu cầu 1 Server đóng vai trò là master role . ta cho server 1 là Master Role , server 2 là Slave => Vấn đề này đã thực hiện được .

- Trên Server 2 : ta cài đặt OpenFiler để đóng vai trò là thiết bị lưu trữ cho các file ISO và VM ( Openfiler ta sẽ phải giả lập như 1 SAN để XenServer hoạt động )

2.2Tình huống và các sự việc đang giải quyết :

a) Tạo máy ảo :

Đã thực hiện được nhưng chưa nhận được ổ đĩa boot.

Note: NghiệpTC và LộcVT thực hiện ( deadline 21/05)

b) Chuyển Master Role khi Server đóng vai trò Master Role down :

Đã thực hiện được nhưng thời gian chuyển role giữa các server mất 5-10 phút . Việc chuyển đổi này hiện đang phải dùng manual , chưa auto được ( Giải pháp đưa ra ở đây là viết 1 đoạn script vì việc change role ở đây chỉ là 1 command ) . Và thời gian 5-10 phút chỉ là test trên hệ thống có 2 VM . Nếu giả sử 1 hệ thống lớn hơn thì chưa test được . Việc thực hiện này mới chỉ test trong trường hợp VM được chạy trên slave . Sau khi chuyển đổi role này thì VM vẫn chạy .

Phương án của Citrix : enable tính năng HA ( Bản Essential XenServer trá phí )

Page 4 of 13 RnD

Page 5: Bao Cao Viec Phat Trien Project Cloud Computing

PROJECT CLOUD COMPUTING BY RnDc) Vm nằm trên Master , Khi Master Down thì VM sẽ chuyển đổi sang Slave như

thế nào ?

Chưa Test được:

Note :NghiệpTC và LộcVT test ( deadline 21/05)

Phương án của Citrix : dùng XenMotion ( trả phí )

d) Monitor trạng thái Master Health và Slave Health

Đang tìm giải pháp .

Phương án của Citrix : enable tính năng HA ( Bản Essential XenServer trá phí )

Note: NghiệpTC và LộcVT thực hiện ( deadline 21/05)

Ngoài ra , còn 1 giải pháp khác là Eucalyptus . Đây là 1 giải pháp OpenSource mà NASA đang sử dụng . Dùng Xen cho việc merge các Server và tương thích với EC2 và S3 .

Giải quyết :

a) Đã xong . Nguyên nhân : do đĩa Rewrite Xen bị lỗi nên khi cài mất các option .

b) Việc change role khi Master down , slave lên thay : đã xong

Vấn đề chưa giải quyết được trong trường hợp này : Vẫn còn Down Time khoảng 7-10 phút khi change Role .

Command để đổi từ slave sang master:

xe pool-emergency-transition-to-master

Đứng từ các slave khác gõ

Xe pool-emergency-reset-master master-address= IP_new master

Việc change role này vẫn còn manual. Ta có thể tự động hóa dựa vào đoạn code.

xen_pool_emergency_transition_to_master(xen_session *session){

Page 5 of 13 RnD

Page 6: Bao Cao Viec Phat Trien Project Cloud Computing

PROJECT CLOUD COMPUTING BY RnD

xen_call_(session, "pool.emergency_transition_to_master", NULL, 0, NULL, NULL); return session->ok;}

boolxen_pool_emergency_reset_master(xen_session *session, char *master_address){ abstract_value param_values[] = { { .type = &abstract_type_string, .u.string_val = master_address } };

xen_call_(session, "pool.emergency_reset_master", param_values, 1, NULL, NULL); return session->ok;}

Vấn đề tồn tại ở đây cần phải có một module monitor và nhận biết trạng thái của Xen host và sau đó mới kích hoat các đoạn code trên

c) Đã chuyển được . Nhưng vẫn còn down time vì vấn đề này dính đến trường hợp b

d) Em và Nghiệp đề ra hướng giải quyết là dùng Ping . viết 1 đoạn script ping . Example : Ping 4 gói , nếu rớt cả 4 thì sẽ tự động change role

Tình huống mới :

a) Khi 1 Host trong Resource Pool down ( đồng nghĩa các VM nằm trên Host đó Down theo ) thì các VM sẽ chạy ngay lập tức trên Host khác .

Đã giải quyết được , nhưng vẫn còn manual . => Phương án giải quyết : script ( dùng perl ) hoặc viết Xen API ( có hỗ trợ )

Command chuyển VM sang host khác khi host chết:

- Reset power state of VM

xe vm-reset-powerstate vm=VM’name force=true

- Start VM

xe vm-start vm=VM’name

Page 6 of 13 RnD

Page 7: Bao Cao Viec Phat Trien Project Cloud Computing

PROJECT CLOUD COMPUTING BY RnD* Note: Việc chuyển đổi này ta có thể lập trình dựa module sau:

#include <string.h>

#include "xen_internal.h"#include <xen/api/xen_vm_operations.h>#include "xen_vm_operations_internal.h"

/* * Maintain this in the same order as the enum declaration! */static const char *lookup_table[] ={ "snapshot", "clone", "copy", "provision", "start", "start_on", "pause", "unpause", "clean_shutdown", "clean_reboot", "hard_shutdown", "power_state_reset", "hard_reboot", "suspend", "csvm", "resume", "resume_on", "pool_migrate", "migrate", "get_boot_record", "send_sysrq", "send_trigger", "changing_memory_live", "awaiting_memory_live", "changing_shadow_memory_live", "changing_VCPUs_live", "assert_operation_valid", "data_source_op", "update_allowed_operations", "make_into_template", "import", "export", "destroy", "undefined"};

extern xen_vm_operations_set *xen_vm_operations_set_alloc(size_t size){ return calloc(1, sizeof(xen_vm_operations_set) + size * sizeof(enum xen_vm_operations));

Page 7 of 13 RnD

Page 8: Bao Cao Viec Phat Trien Project Cloud Computing

PROJECT CLOUD COMPUTING BY RnD}

extern voidxen_vm_operations_set_free(xen_vm_operations_set *set){ free(set);}

const char *xen_vm_operations_to_string(enum xen_vm_operations val){ return lookup_table[val];}

extern enum xen_vm_operationsxen_vm_operations_from_string(xen_session *session, const char *str){ (void)session; return ENUM_LOOKUP(str, lookup_table);}

const abstract_type xen_vm_operations_abstract_type_ = { .typename = ENUM, .enum_marshaller = (const char *(*)(int))&xen_vm_operations_to_string, .enum_demarshaller = (int (*)(xen_session *, const char *))&xen_vm_operations_from_string };

const abstract_type xen_vm_operations_set_abstract_type_ = { .typename = SET, .child = &xen_vm_operations_abstract_type_ };

Trong trường hợp sử dụng lập trình thì ta cần phải có một module để nhận biết được trạng thái của các Xen host hay các VM để tương tác với module này. Hiện module tương tác em chưa tìm thấy trong phần SDK

Trường hợp này chỉ giải quyết được khi dùng phương pháp lưu trữ tập trung , hoặc các VM này đã được backup trên storage khác ( sẽ tốn thời gian restore ) vì nếu VM đc lưu trữ trên Disk của Host down , đồng nghĩa khi Disk down thì sẽ mất hết dữ liệu .

b) Lưu trữ tập trung :

Phương án : dùng SAN

Page 8 of 13 RnD

Page 9: Bao Cao Viec Phat Trien Project Cloud Computing

PROJECT CLOUD COMPUTING BY RnDTheo tụi em nghĩ , nếu lưu trữ tập trung theo cách dùng đĩa thông thường là dùng 1 server storage để lưu trữ tập trung sẽ không hiệu quả .

Giả sử trường hợp có hơn 1000 VM và các VM này đồng thời lấy dữ liệu từ server storage cùng 1 lúc thì khả năng chịu tải là không thể .

Nếu lưu trữ theo từng Host : Tốn rất lớn thời gian restore và backup . Khi Host down dẫn đến mất hết dữ liệu và phải restore từ Server Storage sang .

Tụi em đã viết xong báo cáo này và đang tiếp tục nghiên cứu , tìm ra các trường hợp khác . Mong anh Hà góp ý và quyết định giúp tụi em sẽ tiếp tục nghiên cứu Xen hay là sẽ delay và chuyển qua Eucalyptus . Xin cảm ơn anh !

c) Nếu tiếp tục dự án , tụi em sẽ nghiên cứu qua phần Backup và Recovery host và VM khi đang hoạt động và khi có sự cố .

Link tham khảo: http://forums.citrix.com/thread.jspa?threadID=238149&tstart=0

Page 9 of 13 RnD

Page 10: Bao Cao Viec Phat Trien Project Cloud Computing

PROJECT CLOUD COMPUTING BY RnD

Các Mô hình và ưu khuyết điểm :

Mô hình 1 :

Với :

Xen 1: Master của Resource Pool

Xen 2 : Slave của Resource Pool

Xen 3 : Slave của Resource Pool

Xen Center : Server quản lý các Xen

Page 10 of 13 RnD

Page 11: Bao Cao Viec Phat Trien Project Cloud Computing

PROJECT CLOUD COMPUTING BY RnD

Với mô hình như trên các storage sẽ được lưu trữ trên từng server .

Ưu : Tiết kiệm được rất nhiều chi phí .

Khuyết : không có khả năng reduntdant , khi 1 server chết thì các information của VM trên từng server sẽ gần như mất toàn bộ ( các VM được lưu trữ trên disk của mỗi Xen Server )

Mô hình 2 :

Mô hình 2 Lưu trữ tập trung trên Server Open Filer .

Ưu : quản lý tập trung . các VM sẽ được lưu trữ trên open filer . Khi Xen1 down thì VM trên XEN1 có thể start trên Xen 2 .

Khuyết : Nếu OpenFiler down thì toàn bộ dữ liệu VM sẽ down .

Dễ bị bottleneck vì tất cả VM sẽ truy xuất từ server OpenFiler.

Page 11 of 13 RnD

Page 12: Bao Cao Viec Phat Trien Project Cloud Computing

PROJECT CLOUD COMPUTING BY RnDCó thể khắc phục bằng cách tạo thêm 1 server open filer để backup . Tuy nhiên vẫn không khắc phục được tốc độ truy xuất từ Vm đến Server

Mô hình 3 : Lưu trữ tập trung trên SAN

Ưu : Đảm bảo reduntdant . Tốc độ truy xuất từ VM đến Server cao , hiệu quả và ổn định .

Khuyết : Tốn kém chi phí rất cao . Khó quản lý vì hệ thống SAN cần maintenance .

d) Vấn đề mới về API

Page 12 of 13 RnD

Page 13: Bao Cao Viec Phat Trien Project Cloud Computing

PROJECT CLOUD COMPUTING BY RnDTa có thể dựa vào các module sẵn có trong SDK để lập trình API cho cho XenServer trong việc cấp phát tài nguyên, backup…

Tình hình nghiên cứu

- Import được SDK VM vào Xenserver

- Chỉ mới tìm hiểu lý thuyết và các đoạn code mẫu

- Chưa biên dịch và chạy các ví dụ SDK được

- Link tham khảo : http://www.xen.org/files/XenCloud/sdk.pdf

Page 13 of 13 RnD