Tìm hiểu, thử nghiệm về apache mesos
Trang 1BAN CƠ YẾU CHÍNH PHỦ
HỌC VIỆN KỸ THUẬT MẬT MÃ
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
BÁO CÁO BÀI TẬP LỚN
Ngành: Công nghệ thông tinChuyên ngành: An toàn thông tin
Người hướng dẫn:
Gv Bùi Việt Thắng
Học viện Kỹ thuật mật mã
Trang 2NHẬN XÉT
Trang 3MỤC LỤC
Danh mục hình vẽ iii
Chương 1 Tổng quan về điện toán đám mây 1
1.1 Giới thiệu chung 1
1.2 Các thành phần của điện toán đám mây 2
1.3 Các tầng kiến trúc của điện toán đám mây 3
1.4 Mô hình dịch vụ trong điện toán đám mây 4
1.4.1 Phần mềm hoạt động như dịch vụ (SaaS – Software as a Service) 4
1.4.2 Nền tảng hướng một dịch vụ (PaaS – Platform as a Service) 5 1.4.3 Hạ tầng hướng dịch vụ (Iaas – Infrastructure as a Service) 5
1.4.4 Một số mô hình dịch vụ khác 6
1.5 Các mô hình triển khai điện toán đám mây 7
1.6 Một số nhà cung cấp dịch vụ 7
Chương 2 Tổng quan về Apache Mesos 9
2.1 Giới thiệu 9
2.2 Kiến trúc 11
2.3 Tính năng Mesos 13
2.4 Dịch vụ chạy dài 13
2.5 Xử lí dữ liệu lớn 14
2.6 Lập lịch biểu hàng loạt 14
2.7 Lưu trữ dữ liệu 15
Chương 3 Demo thực nghiệm 16
Kết luận 17
Tài liệu tham khảo 18
Trang 4DANH MỤC HÌNH VẼ
Hình 1.1 Tổng quan điện toán đám mây 2
Hinh 1.2 Thành phần điện toán đám mây 2
Hình 1.3 Kiến trúc điện toán đám mây 3
Hình 1.4 Mô hình dịch vụ trong điện toán đám mây 4
Hình 1.5 Mô hình hoạt động phần mềm dịch vụ 4
Hình 1.6 Nền tảng hướng dịch vụ 5
Hình 1.7 Hạ tầng hướng dịch vụ 6
Hình 1.8 Nhà cung cấp Iaas 7
Hình 1.9 Nhà cung cấp PaaS 8
Hình 1.10 Nhà cung cấp SaaS 8
Hình 2.1 Node trừu tượng trong Apache Mesos 10
Hình 2.2 Chia sẻ tài nguyên trên toàn cụm làm tăng thông lượng và sử dụng 11
Hình 2.3 Sơ đồ kiến trúc Mesos, hiển thị hai khung công tác đang chạy (Hadoop và MPI) 12
Hình 2.4 Lập lịch khung trong Mesos 12
Trang 5CHƯƠNG 1 TỔNG QUAN VỀ ĐIỆN TOÁN ĐÁM MÂY
1.1 Giới thiệu chung
Điện toán đám mây (Cloud computing), còn gọi là điện toán máy chủ ảo, là
mô hình tính toán sử dụng các công nghệ máy tính và phát triển dựa vào mạngInternet
Thuật ngữ "cloud computing" ra đời giữa năm 2007 không phải để nói vềmột trào lưu mới, mà để khái quát lại các hướng phát triển của cơ sở hạ tầng CNTTvốn đã và đang diễn ra từ những năm qua Quan niệm này có thể được diễn giảimột cách đơn giản: các nguồn tính toán khổng lồ như các phần cứng (máy chủ),phần mềm, và các dịch vụ (chương trình ứng dụng), … sẽ nằm tại các máy chủ ảo(đám mây) trên Internet thay vì trong máy tính gia đình và văn phòng (trên mặtđất) để mọi người kết nối và sử dụng mỗi khi họ cần
Nói cách khác, ở mô hình tính toán này, mọi khả năng liên quan đến côngnghệ thông tin đều được cung cấp dưới dạng các "dịch vụ", cho phép người sửdụng truy cập các dịch vụ công nghệ thông tin từ một nhà cung cấp nào đó "trongđám mây" mà không cần phải biết về công nghệ đó, cũng như không cần quan tâmđến các cơ sở hạ tầng phục vụ công nghệ đó
Theo tổ chức Xã hội máy tính IEEE, “Điện toán đám mây là hình mẫu trong
đó thông tin được lưu trữ thường trực tại các máy chủ trên Internet và chỉ được được lưu trữ tạm thời ở các máy khách, bao gồm máy tính cá nhân, trung tâm giải trí, máy tính trong doanh nghiệp, các phương tiện máy tính cầm tay, …".
Trang 6Hình 1.1 Tổng quan điện toán đám mây
Điện toán đám mây xuất hiện bắt nguồn từ ứng dụng điện toán lưới (gridcomputing) trong thập niên 1980, tiếp theo là điện toán theo nhu cầu (utilitycomputing) và phần mềm dịch vụ (SaaS)
1.2 Các thành phần của điện toán đám mây
Điện toán đám mây có thể chuyển đổi các chương trình ứng dụng diện rộngtheo kiến trúc và phân phối các dịch vụ
Hinh 1.2 Thành phần điện toán đám mây
Trang 7 Cơ sở hạ tầng (Infrastructure)
Lưu trữ đám mây (Cloud Storage)
Nền tảng đám mây (Cloud Platform)
Ứng dụng (Application)
Dịch vụ (Services)
Khách hàng (Client)
1.3 Các tầng kiến trúc của điện toán đám mây
Điện toán đám mây cung cấp các dịch vụ ở tất cả các tầng, từ phần cứng tớicác phần mềm
Kiến trúc do Sun đề xuất đầu tiên gồm 6 tầng:
Các máy chủ thực (Physical Servers)
Các máy chủ ảo (Virtual Servers)
Hệ điều hành (Operating System)
Phần mềm trung gian (Middleware)
Các chương trình ứng dụng (Applications)
Các dịch vụ (Servers)
Kiến trúc trong các tài liệu của Microsoft chia thành rất nhiều tầng như sau:
Hình 1.3 Kiến trúc điện toán đám mây
Các dịch vụ có thể chia thành 3 lớp chính: Phần mềm dịch vụ (software as aservice), nền dịch vụ (platform as a service), và cơ sở hạ tầng dịch vụ
Trang 8(infrastructure as a service) Các lớp này có thể tập hợp thành các tầng kiến trúckhác nhau, có thể chồng chéo, gối nhau.
1.4 Mô hình dịch vụ trong điện toán đám mây
Hình 1.4 Mô hình dịch vụ trong điện toán đám mây
1.4.1 Phần mềm hoạt động như dịch vụ (SaaS – Software as a Service)
Phần mềm hoạt động hướng dịch vụ hoặc gọi tắt là Phần mềm dịch vụ, là môhình triển khai phần mềm, một nhánh của điện toán đám mây, theo đó các nhàcung cấp phần mềm như là các dịch vụ theo yêu cầu cho khách hàng Theo địnhnghĩa của hãng nghiên cứu toàn cầu IDC là: "phần mềm hoạt động trên web, đượcquản lý bởi nhà cung cấp và cho phép người sử dụng truy cập từ xa"
Trang 9Hình 1.5 Mô hình hoạt động phần mềm dịch vụ
1.4.2 Nền tảng hướng một dịch vụ (PaaS – Platform as a Service)
Đây cũng là một biến thể của SaaS nhưng mô hình này là một nhánh của điê
̣n toán đám mây (cloud computing), mang đến môi trường phát triển như một dịchvụ: người sử dụng xây dựng ứng dụng chạy trên cơ sở hạ tầng của nhà cung cấp vàphân phối tới người sử dụng thông qua máy chủ của nhà cung cấp đó Người sửdụng sẽ không hoàn toàn được tự do vì bị ràng buộc về mặt thiết kế và công nghệ.Một số ví dụ điển hình về PaaS là Force.com của Salesforce.com, Google AppEngine, Yahoo Pipes …
Trang 10Hình 1.6 Nền tảng hướng dịch vụ
1.4.3 Hạ tầng hướng dịch vụ (Iaas – Infrastructure as a Service)
Infrastructure as a service (IaaS) Là tầng thấp nhất của ĐTĐM, nơi tập hợpcác tài sản vật lý như các phần cứng máy chủ, hệ thống lưu trữ và các thiết bịmạng, được chia sẽ và cung cấp dưới dạng dịch vụ IaaS cho các tổ chức hay doanhnghiệp khác nhau Cũng giống như dịch vụ PaaS, ảo hóa là công nghệ được sửdụng rộng rãi để tạo ra cơ chế chia sẽ và phân phối các nguồn tài nguyên theo yêucầu Ví dụ về các dịch vụ IaaS như IBM BlueHouse, Vmware, Amazon EC2,Microsoft Azure Platform, Sun Parascale Cloud Storage…
Trang 11Hình 1.7 Hạ tầng hướng dịch vụ
1.4.4 Một số mô hình dịch vụ khác
Network as a service (NaaS) – Mạng lưới như một dịch vụ
Storage as a service (STaaS) – Lưu trữ như một dịch vụ Cung cấp khônggian lưu trữ trực tuyến trả tiền theo nhu cầu, như Google Drive, Amazon S3,Fshare, Dropbox, …
Security as a service (SECaaS) – Bảo mật như một dịch vụ Cung cấp cácgiải pháp bảo mật trực tuyến trả tiền theo nhu cầu, như McAfee, Trend Micro, …
Data as a service (DaaS) – Dữ liệu như một dịch vụ Cung cấp dữ liệu (chỉđọc) trả tiền theo nhu cầu thông qua các APIs, như Google Maps, Bing Maps,Amazon Public Data Sets (dữ liệu khoa học về trái đất của NASA, gồm cả thời tiết
và bản đồ, dữ liệu biến đổi di truyền ở người, dữ liệu nhân khẩu học – điều tra dân
số của Hoa Kỳ), Freebase (dữ liệu các sự kiện và khẳng định rất lớn trên thế giới)
Desktop as a service (DaaS) – Desktop như một dịch vụ Cung cấp môitrường desktop ảo qua web hoặc thin client, như VMWare Horizon DaaS
Database as a service (DBaaS) – Cơ sở dữ liệu như một dịch vụ Cung cấpCSDL trả tiền theo nhu cầu, như MongoDB, Oracle, …
Test environment as a service (TEaaS) – Môi trường kiểm tra như một dịch
vụ như Sauce Labs, Perfect Mobile,
Trang 12API as a service (APIaaS) – Giao diện lập trình ứng dụng (ApplicationProgramming Interface) như một dịch vụ Là nền tảng cho phép tạo và host cácAPIs (REST, XML, Web Services), như PhantomJs.Cloud, …
Backend as a service (BaaS) Back-end (phần dành cho người quản trị) nhưmột dịch vụ như Backendless, Telerik Backend Services, Parse, …
Integrated development environment as a service (IDEaaS) – Môi trườngphát triển tích hợp như một dịch vụ
Integration platform as a service (IPaaS), see Cloud-based integration – Nềntảng tích hợp như một dịch vụ, xem thêm …
1.5 Các mô hình triển khai điện toán đám mây
Đám mây công cộng (Public cloud): được 1 bên thứ 3 (người bán) cung cấp.Tồn tại ngoài tường lửu công ty và được nhà cung cấp quản lý
Đám mây cộng đồng (Community cloud): được chia sẽ bởi một số tổ chức
và hỗ trợ một cộng đồng cụ thể có mối quan tâm chung Nó có thể được quản lýbởi các tổ chức hoặc bên thứ ba
Đám mây riêng (Private cloud): được sở hữu bởi cá nhân hoặc tổ chức.Những đám mây này tồn tại bên trong tường lửa công ty và chúng được doanhnghiệp quản lý
Đám mây lai (Hybird cloud): là sự kết hợp của Public cloud và Privatecloud
1.6 Một số nhà cung cấp dịch vụ
Nhà cung cấp Iaas
Hình 1.8 Nhà cung cấp Iaas
Nhà cung cấp PaaS
Trang 13Hình 1.9 Nhà cung cấp PaaS
Nhà cung cấp SaaS
Hình 1.10 Nhà cung cấp SaaS
Trang 14CHƯƠNG 2 TỔNG QUAN VỀ APACHE MESOS
2.1 Giới thiệu
Apache Mesos là một trình quản lý cụm cung cấp sự tách biệt và chia sẻ tài
nguyên hiệu quả trên các ứng dụng hoặc khung phân tán Mesos là một phần mềmnguồn mở ban đầu được phát triển tại Đại học California tại Berkeley Nó nằmgiữa lớp ứng dụng và hệ điều hành, giúp dễ dàng triển khai và quản lý các ứngdụng trong các môi trường nhóm có quy mô lớn hiệu quả hơn Nó có thể chạynhiều ứng dụng trên một nhóm các nút được chia sẻ động Người dùng nổi bật củaMesos bao gồm Twitter , Airbnb, MediaCrossing, Xogito và Categorize
Mesos tận dụng các tính năng của hạt nhân hiện đại - "cgroups" trong Linux,
"vùng" trong Solaris - để cung cấp sự cô lập cho CPU, bộ nhớ, I / O, hệ thống tệp,
vị trí giá, v.v Ý tưởng lớn là tạo một bộ sưu tập lớn nguồn tài nguyên không đồngnhất Mesos giới thiệu một cơ chế lập kế hoạch hai cấp phân tán được gọi là cungcấp tài nguyên Mesos quyết định có bao nhiêu tài nguyên để cung cấp mỗi khungcông tác, trong khi các khung công tác quyết định các tài nguyên nào cần chấpnhận và tính toán nào để chạy trên chúng Nó là một lớp chia sẻ tài nguyên mỏngcho phép chia sẻ hạt mịn trên nhiều khung công tác tính toán cụm, bằng cách chocác khung công tác một giao diện chung để truy cập các tài nguyên cụm Ý tưởng
là triển khai nhiều hệ thống phân tán cho một nhóm các nút chung để tăng sử dụngtài nguyên Rất nhiều khối lượng công việc và khung công tác hiện đại có thể chạytrên Mesos
Trang 15Hình 2.1 Node trừu tượng trong Apache Mesos
Theo cách tương tự như một hệ điều hành PC quản lý truy cập vào các tàinguyên trên máy tính để bàn, Mesos đảm bảo các ứng dụng có quyền truy cập vàocác tài nguyên mà chúng cần trong một cụm Thay vì thiết lập nhiều cụm máy chủcho các phần khác nhau của ứng dụng, Mesos cho phép bạn chia sẻ một nhóm cácmáy chủ có thể chạy các phần khác nhau của ứng dụng mà không can thiệp vàonhau và với khả năng phân bổ động tài nguyên trên cụm cần thiết Điều đó cónghĩa là, nó có thể dễ dàng chuyển đổi tài nguyên khỏi framework 1 (ví dụ: thựchiện phân tích dữ liệu lớn) và phân bổ chúng cho framework 2 (ví dụ: máy chủweb), nếu có lưu lượng mạng lớn
Trang 16Hình 2.2 Chia sẻ tài nguyên trên toàn cụm làm tăng thông lượng và sử dụng
Mesos cơ bản là trung tâm dữ liệu hạt nhân - có nghĩa là nó là phần mềmthực sự cô lập khối lượng công việc đang chạy từ mỗi khác Nó vẫn cần thêm công
cụ để cho các kỹ sư có được khối lượng công việc của họ đang chạy trên hệ thống
và quản lý khi những công việc đó thực sự chạy Nếu không, một số khối lượngcông việc có thể tiêu thụ tất cả các nguồn lực, hoặc khối lượng công việc quantrọng có thể bị đụng bởi khối lượng công việc ít quan trọng điều đó xảy ra để đòi
hỏi nhiều resources Hence Mesos cần nhiều hơn chỉ là một kernel-scheduler Chronos, một sự thay thế cho cron tự động khởi động và dừng dịch vụ (và xử lý lỗi) chạy trên đỉnh của Mesos Phần còn lại của Mesos là Marathon cung cấp API
để bắt đầu, dừng và mở rộng dịch vụ (và Chronos có thể là một trong những dịch
vụ đó)
2.2 Kiến trúc
Mesos bao gồm một quy trình tổng thể quản lý các daemon nô lệ chạy trênmỗi nút cụm và các khung công tác chạy các nhiệm vụ trên các nô lệ này Thạc sĩthực hiện chia sẻ chi tiết trong các khung công tác bằng cách sử dụng phiếu muahàng tài nguyên Mỗi nguồn cung cấp tài nguyên là một danh sách các tài nguyênmiễn phí trên nhiều nô lệ Thạc sĩ quyết định số lượng tài nguyên cung cấp chomỗi khung theo chính sách tổ chức, chẳng hạn như chia sẻ công bằng hoặc ưu tiên
Để hỗ trợ một loạt các chính sách phân bổ liên ngành, Mesos cho phép các tổ chứcxác định các chính sách riêng của họ thông qua một mô-đun phân bổ có thể cắmđược
Trang 17Hình 2.3 Sơ đồ kiến trúc Mesos, hiển thị hai khung công tác đang chạy (Hadoop
và MPI)
Mỗi khung chạy trên Mesos bao gồm hai thành phần: một bộ lập lịch đăng
ký với chủ để được cung cấp tài nguyên, và một quá trình thực hiện được khởichạy trên các nút nô lệ để chạy các nhiệm vụ của khung công tác Trong khi tổngthể xác định có bao nhiêu tài nguyên để cung cấp cho mỗi khung công tác, thì cáclập lịch của khung công tác chọn tài nguyên được cung cấp để sử dụng Khi mộtkhung công tác chấp nhận các tài nguyên được cung cấp, nó sẽ truyền cho Mesosmột mô tả về các nhiệm vụ mà nó muốn khởi chạy trên chúng
Trang 18Hình trên cho thấy một ví dụ về cách khung được lên lịch để chạy các tác
vụ Trong bước một, slave 1 báo cáo cho chủ rằng nó có 4 CPU và 4 GB bộ nhớmiễn phí Sau đó, thầy gọi mô-đun phân bổ, cho biết rằng khung 1 nên được cungcấp tất cả các tài nguyên có sẵn Trong bước hai, master sẽ gửi một nguồn cung cấptài nguyên mô tả các tài nguyên này cho khung công tác 1 Trong bước ba, trìnhlên lịch của khung công tác trả lời chủ với thông tin về hai nhiệm vụ chạy trên nô
lệ, sử dụng 2 CPU; RAM 1 GB cho nhiệm vụ đầu tiên và 1 CPU; RAM 2 GB chonhiệm vụ thứ hai Cuối cùng, trong bước bốn, master sẽ gửi các nhiệm vụ tới slave,phân bổ các tài nguyên thích hợp cho trình thực hiện của khung công tác, mà lầnlượt khởi chạy hai nhiệm vụ (được mô tả với các đường viền chấm chấm) Bởi vì 1CPU và 1 GB RAM vẫn miễn phí
Trong khi giao diện mỏng được cung cấp bởi Mesos cho phép nó mở rộngquy mô và cho phép các khuôn khổ phát triển độc lập Một khuôn khổ sẽ từ chốicác đề nghị không đáp ứng các ràng buộc của nó và chấp nhận các đề xuất Đặcbiệt, chúng tôi đã phát hiện ra rằng một chính sách đơn giản gọi là lập lịch trễ,trong đó các khung chờ đợi một thời gian giới hạn để thu được các nút lưu trữ dữliệu đầu vào, mang lại gần đúng vị trí dữ liệu tối ưu
2.3 Tính năng Mesos
Chủ nhân nhân bản có khả năng chịu lỗi bằng cách sử dụng ZooKeeper
Khả năng mở rộng cho hàng ngàn nút
Cách ly giữa các tác vụ với các vùng chứa Linux
Lập lịch đa tài nguyên (bộ nhớ và nhận biết CPU)
Các API Java, Python và C ++ để phát triển các ứng dụng song songmới
Giao diện người dùng web để xem trạng thái cụm
Có một số dự án phần mềm được xây dựng trên Apache Mesos
2.4 Dịch vụ chạy dài
Aurora là một bộ lập lịch dịch vụ chạy trên đỉnh Mesos, cho phép bạn chạy
các dịch vụ chạy dài tận dụng khả năng mở rộng của Mesos, khả năng chịu lỗi vàcách ly tài nguyên
Marathon là một PaaS riêng được xây dựng trên Mesos Nó tự động xử lý
lỗi phần cứng hoặc phần mềm và đảm bảo rằng ứng dụng "luôn bật"