Theo Rajkumar Buyya: Cloud là một loại hệ thống phân bố và xử lý song gồm các máy tính ảo kết nối với nhau và được cung cấp động cho người dùng như một hoặc nhiều tài nguyên đồng nhất dự
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HCMĐẠI HỌC CÔNG NGHỆ THÔNG TIN
- -BÁO CÁO ĐỒ ÁN MÔN HỌC
Mã HV: CH1301044 Ngành: KHOA HỌC MÁY TÍNH
Trang 2BÁO CÁO ĐỒ ÁN MÔN HỌC
TOÁN CHO MÁY TÍNH
ĐỀ TÀI
GOOGLE APP ENGINE GIẢI PHÁP CHO ĐIỆN
TOÁN ĐÁM MÂY
GVHD: PGS TS Nguyễn Phi Khứ
Trang 3Học viên: Nhan Thanh Nhã
Mã HV: CH1301044 Ngành: KHOA HỌC MÁY TÍNH Lớp: Cao học Khóa 8
TP.HCM 06/ 2014
MỤC LỤC
Trang 4LỜI MỞ ĐẦU
Ngày nay công nghệ thông tin phát triển đóng vai trò hết sức quan trọng trong việc thúc đấy sự tăng trưởng kinh tế Các công nghệ mới ra đời rất nhiều, làm cho các dịch vụ CNTT cũng phải thường xuyên sáng tạo đổi mới, nhằm đáp ứng nhu cầu của người sử dụng Tuy nhiên, việc ứng dụng một công nghệ hay một dịch vụ CNTT đáp ứng việc quản lý tốt, hiệu quả dữ liệu của riêng công ty cũng như dữ liệu khách hàng, đối tác là một trong những bài toán được ưu tiên hàng đầu và đang không ngừng gây khó khăn cho doanh nghiệp Để có thể quản lý được nguồn dữ liệu đó, ban đầu các doanh nghiệp phải đầu tư, tính toán rất nhiều loại chi phí như chi phí cho phần cứng, phần mềm, mạng, chi phí cho quản trị viên, chi phí bảo trì, sửa chữa, … Ngoài ra họ còn phải tính toán khả năng mở rộng, nâng cấp thiết bị; phải kiểm soát việc bảo mật
dữ liệu cũng như tính sẵn sàng cao của dữ liệu Để có thể quản lý được nguồn dữ liệu đó, ban đầu các doanh nghiệp Để giải quyết vấn đề trên thì chúng ta thấy được rằng nếu có một nơi tin cậy giúp các doanh nghiệp quản lý tốt nguồn dữ liệu đó, các doanh nghiệp sẽ không còn quan tâm đến cơ sở hạ tầng, công nghệ mà chỉ tập trung chính vào công việc kinh doanh của họ thì sẽ mang lại cho họ hiệu quả và lợi nhuận ngày càng cao hơn Khái niệm “điện toán đám mây” đã ra đời trong hoàn cảnh đó
và đang dần trở nên quen thuộc đối với các doanh nghiệp, đặc biệt là đối với các doanh nghiệp vừa và nhỏ
Trong đề tài sẽ trình bày các phần chính như sau:
Chương 1: TỔNG QUAN VỀ CLOUD COMPUTIONG
Chương 2: CẤU TRÚC MỘT ĐÁM MÂY MÃ NGUỒN MỞ
Chương3: GOOGLE APP ENGINE
Chương4: Tạo PROJECT
HVTH: Nhan Thanh Nhã Page 4
Trang 5CHƯƠNG 1: TỔNG QUAN VỀ CLOUD
COMPUTING
1.1 Định Nghĩa CLOUD COMPUTING
Điện toán đám mây đã trở thành từ rất thông dụng Tuy nhiên, có hàng chục định nghĩa khác nhau cho Cloud Computing và có vẻ là không có sự đồng thuận về những gì một Cloud, Mặt khác, điện toán đám mây không phải là một khái niệm hoàn toàn mới, nó có kết nối phức tạp đến tương đối mới nhưng mười ba năm thành lập mô hình tính toán mạng lưới và các công nghệ có liên quan khác như điện toán tiện ích, điện toán cụm, và hệ thống phân phối nói chung
Theo Gartner (http://www.buildingthecloud.co.uk/) :
“Một mô hình điện toán nơi mà khả năng mở rộng và linh hoạt về công nghệ thông tin được cung cấp như một dịch vụ cho nhiều khách hàng đang sử dụng các công nghệ trên Internet”
Theo Ian Foster:
“Một mô hình điện toán phân tán có tính co giãn lớn mà hướng theo co giãn về mặt kinh tế, là nơi chứa các sức mạnh tính toán, kho lưu trữ, các nền tảng (platform) và các dịch vụ được trực quan, ảo hóa và co giãn linh động, sẽ được phân phối theo nhu cầu cho các khách hàng bên ngoài thông qua Internet”
Theo Rajkumar Buyya: Cloud là một loại hệ thống phân bố và xử lý song gồm các máy tính ảo kết nối với nhau và được cung cấp động cho người dùng như một hoặc nhiều tài nguyên đồng nhất dựa trên sự thỏa thuận dịch vụ giữa nhà cung cấp và người sử dụng
Trang 6Hình 1.1 Mọi thứ đều tập trung vào đám mây
Từ hai định nghĩa của Ian Foster và Rajkumar Buyya đều định nghĩa Cloud Computing là một hệ phân bố, cung cấp các dạng tài nguyên ảo dưới dạng dịch vụ một cách linh động theo nhu cầu của người dùng trên môi trường internet
Trang 71.2 Mô hình dịch vụ.
Hình 1.2 Mô hình dịch vụ
2.2.1. Infrastructure as a Service – IaaSLogic toán là gì?
Tầng đáy của đám mây là tầng các dịch vụ cơ sở hạ tầng Ở đây, chúng ta thấy một tập hợp các tài sản vật lí như các máy chủ, các thiết bị mạng và các đĩa lưu trữ được đưa ra như là các dịch vụ được cung cấp cho người tiêu dùng Trong loại dịch vụ này, khách hàng được cung cấp những tài nguyên máy tính cơ bản (như bộ xử lý, dung lượng lưu trữ, các kết nối mạng…) Khách hàng sẽ cài hệ điều hành, triển khai ứng dụng và có thể nối các thành phần như tường lửa và bộ cân bằng tải Nhà cung cấp dịch vụ sẽ quản lý cơ sở hạ tầng cơ bản bên dưới, khách hàng sẽ phải quản lý hệ điều hành, lưu trữ, các ứng dụng triển khai trên hệ thống, các kết nối giữa các thành phần
Cũng như với các dịch vụ nền tảng, sự ảo hóa là một phương pháp thường được sử dụng
để tạo ra chế độ phân phối các nguồn tài nguyên theo yêu cầu Ví dụ về các dịch vụ cơ sở hạ tầng bao gồm IBM Bluehouse, VMware, Amazon EC2, Microsoft Azure Platform, Sun
ParaScale Cloud Storage và nhiều hơn nữa Các dịch vụ cơ sở hạ tầng tập trung vào vấn đề trang bị đúng các trung tâm dữ liệu bằng cách đảm bảo công suất điện toán khi cần thiết Ngoài
ra, do thực tế là các kỹ thuật ảo hóa thường được sử dụng trong tầng này, nên có thể thấy rõ sự tiết kiệm chi phí do việc sử dụng nguồn lực hiệu quả mang lại
Những đặc trưng tiêu biểu:
Trang 8• Cung cấp tài nguyên như là dịch vụ: bao gồm cả máy chủ, thiết bị mạng, bộ nhớ, CPU, không gian đĩa cứng, trang thiết bị trung tâm dữ liệu.
• Khả năng mở rộng linh hoạt
• Chi phí thay đổi tùy theo thực tế
• Nhiều người thuê có thể cùng dùng chung trên một tài nguyên
• Cấp độ doanh nghiệp: đem lại lợi ích cho công ty bởi một nguồn tài nguyên tích toán tổng hợp
2.2.2. Platform as a Service – PaaS
Nhà cung cấp dịch vụ sẽ cung cấp một nền tảng (platform) cho khách hàng Khách hàng sẽ tự phát triển ứng dụng của mình nhờ các công cụ và môi trường phát triển được cung cấp hoặc cài đặt các ứng dụng sẵn có trên nền platform đó Khách hàng không cần phải quản lý hoặc kiểm soát các cơ sở hạ tầng bên dưới bao gồm cả mạng, máy chủ, hệ điều hành, lưu trữ, các công cụ, môi trường phát triển ứng dụng nhưng quản lý các ứng dụng mình cài đặt hoặc phát triển
Ở tầng này chúng ta thấy cơ sở hạ tầng ứng dụng nổi lên như là một tập hợp các dịch vụ Dịch vụ này nhưng không bị hạn chế tầng giữa như là một dịch vụ, truyền thông như là một dịch vụ, tích hợp như là một dịch vụ, thông tin như là một dịch vụ, kết nối như một dịch vụ, v.v Các dịch vụ ở đây được dành để hỗ trợ cho các ứng dụng Các ứng dụng này có thể đang chạy trong đám mây và chúng có thể đang chạy trong một trung tâm dữ liệu doanh nghiệp truyền thống hơn Để đạt được khả năng mở rộng cần thiết trong một đám mây, các dịch vụ khác nhau được đưa ra ở đây thường được ảo hóa Các ví dụ về các đề nghị trong phần này của đám mây bao gồm các ảnh ảo của IBM® WebSphere® Application Server virtual images, Amazon Web Services, Boomi, Cast Iron, và Google App Engine.Các dịch vụ nền tảng này cho phép người tiêu dùng chắc chắn rằng các ứng dụng của họ được trang bị để đáp ứng các nhu cầu của người dùng bằng cách cung cấp cơ sở hạ tầng ứng dụng dựa theo yêu cầu
Những đặc trưng tiêu biểu:
• Phục vụ cho việc phát triển, kiêm thử, triển khai và vận hành ứng dụng giống như
là môi trường phát triển tích hợp
• Các công cụ khởi tạo với giao diện trên nền web
• Kiến trúc đồng nhất
• Tích hợp dịch vụ web và cơ sở dữ liệu
• Hỗ trợ cộng tác nhóm phát triển
• Công cụ hỗ trợ tiện tích
Sự thuận lợi của PaaS:
• Dịch vụ nền tảng (PaaS) đang ở thời kì đầu và được ưa chuộng ở những
tính năng vốn được ưa thích bơi dịch vụ phần mềm (đề cập sau), bên cạnh
đó có tích hợp các yếu tố về nền tảng hệ thống
Trang 9• Ưu điểm trong những dự án tập hợp những công việc nhóm có sự phân tán về địa lý.
• Khả năng tích hợp nhiều nguồn của dich vụ web
• Giảm chi phí ngoài lề khi tích hợp các dịch vụ về bảo mật, khả năng mở
rộng, kiểm soát lỗi…
• Giảm chi phí khi trừu tượng hóa công việc lập trình ở mức cao để tạo dục
vụ, giao diện người dùng và các yếu tố ứng dụng khác
• Mong đợi ở người dùng có kiến thức có thể tiếp tục hoàn thiện và hỗ trợ
tương tác với nhiều người để giúp xác định mức đô khó khăn của vấn đề
chúng ta gặp phải
• Hướng việc sử dụng công nghệ để đạt được mục đích tạo điều kiện dễ
dàng hơn cho việc phát triển ứng dụng đa người dùng cho những người
không chỉ trong nhóm lập trình mà có thể kết hợp nhiều nhóm cùng làm
việc
Về khó khăn:
• Ràng buộc bởi nhà cung cấp: do giới hạn phụ thuộc và dịch vụ của nhà
cung cấp
• Giới hạn phát triển: độ phức tạp khiến nó không phù hợp với yêu cầu phá
triển nhanh vì những tính năng phức tạp khi hiện thực trên nền tảng web
2.2.3. Software as a Service – SaaS
Đây là mô hình dịch vụ mà trong đó nhà cung cấp dịch vụ sẽ cung cấp cho khách hàng một phần mềm dạng dịch vụ hoàn chỉnh Khách hàng chỉ cần lựa chọn ứng dụng phần mềm nào phù hợp với nhu cầu và chạy ứng dụng đó trên cơ sở hạ tầng Cloud Mô hình này giải phóng người dùng khỏi việc quản lý hệ thống, cơ sở hạ tầng, hệ điều hành… tất cả sẽ do nhà cung cấp dịch vụ quản lý và kiểm soát để đảm bảo ứng dụng luôn sẵn sàng và hoạt động ổn định
Tầng này có lẽ là hầu như quen thuộc với người dùng Web hàng ngày Tầng các dịch vụ ứng dụng này lưu trữ các ứng dụng phù hợp với mô hình SaaS Đây là những ứng dụng chạy trong một đám mây và được cung cấp theo yêu cầu về các dịch vụ cho người dùng Đôi khi các dịch vụ này được cung cấp miễn phí và các nhà cung cấp dịch vụ tạo ra doanh thu từ những thứ khác như là các quảng cáo Web và nhiều khi các nhà cung cấp ứng dụng tạo ra doanh thu trực tiếp từ việc sử dụng dịch vụ Âm thanh quen thuộc quá phải không? Nó có lẽ làm như vậy
kể từ khi hầu hết tất cả chúng ta đã sử dụng chúng Nếu bạn đã từng gửi tệp thuế của bạn trực tuyến bằng cách sử dụng Turbo taxe, kiểm tra thư của bạn khi sử dụng Gmail hoặc Yahoo Mail
Trang 10hoặc theo kịp các cuộc hẹn khi sử dụng Google Calendar, thì bạn đã quen thuộc với tầng trên cùng của đám mây Đây chỉ là một vài ví dụ về các kiểu ứng dụng này Thật vậy có hàng ngàn ứng dụng SaaS và số lượng phát triển hàng ngày nhờ các công nghệ Web 2.0.
Có lẽ không hoàn toàn rõ ràng với đa số công chúng về việc có nhiều ứng dụng trong tầng các dịch vụ ứng dụng được chuyển trực tiếp tới cộng đồng doanh nghiệp Ở đó có lưu trữ các yêu cầu phần mềm có sẵn để xử lý bảng lương, quản lý nguồn nhân lực, cộng tác, quản lý quan hệ khách hàng, quản lý mối quan hệ đối tác kinh doanh và nhiều hơn nữa Các ví dụ phổ biến về các yêu cầu này bao gồm IBM® Lotus® Live, IBM Lotus Sametime®, Unyte,
Salesforce.com, Sugar CRM, và WebEx
Trong cả hai trường hợp, các ứng dụng được cung cấp qua mô hình SaaS làm lợi cho người tiêu dùng bằng cách giải phóng cho họ khỏi việc cài đặt và bảo trì phần mềm và các ứng dụng có thể được sử dụng thông qua các mô hình cấp phép có hỗ trợ trả tiền để sử dụng các khái niệm
Những đặc trưng tiêu biểu:
• Phần mềm sẵn có đòi hỏi việc truy xuất, quản lý qua mạng
• Quản lý các hoạt động từ một vị trí tập trung hơn là tại mỗi nơi của khách hàng, cho phép khác hàng truy xuất từ xa thông qua web
• Cung cấp ứng dụng thông thường gần gũi với mô hình ánh xạ từ một đến nhiều hơn là mô hình 1:1 bao gồm cả các đặc trưng kiến trúc, giá cả và quản lý
• Những tính năng tập trung nâng cấp, giải phóng người dùng khỏi việc tải các bản
vá lỗi và cập nhật
• Thường xuyên tích hợp những phần mềm giao tiếp trên mạng diện rộng
1.3 Mô hình triển khai
Hình 1.3 Mô hình triển khai
1.3.1. Public Cloud
Đám mây công cộng là các dịch vụ đám mây được một bên thứ ba (người bán) cung cấp Chúng tồn tại ngoài tường lửa công ty và chúng được lưu trữ đầy đủ và được nhà cung cấp đám mây quản lý
Trang 11Các đám mây cong cộng cố gắng cung cấp cho người tiêu dùng với các phần tử công nghệ thông tin tốt nhất Cho dù đó là phần mềm, cơ sở hạ tầng ứng dụng hoặc cơ sở hạ tầng vật lý, nhà cung cấp đám mây chịu trách nhiệm về cài đặt, quản lý, cung cấp và bảo trì Khách hàng chỉ chịu phí cho các tài nguyên nào mà họ sử dụng, vì thế cái chưa sử dụng được loại bỏ.Tất nhiên điều này liên quan đến chi phí Các dịch vụ này thường được cung cấp với
"quy ước về cấu hình," nghĩa là chúng được phân phối với ý tưởng cung cấp các trường hợp sử dụng phổ biến nhất Các tùy chọn cấu hình thường là một tập hợp con nhỏ hơn so với những gì
mà chúng đã có nếu nguồn tài nguyên đã được người tiêu dùng kiểm soát trực tiếp Một điều khác cần lưu ý là kể từ khi người tiêu dùng có quyền kiểm soát một chút trên cơ sở hạ tầng, các quy trình đòi hỏi an ninh chặt chẽ và tuân thủ quy định dưới luật không phải lúc nào cũng thích hợp cho các đám mây chung
sử dụng và chi phí hoạt động liên tục của đám mây có thể vượt quá chi phí của việc sử dụng một đám mây chung
Các đám mây riêng đưa ra nhiều lợi thế hơn so với loại chung Việc kiểm soát chi tiết hơn trên các tài nguyên khác nhau đang tạo thành một đám mây mang lại cho công ty tất cả các tùy chọn cấu hình có sẵn Ngoài ra, các đám mây riêng là lý tưởng khi các kiểu công việc đang được thực hiện không thiết thực cho một đám mây chung, do đúng với các mối quan tâm về an ninh và về quản lý
1.3.3. Hybrid Cloud
Các đám mây lai là một sự kết hợp của các đám mây công cộng và riêng Những đám mây này thường do doanh nghiệp tạo ra và các trách nhiệm quản lý sẽ được phân chia giữa doanh nghiệp và nhà cung cấp đám mây công cộng Đám mây lai sử dụng các dịch vụ có trong
cả không gian công cộng và riêng
Các đám mây lai là câu trả lời khi một công ty cần sử dụng các dịch vụ của cả hai đám mây riêng và công cộng Theo hướng này, một công ty có thể phác thảo các mục tiêu và nhu cầu của các dịch vụ và nhận được chúng từ đám mây công cộng hay riêng, khi thích hợp Một đám mây lai được xây dựng tốt có thể phục vụ các quy trình nhiệm vụ-tới hạn, an toàn, như
Trang 12nhận các khoản thanh toán của khách hàng, cũng như những thứ là không quan trọng bằng kinh doanh, như xử lý bảng lương nhân viên.
Hạn chế chính với đám mây này là sự khó khăn trong việc tạo ra và quản lý có hiệu quả một giải pháp như vậy Phải có thể nhận được và cung cấp các dịch vụ lấy từ các nguồn khác nhau như thể chúng có nguồn gốc từ một chỗ và tương tác giữa các thành phần riêng và chung
có thể làm cho việc thực hiện thậm chí phức tạp hơn nhiều Do đây là một khái niệm kiến trúc tương đối mới trong điện toán đám mây, nên cách thực hành và các công cụ tốt nhất về loại này tiếp tục nổi lên và bất đắc dĩ chấp nhận mô hình này cho đến khi hiểu rõ hơn
Trang 13CHƯƠNG 2: CẤU TRÚC CỦA MỘT ĐÁM MÂY
NGUỒN MỞ
2.1.Cấu trúc điện toán đám mây
Mặc dù không phải là một yêu cầu, nhưng công nghệ ảo hóa mang lại các lợi ích có một không hai để xây dựng các kiến trúc có khả năng mở rộng động Ngoài khả năng mở rộng, công nghệ ảo hóa còn đưa vào khả năng di chuyển các máy ảo (VM) giữa các máy chủ vật lý dùng cho các mục đích cân bằng tải Hình 2.1 cho thấy rằng thành phần ảo hóa được tạo ra bởi
một tầng phần mềm có tên là tầng siêu giám sát -hypervisor (đôi khi được gọi là giám sát máy
ảo [VMM]) Tầng này tạo ra khả năng chạy đồng thời nhiều hệ điều hành (và các ứng dụng của chúng) trên một máy tính vật lý Trên tầng siêu giám sát là đối tượng gọi là máy ảo chứa
đựng hệ điều hành, các ứng dụng và cấu hình Theo tùy chọn, sự mô phỏng thiết bị có thể được tạo ra trong tầng siêu giám sát hoặc như là một máy ảo Cuối cùng, do tính chất năng động mới của công nghệ ảo hóa và các khả năng mới do nó mang lại, cần có các lược đồ quản lý mới Việc quản lý này tốt nhất được thực hiện trong các tầng, khi tính đến quản lý cục bộ tại máy chủ, cũng như quản lý cơ sở hạ tầng mức cao hơn, tạo ra sự phối hợp tổng thể của môi trường
ảo
Hình 2.1 Các phần tử cốt lõi của một nút trong đám mây
Nếu bạn lấy các nút mạng như Hình 2.1 và nhân chúng lên nhiều lần trên một mạng vật
lý với lưu trữ có chia sẻ, phối hợp quản lý trên toàn bộ cơ sở hạ tầng, rồi cung cấp cân bằng tải ban đầu của các kết nối đến (cho dù theo cách thiết lập công cộng hay riêng tư) với việc lưu trữ
nhanh và lọc, bạn có một cơ sở hạ tầng ảo được gọi là đám mây Cấu trúc mới này được chỉ ra
trong Hình 2.2 Các máy không hoạt động có thể được tắt nguồn điện cho đến khi cần bổ sung
Trang 14thêm khả năng tính toán (tạo ra hiệu năng tốt hơn), với các máy ảo được cân bằng (thậm chí là động) trên các nút tùy thuộc vào tải riêng của chúng
Hình 2.2 Cơ sở hạ tầng điện toán đám mây
Với kiến trúc cơ bản của một đám mây đã xác định, bây giờ chúng ta hãy tìm hiểu xem nguồn mở đang được áp dụng ở đâu để xây dựng cơ sở hạ tầng điện toán đám mây động
Trang 152.2.Các công nghệ mã nguồn mở cốt lõi
Bối cảnh Linux đang chứng kiến một làn sóng phát triển tập trung vào các cơ sở hạ tầng được ảo hóa dành cho việc ảo hóa, quản lý và tích hợp với quy mô lớn hơn của các gói phần mềm đám mây Chúng ta hãy bắt đầu xem xét mã nguồn mở ở cấp nút mạng riêng lẻ, sau đó chuyển lên toàn bộ cơ sở hạ tầng để xem chuyện gì đang xảy ra ở đây
2.3.Các tầng siêu giám sát
Cơ sở của đám mây ở cấp nút mạng là tầng siêu giám sát Mặc dù việc ảo hóa không phải
là một yêu cầu, nhưng nó cung cấp khả năng không thể thiếu được cho các kiến trúc có khả năng mở rộng và có hiệu năng Ở đó tồn tại một số giải pháp ảo hóa mã nguồn mở, nhưng có hai giải pháp chủ yếu là chuyển đổi hệ điều hành Linux thành một tầng siêu giám sát: KVM (Linux Kernel Virtual Machine - Máy ảo nhân Linux) và Lguest KVM là giải pháp tầng siêu giám sát chính thức, được triển khai trong môi trường sản xuất Lguest là một giải pháp tập trung vào Linux, chỉ chạy các máy ảo Linux, nhưng được tích hợp trong nhân (kernel) và đang được sử dụng rộng rãi hơn
Ngoài việc chuyển đổi Linux thành tầng siêu giám sát, có những giải pháp khác chọn cách tiếp cận tập trung vào máy ảo khách UML (User-Mode Linux - Linux trong chế độ người dùng) là một cách tiếp cận, sửa đổi nhân (kernel) Linux máy khách để chạy trên hệ điều hành Linux (không có phần mở rộng tầng siêu giám sát) Vì hầu hết người dùng muốn chạy một nhân chưa sửa đổi, nên các giải pháp ảo hóa đầy đủ (như KVM) được ưa thích hơn
Cách tiếp cận UML này cũng rất phổ biến, nhưng đòi hỏi phần cứng ảo hóa (như là bàn điều khiển, đĩa ảo và kết nối mạng)
2.4. Mô phỏng thiết bị
Tầng siêu giám sát cung cấp các phương tiện để chia sẻ CPU với nhiều hệ điều hành (ảo hóa CPU), nhưng để cung cấp công nghệ ảo hóa đầy đủ, toàn bộ môi trường phải được ảo hóa cho các máy ảo Việc mô phỏng máy — hay nền tảng — có thể được thực hiện theo một số cách, nhưng một gói mã nguồn mở phổ biến hỗ trợ một số các tầng siêu giám sát được gọi là QEMU QEMU là trình mô phỏng và tầng siêu giám sát đầy đủ Nhưng KVM sử dụng QEMU
để mô phỏng thiết bị như một quá trình riêng biệt trong vùng người dùng (xem Hình 2.1) Một tính năng thú vị của QEMU là vì nó cung cấp mô phỏng đĩa (thông qua định dạng QCOW), nên QEMU cung cấp các tính năng cao cấp khác như ảnh chụp nhanh và di chuyển máy ảo sống
Kể từ nhân 2.6.25, KVM sử dụng virtio như là một phương tiện tối ưu hóa hiệu năng ảo hóa vào/ra Virtio thực hiện điều này bằng cách đưa vào các trình điều khiển có ảo hóa một phần vào tầng siêu giám sát với các móc nối từ máy khách để mang lại hiệu năng đến mức gần
Trang 16như nguyên bản Việc này chỉ thực hiện được khi hệ điều hành có thể được sửa đổi cho mục đích này, nhưng tìm ra được cách sử dụng trong máy khách Linux trong các kịch bản tầng siêu giám sát của Linux
Hiện nay, virtio và QEMU hoạt động cùng với nhau sao cho các giao dịch thiết bị được
mô phỏng có thể được tối ưu hóa giữa máy khách Linux và bộ mô phỏng QEMU trong vùng người sử dụng
Nối mạng ảo
Do các máy ảo hợp nhất trong các máy chủ vật lý, nên các nhu cầu nối mạng của nền tảng này tăng lên Nhưng thay vì bắt buộc tất cả nối mạng các máy ảo tới các lớp vật lý của nền tảng này, để thay thế thì truyền thông nội bộ có thể tự được ảo hóa Để tối ưu hóa truyền
thông mạng giữa các máy ảo, có đưa vào chuyển mạch ảo Chuyển mạch ảo vSwitch hoạt động
giống như một chuyển mạch vật lý, nhưng được ảo hóa trong nền tảng này (xem Hình 2.3) Trong hình này, các giao diện được ảo hóa (VIF) đã liên kết với các máy ảo truyền thông qua chuyển mạch ảo tới các giao diện vật lý (các PIF)
Hình 2.3 Khung nhìn mức cao của Open vSwitch với các giao diện ảo và giao diện vật lý
Nguồn mở cũng đang giải quyết vấn đề này, bằng một giải pháp rất thú vị được gọi là
Open vSwitch Ngoài việc cung cấp một chuyển mạch ảo cho các môi trường ảo, vSwitch cũng
có thể tích hợp ngang qua các nền tảng vật lý và cung cấp các tính năng mức doanh nghiệp như các mạng cục bộ ảo (VLAN), Chất lượng dịch vụ (QoS) dựa trên quyền ưu tiên, trung chuyển và hỗ trợ tăng tốc phần cứng (như các bộ điều hợp mạng ảo hóa vào/ra một gốc [IOV-single-root I/O virtualization]) Open vSwitch hiện có sẵn cho các nhân 2.6.15 và hỗ trợ một loạt các giải pháp ảo hóa dựa trên Linux (Xen, KVM, VirtualBox) và các tiêu chuẩn quản lý
Trang 17(Remote Switched Port Analyzer - Bộ phân tích cổng được chuyển mạch từ xa [RSPAN], NetFlow, v.v )
Các công cụ và các công nghệ máy ảo
Do các máy ảo là sự kết hợp của hệ điều hành, hệ thống tệp gốc và cấu hình, nên không gian này đã chín muồi để phát triển công cụ Nhưng để thấy rõ tiềm năng đầy đủ của các máy
ảo và các công cụ, phải có một cách di động để lắp ráp chúng Cách tiếp cận hiện tại, được gọi
là Định dạng ảo hóa mở (OVF: Open Virtualization Format) là một cấu trúc máy ảo linh hoạt,
hiệu quả và di động OVF gói gọn một hình ảnh đĩa ảo trong một trình bao gói XML định nghĩa cấu hình của máy ảo, bao gồm các yêu cầu cấu hình nối mạng, bộ xử lý và bộ nhớ và một loạt siêu dữ liệu mở rộng để định nghĩa thêm các nhu cầu hình ảnh và nền tảng của nó Khả năng quan trọng mà OVF cung cấp là tính di động để phân phối các máy ảo theo cách mà tầng siêu giám sát không thể biết được
Hiện có một số tiện ích để quản lý các ảnh máy ảo (VMI) cũng như chuyển đổi chúng sang và từ các định dạng khác ovftool của VMware là một công cụ hữu ích mà bạn có thể sử dụng để chuyển đổi VMI (ví dụ, để chuyển đổi từ định dạng Bộ dụng cụ phát triển đĩa ảo VMware [VMDK: VMware Virtual Disk Development Kit] sang OVF) Công cụ này và các công cụ khác rất hữu ích một khi bạn có một VMI, nhưng điều gì sẽ xảy ra nếu bạn có một máy chủ vật lý mà bạn muốn chuyển đổi thành một VMI? Bạn có thể sử dụng một công cụ hữu
ích được gọi là Clonezilla cho mục đích này Mặc dù lúc khởi đầu Clonezilla được phát triển
như một công cụ sao chép đĩa dùng để phục hồi sau thảm họa, những bạn có thể sử dụng nó để chuyển đổi một thực thể máy chủ vật lý thành máy ảo để triển khai dễ dàng trong một cơ sở hạ tầng ảo hóa Rất nhiều công cụ khác hiện có (như là các tiện ích được xây dựng trên libvirt) hoặc đang được phát triển để chuyển đổi và quản lý khi định dạng OVF được chấp nhận
Trang 18các máy ảo giữa các nền tảng Khi sử dụng libvirt, có thể sử dụng trình vỏ (shell) của nó (được xây dựng trên libvirt), được gọi là virsh
Trang 19CHƯƠNG 3: GOOGLE APP ENGINE
3.1 Giới thiệu
Google App Engine (gọi tắt là AppEngine, một số trường hợp được viết tắt là GAE ) là giải pháp cho vấn đề điện toán đám mây Ở đó, Google cung cấp sẵn một hệ thống máy chủ điện toán đám mây, và người lập trình sẽ viết ứng dụng của mình lên đó Ứng dụng này sẽ chạy trên đám mây của Google Google App Engine cho phép bạn chạy các ứng dụng web của bạn trên cơ sở hạ tầng của Google App Engine ứng dụng được dễ dàng để xây dựng, dễ bảo trì, và dễ dàng để có quy mô như giao thông của bạn và nhu cầu lưu trữ dữ liệu lớn Với App Engine, không có máy chủ để duy trì: Bạn chỉ cần tải lên các ứng dụng của bạn, và nó sẵn sàng
để phục vụ người dùng của bạn Bạn có thể sử dụng tên miền riêng của mình (chẳng hạn như http://www.example.com/ ) thông qua google apps Hoặc bạn có thể dùng sub-domain miễn phí của appspot.com GAE cho phép được host miễn phí với dung lượng 500 MB lưu trữ và cho phép 10 GB băng thông lưu chuyển mỗi ngày hay tương đương 5 triệu pageview hàng tháng,Vượt qua mức này bạn sẽ phải trả phí Dùng GAE, chúng ta khỏi phải thiết kế database, viết SQL để truy vấn data, map data vô object Chúng ta chỉ cần design các class và GAE tự động lo phần làm việc với database Hiện AppEngine hỗ trợ 2 loại ngôn ngữ là: Python và Java Một số ngôn ngữ khác như PHP cũng có thể chạy được nếu cài cùng với bộ chuyển từ PHP sang Java
3.2 Môi trường phát triển
Một ứng dụng App Engine đáp ứng các yêu cầu web Một yêu cầu web sẽ bắt đầu khi
có một người dùng hay điển hình là các trình duyệt web của người dùng gửi một yêu cầu truy cập vào ứng dụng thông qua giao thức HTTP Khi App Engine nhậ n được yêu cầu, nó sẽ xác định ứng dụng dựa vào tên miền, hoặc tên miền con của appspot.com (cung cấp miễn phí mỗi ứng dụng) hoặc là một tên miền riêng của chúng ta đã được đăng kí và thiết lập với Google Apps App Engine lựa chọn một máy chủ từ nhiều máy chủ để xử lý các yêu cầu đó Sau đó, App Engine sẽ gửi các yêu cầu đã nhận được từ người dùng đến ứng dụng phù hợp để xử lý, sau khi đã xử lý xong các ứng dụng này sẽ gửi dữ liệu trả về cho App Engine, App Engine sẽ nhận dữ liệu phản hồi từ các ứng dụng và trả về cho người dùng thông qua trình duyệt web
Theo góc nhìn của ứng dụng, môi trường thực thi chỉ xuất hiện và tồn tại khi bắt đầu một yêu cầu và sẽ biến mất khi yêu cầu đó được đáp ứng xong App Engine cung cấp tối thiểu
2 cách thức lưu trữ dữ liệu tồn tại giữa các yêu cầu , nhưng các cơ chế này tồn tại bên ngoài môi trường thực thi Môi trường thực thi sẽ không duy trì trạng thái giữa các yêu cầu, hoặc ít nhất không mong muốn các trạng thái sẽ được duy trì giữa các yêu cầu App Engine có thể
Trang 20phân phát lưu lượng truy cập trong nhiều server, vì nó cần phải đáp ứng cho nhiều yêu cầu xử
lý như nhau, bất kể có bao nhiêu lưu lượng truy cập nó sẽ xử lý cùng một lúc
Bản thân GAE có cơ chế để quản lý các trạng thái của từng yêu cầu trong mỗi ứng dụng dưới dạng Sandbox (người phát triển không biết rõ cơ chế bên trong nhưng hỗ trợ người phát triển những dịch vụ cần thiết) Điều này cho phép App Engine xử lý một yêu cầu với một máy chủ mà nó mong muốn trong ước tính của nó để trả về phản hồi nhanh nhất Không có cách nào để đảm bảo rằng phần cứng trên cùng một máy chủ sẽ xử lý hai lần yêu cầu, ngay cả khi các yêu cầu đến cùng từ một client, và đến khá nhanh chóng
Sandbox cho phép App Engine chạy nhiều ứng dụng trên cùng một máy chủ, trong đó hành vi của một ứng dụng không làm ảnh hưởng đến các ứng dụng khác Ngoài ra để giới hạn quyền truy cập đến hệ điều hành, môi trường thực thi cũng giới hạn việc sử dụng CPU và bộ nhớ App Engine giữ các giới hạn này linh hoạt và chặt chẽ hơn các giới hạn này để các ứng dụng sử dụng nhiều tài nguyên hơn để bảo vệ tài nguyên được chia sẻ từ những ứng dụng
“không mong muốn”
Mỗi yêu cầu có tối đa 30s để trả về phản hồi cho client Mặc dù thời gian này có vẻ đáp ứng tốt cho một ứng dụng web, nhưng App Engine được tối ưu hóa cho các ứng dụng đáp ứng chưa đầy một giây Ngoài ra nếu một ứng dụng sử dụng nhiều CPU, App Engine có thể làm chậm nó xuống, nên các ứng dụng không trì hoãn bộ vi xử lý trên một máy phục vụ đa ứng dụng Một CPU tập trung xử lý yêu cầu có thể mất nhiều thời gian để hoàn thành, khi App Engine dò tìm các mô hình theo cách sử dụng CPU và phân bổ cho phù hợp
Google App Engine cung cấp hai môi trường thực thi chính cho các ứng dụng Đó là Java
và Python, hiện đang thử nghiệm trên Go Môi trường chúng ta chọn sẽ phụ thuộc vào ngôn ngữ và những công nghệ liên quan khi chúng ta dùng để phát triển ứng dụng
Môi trường Java thực thi các ứng dụng được viết cho JVM6 Ứng dụng có thể được phát triển dựa vào ngôn ngữ lập trình Java hoặc hầu hết các ngôn ngữ có thể biên dịch
và chạy trên JVM: ví dụ PHP (dùng Quercus), Ruby (dùng JRuby), Javascript (dùng Rhino), Scala, Groovy App Engine cũng hỗ trợ Google Web Tootkit (GWT)
Môi trường Python thực thi các ứng dụng được viết dựa vào ngôn ngữ lập trình Python bản 2.5 App Engine gọi các ứng dụng Python nhờ vào CGI Ứng dụng có thể dùng hầu hết các thư viện của Python, các framework của Python như Django, web2py,
Pylons Cả hai môi trường Java và Python đều sử dụng chung một mô hình: một yêu cầu gửi đến ứng dụng trên server, ứng dụng được kích hoạt (nếu cần thiết), gọi bộ phận xử lý yêu cầu
và trả về kết quả cho client Mỗi môi trường sử dụng bộ tiền xử lý (interpreter) cho riêng mình (JVM hay Python)
Trang 213.3 Mô hình kiến trúc và các dịch vụ của GAE
Trong mô hình kiến trúc này cho thấy được hoạt động của GAE Một yêu cầu từ trình duyệt của máy bàn, máy xách tay, điện thoại, … được gửi tới GAE thông qua lối vào (Front End) Một ứng dụng chủ (App Master) sẽ điều khiển, lập lịch cho tất cả các yêu cầu Nếu yêu cầu truy cập tệp tin tĩnh, yêu cầu sẽ gửi đến dịch vụ các tệp tĩnh (Static Flies) Nếu yêu cầu nội dung động, yêu cầu sẽ được gửi tới ứng dụng của mình trên GAE, thông qua các thư viện APIs, ứng dụng có thể truy cập tới các dịch vụ lưu trữ (Datastore), dịch vụ lưu trữ bộ nhớ (Memcache), dịch vụ thao tác ảnh (Image manipulation),… Mỗi dịch vụ có chức năng và hoạt động riêng biệt, không phụ thuộc lẫn nhau Khi xây dựng ứng dụng với ngôn ngữ Java, GAE
hỗ trợ thư viện kết hợp thư viện chuẩn Java cho phép ứng dụng truy cập vào các dịch vụ tương ứng
Python Runtime cung cấp APIs cho datastore, Google Accounts, App Engine services
Để tiện lợi cho việc phát triển web AppEngine cũng cung cấp 1 web framework đơn giản là webapp Do viết bằng ngôn ngữ Python nên AppEngine hỗ trợ hầu hết các Python framework như Django, CherryPy, Pylons, web.py với một ít thay đổi nhất định