View
107
Download
0
Category
Preview:
Citation preview
PROJECT CLOUD COMPUTING BY RnD
PROJECTCLOUD COMPUTING
Page 1 of 13 RnD
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
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
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
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
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
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
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
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
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
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
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
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
Recommended