Đăng ký Đăng nhập
Trang chủ Đồ án tốt nghiệp đề tài sử dụng saltstack triển khai hệ thống private cloud open...

Tài liệu Đồ án tốt nghiệp đề tài sử dụng saltstack triển khai hệ thống private cloud openstack

.PDF
95
835
125

Mô tả:

Đồ án tốt nghiệp đề tài sử dụng saltstack triển khai hệ thống private cloud openstack
ĐỒ ÁN TỐT NGHIỆP Đề tài: SỬ DỤNG SALTSTACK TRIỂN KHAI HỆ THỐNG PRIVATE CLOUD OPENSTACK Giảng viên hướng dẫn: Th.S Nguyễn Tuấn Dũng Sinh viên: Nguyễn Việt Hưng MSSV: 20081297 Lớp: Toán tin 2 - K53 Ngày 22 tháng 5 năm 2013 Mục lục Lời nói đầu 1 Lời cảm ơn 5 1 Điện toán đám mây 6 1.1 Khái niệm . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.2 Các đặc tính cần có của mô hình cloud . . . . . . . . . 6 1.3 Phân loại . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.3.1 Phân loại theo mô hình dịch vụ cung cấp . . . . 9 1.3.2 Phân loại theo mô hình triển khai . . . . . . . . 15 Openstack . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.4.1 Khái niệm . . . . . . . . . . . . . . . . . . . . . 16 1.4.2 Cấu tạo . . . . . . . . . . . . . . . . . . . . . . 17 1.4.3 OpenStack Compute . . . . . . . . . . . . . . . 20 1.4.4 OpenStack Storage . . . . . . . . . . . . . . . . 20 1.4.5 OpenStack Networking . . . . . . . . . . . . . . 22 1.4.6 OpenStack Dashboard . . . . . . . . . . . . . . 23 1.4 i 1.4.7 Identity Service . . . . . . . . . . . . . . . . . . 23 1.4.8 Image Service . . . . . . . . . . . . . . . . . . . 24 1.4.9 Tính năng . . . . . . . . . . . . . . . . . . . . . 25 1.4.10 Cài đặt và hoạt động . . . . . . . . . . . . . . . 26 2 Quản lý cấu hình 28 2.1 Sơ lược về quản lý cấu hình . . . . . . . . . . . . . . . 28 2.2 Các tiêu chí đánh giá một hệ thống quản lý cấu hình . 29 2.3 Một số chương trình tiêu biểu . . . . . . . . . . . . . . 30 2.3.1 CFEngine . . . . . . . . . . . . . . . . . . . . . 30 2.3.2 Puppet . . . . . . . . . . . . . . . . . . . . . . . 30 2.3.3 Chef . . . . . . . . . . . . . . . . . . . . . . . . 31 2.3.4 Salt . . . . . . . . . . . . . . . . . . . . . . . . 31 2.4 Những khó khăn trong triển khai thủ công hệ thống cloud OpenStack . . . . . . . . . . . . . . . . . . . . . 2.5 2.6 32 Lợi ích khi sử dụng trình quản lý cấu hình để triển khai hệ thống cloud OpenStack . . . . . . . . . . . . . . . . 33 Salt . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.6.1 Khái niệm . . . . . . . . . . . . . . . . . . . . . 35 2.6.2 Mô hình và thiết kế . . . . . . . . . . . . . . . . 36 2.6.3 Master và Minion . . . . . . . . . . . . . . . . . 37 2.6.4 State . . . . . . . . . . . . . . . . . . . . . . . . 38 2.6.5 SLS . . . . . . . . . . . . . . . . . . . . . . . . 40 2.6.6 Renderers . . . . . . . . . . . . . . . . . . . . . 44 ii 2.6.7 Pillar . . . . . . . . . . . . . . . . . . . . . . . . 44 2.6.8 Grains . . . . . . . . . . . . . . . . . . . . . . . 45 2.6.9 Quá trình chạy một SLS . . . . . . . . . . . . . 46 2.6.10 Returner . . . . . . . . . . . . . . . . . . . . . . 46 3 Cài đặt hệ thống private cloud OpenStack sử dụng trình quản lý cấu hình Salt 48 3.1 Các công việc cần thực hiện khi cài đặt OpenStack . . 48 3.2 Trên một node . . . . . . . . . . . . . . . . . . . . . . 51 3.2.1 Thiết kế state cho mysql . . . . . . . . . . . . . 51 3.2.2 Thiết kế state cho rabbitmq . . . . . . . . . . . 55 3.2.3 Thiết kế state cho keystone . . . . . . . . . . . 55 3.2.4 Thiết kế state cho glance . . . . . . . . . . . . . 58 3.2.5 Thiết kế state cho nova . . . . . . . . . . . . . . 62 3.2.6 Thiết kế state cho horizon . . . . . . . . . . . . 63 Trên nhiều node . . . . . . . . . . . . . . . . . . . . . . 64 3.3 4 Kết quả và đánh giá 4.1 4.2 66 Kết quả . . . . . . . . . . . . . . . . . . . . . . . . . . 66 4.1.1 Cloud OpenStack . . . . . . . . . . . . . . . . . 66 4.1.2 Salt . . . . . . . . . . . . . . . . . . . . . . . . 74 Đánh giá hiệu quả . . . . . . . . . . . . . . . . . . . . 75 Kết luận 76 iii Tài liệu tham khảo 79 Danh sách hình vẽ 79 Phụ lục 81 Thiết kế state cho DNSimple . . . . . . . . . . . . . . . . . 81 Cài đặt và sử dụng DNSimple . . . . . . . . . . . . . . . . . 82 iv Lời nói đầu Trong môi trường doanh nghiệp, khi nhu cầu sử dụng máy chủ tăng lên theo quy mô của doanh nghiệp cũng là lúc nảy sinh nhiều vấn đề. Trước hết là bài toán tối ưu để sử dụng tối đa công suất của các máy chủ, tránh tình trạng lãng phí tài nguyên, đồng thời đòi hỏi hệ thống có khả năng co giãn linh hoạt, chịu lỗi tốt để đảm bảo dịch vụ vẫn vận hành khi lượng tài nguyên trên một máy tăng cao hay có sự cố xảy ra. Tiếp đó là bài toán quản lý một lượng lớn máy chủ sao cho nhanh, hiệu quả, tốn ít nhân lực và thời gian nhất. Giải quyết hai vấn đề trên, trong đồ án này giới thiệu hai giải pháp cho lần lượt từng vấn đề là xây dựng đám mây OpenStack và sử dụng công cụ quản lý cấu hình Salt. Hai công nghệ này đều là các sản phẩm mã nguồn mở, miễn phí, có lượng người dùng đông đảo và đặc biệt là đã đạt được những thành công nhất định. OpenStack là một tập hợp các chương trình mã nguồn mở chạy trên môi trường Linux, sử dụng các công nghệ hàng đầu để xây dựng nên một hệ thống cung cấp máy ảo theo nhu cầu của người dùng. Open- 1 Stack cho phép xây dựng hệ thống cloud trên môi trường phần cứng tiêu chuẩn, không đòi hỏi bất cứ phần cứng hay phần mềm chuyên biệt nào. Với thiết kế chia thành nhiều module và tuân theo các tiêu chuẩn có sẵn khiến cho chất lượng của các bộ phận cấu thành OpenStack nhanh chóng được phát triển và hoàn thiện, thiết kế này còn cho phép quản trị viên tùy ý lựa chọn chương trình có cùng chức năng để thay thế các thành phần mà họ không thích. Cũng bởi thiết kế module này mà việc cài đặt OpenStack đòi hỏi nhà quản trị hệ thống phải có am hiểu về các công nghệ được sử dụng và bỏ công sức cấu hình các thành phần để vận hành được một hệ thống cloud. Mô hình cloud cho phép hệ thống có thể sử dụng sức mạnh của hàng nghìn máy tính, nhưng khi lượng máy tăng lên, việc quản lý các máy tính này bắt đầu gặp những khó khăn, đặc biệt là vấn đề quản lý cấu hình các dịch vụ chạy trên các máy chủ. Các vấn đề có thể gặp phải: • Cấu hình các máy chủ không có sự nhất quán: do một người quản lý nhiều máy chủ hoặc do nhiều người cùng quản lý một máy chủ. • Công việc lặp đi lặp lại gây nhàm chán, tốn thời gian, công sức, dễ nhầm lẫn. • Các file cấu hình nằm phân tán khiến việc kiểm tra, thay đổi tốn nhiều thời gian. 2 • Tốn nhiều thời gian và công sức nếu lượng máy tăng lên đến 100 hay thậm chí 1000 máy. • Khó đảm bảo trạng thái của dịch vụ ở từng máy. Chương trình quản lý cấu hình đã ra đời để giải quyết các vấn đề nói trên. Xuất hiện từ lâu (như CFEngine - năm 1993), các chương trình quản lý cấu hình luôn được phát triển và thay đổi theo sự đổi mới của hệ thống, có khả năng mở rộng và tự động tốt hóa hơn. Chef, Puppet, CFEngine là ba chương trình phổ biến nhất trong lĩnh vực này vào thời điểm hiện tại. Các chương trình đều đã đạt được những thành công nhất định. Bên cạnh những thành công đó, chúng vẫn còn nhiều nhược điểm đặc biệt là vấn đề về tính phức tạp của file cấu hình và khả năng mở rộng. Salt là một dự án mã nguồn mở mới được bắt đầu từ năm 2011 nhưng có sự phát triển rất nhanh, luôn nhắm tới sự đơn giản, tính module của các bộ phận cấu thành, khả năng mở rộng của hệ thống quản lý cấu hình. Đồ án này thực hiện tìm hiểu các khái niệm về điện toán đám mây, đi sâu vào tìm hiểu hệ thống OpenStack. Từ đó sử dụng Salt để cài đặt một hệ thống IaaS cloud sử dụng OpenStack - một hệ thống tương đối phức tạp để chứng minh sự đơn giản mà linh hoạt của trình quản lý cấu hình này. Kết quả thu được là một tập hợp các file cấu hình giúp tiết kiệm về thời gian, công sức trong việc triển khai một hệ thống cloud, đồng thời giúp nhanh chóng và dễ dàng mang lại trải nghiệm 3 về điện toán đám mây cho người dùng. 4 Lời cảm ơn Em xin chân thành cảm ơn thầy Th.S Nguyễn Tuấn Dũng đã dành thời gian để hướng dẫn em hoàn thành đồ án này. Em xin chân thành cảm ơn các thầy cô đã dạy dỗ, chỉ bảo tận tình cho em suốt 5 năm học, giúp em có kiến thức thực hiện đồ án này, và sẵn sàng để trở thành một kỹ sữ, đóng góp cho sự phát triển của đất nước. 5 Chương 1 Điện toán đám mây 1.1 Khái niệm Điện toán đám mây là mô hình cho phép dùng các tài nguyên của máy tính một cách tiện lợi, theo nhu cầu. Các tài nguyên này được nhà cung cấp dịch vụ dự trữ và cung cấp nhanh chóng, ít tốn công sức, hoặc thậm chí có thể được cấp tự động. 1.2 Các đặc tính cần có của mô hình cloud Một hệ thống cloud bất kỳ cần có các đặc tính sau: • Tự phục vụ theo yêu cầu: người dùng có thể đơn phương dự liệu lượng tài nguyên mình cần sử dụng. Công việc này cần được tự động hóa, không đòi hỏi người dùng phải thông qua nhà cung 6 cấp dịch vụ. • Truy cập rộng rãi: luôn sẵn sàng, cho phép truy cập qua mạng, thông qua các loại client (điện thoại di động, máy tính xách tay, máy tính để bàn, máy tính bảng...) • Tập trung tài nguyên: Tài nguyên điện toán được sử dụng để phục vụ cho nhiều khách hàng. Máy vật lý và máy ảo được cấp và thu hồi linh hoạt cho các khách hàng theo nhu cầu của họ. Người dùng không cần biết mọi thông tin địa lý liên quan đến nơi cung cấp tài nguyên. Các tài nguyên gồm có: khả năng lưu trữ, xử lý, bộ nhớ, băng thông mạng... • Co giãn nhanh: có khả năng tăng hoặc giảm lượng tài nguyên khi cần thiết. Với khách hàng, đặc tính này giúp lượng tài nguyên có thể trở nên không giới hạn nhưng có lúc lại vừa đủ với nhu cầu sử dụng, tùy theo yêu cầu của từng thời điểm. • Các dịch vụ có thể đo được: để cloud có thể thực hiện các tính năng tự động quản lý, tối ưu tài nguyên, tính toán giá thành. Ví dụ về mô hình điện toán đám mây của Amazon: Amazon Web Services (AWS). AWS là tập hợp các web service kết hợp với nhau tạo thành một nền tảng điện toán đám mây. Hai thành phần nổi bật của AWS là Amazon EC2 và Amazon S3. Các thành phần chính của AWS: • Compute 7 Amazon Elastic Compute Cloud (EC2): dịch vụ cung cấp các máy ảo, có thể mở rộng dễ dàng, sử dụng Xen hypervisor • Networking Amazon Elastic Load Balancing (Amazon ELB): phân tán các yêu cầu truy cập ứng dụng tới nhiều máy ảo Amazon EC2, cung cấp khả năng chịu lỗi và mở rộng. • Storage Amazon Simple Storage Service (S3): cung cấp nền tảng lưu trữ dựa trên web service Amazon Elastic Block Store (EBS): cung cấp các volume lưu trữ mức khối cho EC2 • Database Amazon RDS: cung cấp các máy chủ cơ sở dữ liệu quan hệ: MySQL, Oracle, và SQL Server. Amazon DynamoDB: cung cấp các máy chủ cơ sở dữ liệu hỗ trợ NoSQL Amazon ElastiCache: cung cấp dịch vụ caching trong bộ nhớ, hỗ trợ Memcached • Ngoài ra AWS còn cung cấp các dịch vụ tầng ứng dụng như: dịch vụ thông báo, dịch vụ chuyển đổi video, ảnh, dịch vụ truyền tải 8 thông điệp giữa các máy, dịch vụ theo dõi và quản lý máy ảo, ứng dụng, ... 1.3 1.3.1 Phân loại Phân loại theo mô hình dịch vụ cung cấp Infrastructure as a service (IaaS) IaaS cung cấp các máy tính (máy vật lý hoặc máy ảo) và các tài nguyên khác. Một hypervisor (bộ phận quản lý máy ảo) đảm nhận chạy các máy ảo. Một tập hợp các hypervisor trong hệ thống cloud có thể cung cấp một lượng lớn các máy ảo, có thể mở rộng hoặc thu hẹp mô hình theo yêu cầu của khác hàng. IaaS thường hỗ trợ các tài nguyên khác như file ảnh, lưu trữ, tường lửa, cân tải, địa chỉ IP, mạng nội bộ ảo (VLANs), và các bộ phần mềm. Nguồn tài nguyên phục vụ cho việc cung cấp theo yêu cầu được lấy kho tài nguyên phần cứng trong các trung tâm dữ liệu của nhà cung cấp dịch vụ. Các nhà cung cấp IaaS trên thế giới: Amazon EC2, Windows Azure Virtual Machines, DynDNS, Google Compute Engine, Rackspace Cloud, HP Cloud, ... Ví dụ về IaaS: Windows Azure Virtual Machines cho phép tạo các máy ảo từ kho các file ảnh sẵn có hoặc sử dụng file ảnh do người dùng cung cấp. Người sử dụng có toàn quyền điều khiển máy ảo đã tạo. Với 9 dashboard, người dùng có thể theo dõi tình trạng của máy ảo qua biểu đồ thời gian thực. Hình 1.1: Dashboard của Windows Azure Platform as a service (PaaS) PaaS đưa ra một nền tảng điện toán bao gồm cả hệ điều hành, môi trường lập trình, cơ sở dữ liệu và máy chủ web. Các nhà phát triển ứng dụng có thể phát triển, chạy các giải pháp phần mềm của họ trên một nền tảng cloud mà không cần lo đến chi phí và sự phức tạp của việc mua và quản lý hạ tầng phần cứng và phần mềm bên dưới. Một số nhà cung cấp PaaS hỗ trợ tự động cung cấp thêm tài nguyên theo 10 nhu cầu khi cần thiết. Các tổ chức cung cấp PaaS: Heroku, Google App Engine, Windows Azure, ... Ví dụ về PaaS: Heroku Heroku cung cấp nền tảng hỗ trợ môi trường lập trình các ngôn ngữ Ruby, Java, Node.js Scala, Clojure, Python và PHP cùng với các cơ sở dữ liệu như PostgreSQL, MongoDB, Redis, ... trên nền tảng hệ điều hành Debian và Ubuntu. Các nhà phát triển phần mềm đưa mã nguồn vào hệ thống của Heroku, cấu hình cách chương trình sẽ chạy. Việc chạy phần mềm do hệ thống của heroku tự động thực hiện. Lượng tài nguyên ứng dụng sử dụng được đo và ghi lại, nhà phát triển sẽ trả tiền cho lượng tài nguyên đó. Hình 1.2: Giao diện dashboard của Heroku 11 Software as a service (SaaS) SaaS là một mô hình phân phối phần mềm, trong đó các ứng dụng sẽ được cung cấp, quản lý, vận hành bởi một nhà cung cấp dịch vụ, người dùng có thể truy cập qua mạng. Toàn bộ ứng dụng và dữ liệu người dùng đều được lưu trữ bởi nhà cung cấp dịch vụ. Người dùng thường truy cập SaaS qua trình duyệt Web. Ví dụ: Gmail, Box.net, Mediafire, ... Ví dụ về SaaS: Google Drive Người dùng đăng ký sử dụng dịch vụ. Với tài khoản đã đăng ký, Google cung cấp cho người dùng một lượng dung lượng lưu trữ và khả năng truy cập ứng dụng Google Driver trực tuyến. Với ứng dụng web này, người dùng có thể soạn thảo, lưu trữ, chia sẻ các file văn bản, bảng tính tương tự như sản phẩm Word, Excel chạy trên các máy tính của Microsoft Office. Người dùng chỉ cần có một client để truy cập và sử dụng ứng dụng ở bất cứ nơi đâu. 12 Hình 1.3: Giao diện soạn thảo Spreadsheet của Google Drive Ba mô hình nói trên thực hiện cung cấp các dịch vụ ở ba tầng khác nhau. Các dịch vụ tầng trên nên được xây dựng trên các dịch vụ tầng thấp hơn để nâng cao khả năng mở rộng của toàn bộ hệ thống. 13 Hình 1.4: Phân tầng chức năng của từng mô hình dịch vụ Hình minh họa 1.4 chỉ rõ chức năng của mỗi mô hình đảm nhận. Ở mỗi dịch vụ, nhà cung cấp sẽ quản lý các phần có tô màu xám, người dùng sẽ được quản lý các phần tô màu xanh. Với IaaS, người dùng sẽ không cần lo lắng về hạ tầng mạng, khả năng lưu trữ, máy vật lý và công nghệ ảo hóa mà chỉ cần quản lý hệ điều hành và các ứng dụng chạy trên đó. Với PaaS, phần quản lý của người dùng thu hẹp lại chỉ còn dữ liệu và ứng dụng của họ, mọi thứ khác đều do nhà cung cấp dịch vụ quản lý và vận hành. Đến mô hình SaaS thì người dùng không còn quản lý bất cứ tài nguyên nào, tất cả những gì họ có là quyền truy cập đến dịch vụ, ngay cả dữ liệu cá nhân của người dùng cũng do nhà 14 cung cấp nắm giữ và quản lý. Ngoài ba mô hình trên, còn có các mô hình khác như Database as a service (DBaaS), Network as a service (NaaS)... 1.3.2 Phân loại theo mô hình triển khai Public cloud Public cloud là loại cloud cung cấp các tài nguyên (ứng dụng, lưu trữ, ...v.v) bởi một nhà cung cấp. Các dịch vụ này có thể miễn phí hoặc trả tiền theo mức sử dụng. Các nhà cung cấp public cloud như Amazon AWS, Microsoft, Google, Heroku, ... Private cloud Private cloud là cloud được vận hành bởi một tổ chức. Tổ chức này sẽ tự làm nhiệm vụ xây dựng, vận hành và quản lý cloud. So sánh public cloud và private cloud Tiểu chuẩn Public cloud Private cloud Chi phí khởi đầu Không có / thấp Cao Chi phí vận hành Có thể dự trù Không thể dự trù Tùy biến Không thể Có thể Sự riêng tư Không Có Đăng nhập một lần Không thể Có thể Mở rộng Dễ dàng nhưng trong giới hạn không giới hạn 15
- Xem thêm -

Tài liệu liên quan