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... Lời nói đầuTrong môi trường doanh nghiệp, kh
Trang 1ĐỒ Á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
Ngày 22 tháng 5 năm 2013
Trang 2Mục lục
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
1.4 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
Trang 31.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 32
2.5 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
2.6 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
Trang 42.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
3.3 Trên nhiều node 64
4 Kết quả và đánh giá 66 4.1 Kết quả 66
4.1.1 Cloud OpenStack 66
4.1.2 Salt 74
4.2 Đánh giá hiệu quả 75
Trang 5Tài liệu tham khảo 79
Thiết kế state cho DNSimple 81Cài đặt và sử dụng DNSimple 82
Trang 6Lời nói đầu
Trong môi trường doanh nghiệp, khi nhu cầu sử dụng máy chủ tănglê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áychủ, 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ậnhà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ìnhSalt 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ànhcô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ênmôi trường Linux, sử dụng các công nghệ hàng đầu để xây dựng nênmột hệ thống cung cấp máy ảo theo nhu cầu của người dùng Open-
Trang 7Stack cho phép xây dựng hệ thống cloud trên môi trường phần cứngtiêu chuẩn, không đòi hỏi bất cứ phần cứng hay phần mềm chuyên biệtnà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 OpenStacknhanh chóng được phát triển và hoàn thiện, thiết kế này còn cho phépquản trị viên tùy ý lựa chọn chương trình có cùng chức năng để thaythế 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ó amhiểu về các công nghệ được sử dụng và bỏ công sức cấu hình các thànhphầ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ủahàng nghìn máy tính, nhưng khi lượng máy tăng lên, việc quản lý cácmá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ặpphải:
• Cấu hình các máy chủ không có sự nhất quán: do một ngườiquản lý nhiều máy chủ hoặc do nhiều người cùng quản lý mộtmá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ốnnhiều thời gian
Trang 8• Tốn nhiều thời gian và công sức nếu lượng máy tăng lên đến 100hay 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ươngtrình quản lý cấu hình luôn được phát triển và thay đổi theo sự đổimớ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 tronglĩnh vực này vào thời điểm hiện tại Các chương trình đều đã đạt đượcnhững thành công nhất định Bên cạnh những thành công đó, chúngvẫn còn nhiều nhược điểm đặc biệt là vấn đề về tính phức tạp của filecấ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 2011nhưng có sự phát triển rất nhanh, luôn nhắm tới sự đơn giản, tínhmodule của các bộ phận cấu thành, khả năng mở rộng của hệ thốngquả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 đặtmột hệ thống IaaS cloud sử dụng OpenStack - một hệ thống tương đốiphứ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úptiết kiệm về thời gian, công sức trong việc triển khai một hệ thốngcloud, đồng thời giúp nhanh chóng và dễ dàng mang lại trải nghiệm
Trang 9về điện toán đám mây cho người dùng.
Trang 10Lời cảm ơn
Em xin chân thành cảm ơn thầy Th.S Nguyễn Tuấn Dũng đã dànhthời gian để hướng dẫn em hoàn thành đồ án này Em xin chân thànhcả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ànhmột kỹ sữ, đóng góp cho sự phát triển của đất nước
Trang 111.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ệulượ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
Trang 12cấ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 đếnnơi cung cấp tài nguyên Các tài nguyên gồm có: khả năng lưutrữ, 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 khicầ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ínhnă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 WebServices (AWS) AWS là tập hợp các web service kết hợp với nhau tạothành một nền tảng điện toán đám mây Hai thành phần nổi bật củaAWS là Amazon EC2 và Amazon S3 Các thành phần chính của AWS:
• Compute
Trang 13Amazon Elastic Compute Cloud (EC2): dịch vụ cung cấp cácmá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ácyêu cầu truy cập ứng dụng tới nhiều máy ảo Amazon EC2, cungcấp khả năng chịu lỗi và mở rộng
• 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
Trang 14thô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 Phân loại
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àinguyên khác Một hypervisor (bộ phận quản lý máy ảo) đảm nhậnchạ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 thuhẹp mô hình theo yêu cầu của khác hàng IaaS thường hỗ trợ các tàinguyên khác như file ảnh, lưu trữ, tường lửa, cân tải, địa chỉ IP, mạngnộ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ứngtrong 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 AzureVirtual Machines, DynDNS, Google Compute Engine, Rackspace Cloud,
HP Cloud,
Ví dụ về IaaS: Windows Azure Virtual Machines cho phép tạo cácmáy ảo từ kho các file ảnh sẵn có hoặc sử dụng file ảnh do người dùngcung cấp Người sử dụng có toàn quyền điều khiển máy ảo đã tạo Với
Trang 15dashboard, 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ôitrườ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ênmột nền tảng cloud mà không cần lo đến chi phí và sự phức tạp củaviệ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
Trang 16nhu cầu khi cần thiết Các tổ chức cung cấp PaaS: Heroku, GoogleApp Engine, Windows Azure,
Hình 1.2: Giao diện dashboard của Heroku
Trang 17Software 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ệungười dùng đều được lưu trữ bởi nhà cung cấp dịch vụ Người dùngthườ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 webnà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ínhcủ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
Trang 18Hì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ácnhau Các dịch vụ tầng trên nên được xây dựng trên các dịch vụ tầngthấp hơn để nâng cao khả năng mở rộng của toàn bộ hệ thống
Trang 19Hì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ườidù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ụngchạ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ấpdịch vụ quản lý và vận hành Đến mô hình SaaS thì người dùng khôngcòn quản lý bất cứ tài nguyên nào, tất cả những gì họ có là quyền truycập đến dịch vụ, ngay cả dữ liệu cá nhân của người dùng cũng do nhà
Trang 20cung 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)
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
Mở rộng Dễ dàng nhưng trong giới hạn không giới hạn
Trang 21Ngoài ra còn có một số mô hình khác kết hợp bởi hai mô hình trênnhư Community cloud, Hybrid cloud.
1.4 Openstack
Openstack là một bộ công cụ để tạo ra môi trường điện toán đámmây sử dụng các công nghệ có sẵn trên nền tảng Linux OpenStackkhông đòi hỏi các thiết bị phần cứng, phần mềm chuyên dụng, nó cókhả năng tương thích với các hệ thống đã tồn tại và các công nghệ
từ bên thứ ba OpenStack được thiết kế để tự động quản lý nguồn tàinguyên tính toán, nó có thể làm việc với các công nghệ ảo hóa phổbiến cũng như hệ thống tính toán hiệu năng cao
OpenStack thường được dùng để cung cấp:
• IaaS hoặc nền tảng để cung cấp các dịch vụ ở lớp cao hơn (PasS,SaaS, )
• phòng IT hoạt động như một nhà cung cấp dịch vụ cloud chocác đơn vị kinh doanh, các nhóm dự án
• xử lý dữ liệu lớn (big data) với các công cụ như Hadoop
• thay đổi tài nguyên dựa theo yêu cầu cho các website và ứngdụng
Trang 22• các môi trường tính toán hiệu năng cao đòi hỏi xử lý các côngviệc đa dạng và liên tục, cường độ cao.
OpenStack là sự kết hợp của nhiều công nghệ, giải pháp đã tồn tạivới những dự án do chính OpenStack phát triển
Các dịch vụ của OpenStack được thiết kế với các tiêu chí:
• Có kiến trúc module: giúp nhanh chóng thêm các tính năng mới
• Tính sẵn sàng cao: đảm nhiệm những công việc quan trọng
• Có khả năng chịu lỗi: tách rời các tiến trình giúp chống hiệntượng dịch vụ đổ vỡ hàng loạt
• Có khả năng khôi phục: dễ dàng phân tích, debug, điều chỉnh
• Dùng các tiêu chuẩn mở: giúp loại bỏ các nguy cơ tiềm ẩn, tạo cơhội để kết hợp với các ngành khác như điện toán di động, phântích kinh doanh
Trang 23Hình 1.5: Sơ đồ tương tác của các dịch vụ trong OpenStack
Sơ đồ trên biểu diễn sự tương tác giữa các dịch vụ thành phầncủa OpenStack, các vòng tròn biểu diễn các dịch vụ cung cấp bởiOpenStack, các hình chữ nhật là các thành phần bên ngoài, khôngđược bảo trì bởi dự án OpenStack
Mọi service của OpenStack tương tác với một hàng đợi (RabbitMQ,Qpid) và một database (MySQL, PostgreSQL) Nova-api, identity ser-
Trang 24vice, và image service là các service độc lập, không dựa vào các côngnghệ bên ngoài.
Các thành phần của OpenStack có thể được thay thế bởi nhiều giảipháp tương ứng Dưới đây là bảng các công nghệ và các giải pháp đãtriển khai để phục vụ công nghệ đó
Hàng đợi thông điệp RabbitMQ, Qpid, ZeroMQ
Manager, Ceph SAN , NexentaStor, Sheepdog
Cơ sở dữ liệu MySQL, PostgreSQL, sqlite
Session cache memcache, MySQL, PostgreSQL, sqlite
Openstack bao gồm các dịch vụ chuyên biệt như Compute, Dashboard,Networking, Storage đảm nhiệm những công việc riêng Ngoài ra nó cócác dịch vụ được dùng trong cả ba tầng tính toán, lưu trữ và mạng.Những dịch vụ này giúp việc cài đặt và vận hành cloud dễ dàng hơn,chúng bao gồm: dịch vụ xác thực, quản lý file ảnh, và một giao diện
Trang 25(API) giúp liên kết các thành phần của OpenStack với nhau cũng nhưvới các hệ thống bên ngoài để cung cấp một trải nghiệm thống nhấtcho người dùng khi họ sử dụng các tài nguyên cloud khác nhau.
OpenStack compute cung cấp và quản lý các máy ảo Nó cung cấptài nguyên tính toán qua các API cho lập trình viên xây dựng ứngdụng cloud và qua giao diện web cho người dùng cũng như người quản
lý Compute sử dụng các công nghệ hypervisor phổ biến như KVM,XenServer, hay Linux Container (LXC) nếu cần thiết Bên cạnh hỗ trợcác hypervisor khác nhau, OpenStack Compute còn hỗ trợ kiến trúcARM và các kiến trúc phần cứng khác Compute dựa vào 1 driver ảohóa để quản lý máy ảo, mặc định là libvirt, được dùng để quản lýKVM Compute đưa ra khái niệm về khuôn mẫu cho các máy ảo Mỗikhuôn mẫu định nghĩa lượng RAM và kích thước ổ cứng Khi máy ảochạy với một khuôn mẫu cụ thể, Openstack Compute điều chỉnh kíchthước đĩa ảnh cho phù hợp với khuôn đưa ra và cấp CPU, RAM theoyêu cầu
OpenStack đã hỗ trợ Object Storage và Block Storage, với nhiềulựa chọn cài đặt tùy theo yêu cầu sử dụng
Trang 26Object Storage là công nghệ lưu trữ lý tưởng với hiệu quả về giáthành và khả năng mở rộng không gian lưu trữ Nó cung cấp nền tảnglưu trữ phân tán, có thể truy cập qua API giúp dễ dàng cho việc viếtứng dụng backup, archiving Công nghệ này còn cho phép các thiết
bị khối (block devices) được kết nối với các máy ảo để mở rộng lưutrữ, cho hiệu năng cao hơn và có thể tích hợp với các nền tảng lưu trữdoanh nghiệp như NetApp, Nexenta, SolidFire
Tính năng của Object Storage
• OpenStack Storage cung cấp giải pháp lưu trữ object sử dụngcác cụm máy chủ đã được chuẩn hóa có khả năng lưu trữ nhiềupetabyte dữ liệu
• Object Storage không phải là một hệ thống file truyền thống mà
là hệ thống lưu trữ phân tán các dữ liệu tĩnh như file ảnh củamáy ảo, hình ảnh, email, backup
• Các đối tượng và file được ghi vào nhiều đĩa trải khắp suốt cácmáy chủ trong trung tâm dữ liệu, OpenStack chịu trách nhiệmcho việc đảm bảo sự dư thừa và tính toàn vẹn cho dữ liệu xuyênsuốt các cụm máy
• Các cụm máy dễ dàng mở rộng bằng việc thêm các máy chủ mới.Khi một máy chủ hay ổ cứng bị hỏng, dữ liệu được tạo lại từ cácmáy trong cụm rồi phân tán đến các vùng khác Do sử dụng logicphần mềm để thực hiện đảm bảo dư thừa và phân tán khắp các
Trang 27thiết bị nên các phần cứng thông thường đều có thể được dùngcho việc lưu trữ, không đòi hỏi phần cứng chuyên dụng.
Tính năng của Block Storage
• Hệ thống lưu trữ khối quản lý việc tạo, gắn và tháo các thiết bịkhối với các máy chủ Nó được tích hợp hoàn toàn với OpenStackcompute và Dashboard cho phép người dùng cloud tự quản lý nhucầu về lưu trữ của họ
• Bên cạnh việc sử dụng máy chủ Linux để lưu trữ, nó còn hỗ trợnhiều nền tảng lưu trữ khác như Ceph, NetApp, Nexenta, vàSolidFire
• Block storage thích hợp cho các trường hợp đòi hỏi hiệu năngcao (như lưu trữ cơ sở dữ liệu), yêu cầu hệ thống file có thể mởrộng hoặc cần cung cấp một máy chủ với khả năng truy cập mứcthấp đến thiết bị lưu trữ
• Khả năng quản lý snapshot cung cấp chức năng mạnh mẽ cho việcbackup dữ liệu chứa trên các thiết bị lưu trữ khối Các snapshot
có thể dùng để khôi phục hoặc tạo một thiết bị lưu trữ khối mới
Giải quyết các vấn đề liên quan đến kết nối mạng giữa các máy ảovới nhau và ra bên ngoài mạng internet Sử dụng các công nghệ như
Trang 28Open vSwitch, Cisco UCS/Nexus, Linux Bridge, VLAN giúp dễ mởrộng hệ thống mạng, việc quản lý IP và điều khiển mạng dựa trên API.
Cung cấp giao diện đồ họa cho người quản trị và người dùng giúp
dự liệu và tự động các nguồn tài nguyên trên cloud Có thiết kế giúp
dễ dàng tích hợp dịch vụ và sản phẩm của bên thứ ba Hỗ trợ VNCclient dựa trên nền web, cung cấp khả năng truy cập đến máy ảo quaVNC consoles
OpenStack Identity có hai tính năng chính:
• Quản lý người dùng: cung cấp một thư mục trung tâm ánh xạngười dùng đến các dịch vụ OpenStack họ được phép truy cập
Nó là một hệ thống xác thực chung xuyên suốt cloud và có thểtích hợp với dịch vụ thư mục đã có như LDAP Hỗ trợ nhiều hìnhthức xác thực bao gồm xác thực bằng tài khoản và mật khẩu,token
• Cung cấp danh mục dịch vụ: cung cấp một danh sách các dịch
vụ đã triển khai trong cloud OpenStack Người dùng và các công
cụ của bên thứ ba có thể xem xét nguồn tài nguyên nào họ đượcphép truy cập thông qua lập trình
Trang 29Với quyền người quản trị, OpenStack Identity cho phép:
• Cấu hình tập trung các chính sách xuyên suốt hệ thống
• Tạo người dùng và bên thuê, định nghĩa quyền hạn sử dụng cáctài nguyên tính toán, lưu trữ và mạng thông qua tính năng điểukhiển truy cập dựa trên vai trò (RBAC)
• Tich hợp với một thư mục đã tồn tại như LDAP, tạo nên một cơchế xác thực duy nhất cho toàn doanh nghiệp
Với quyền người dùng, OpenStack cho phép:
• Lấy danh sách các dịch vụ có thể truy cập
• Gửi yêu cầu API hoặc đăng nhập vào web dashboard để tạo cáctài nguyên mà tài khoản đã được cấp
Dịch vụ OpenStack Image cung cấp tính năng khám phá, đăng ký
và truyền tải các dịch vụ liên quan đến đĩa và file ảnh máy chủ Cóthể sao chép hoặc snapshot một file ảnh máy chủ và lưu trữ nó ngaylập tức là một tính năng mạnh mẽ của cloud OpenStack Các ảnh máychủ đã được lưu trữ được dùng như một khuôn mẫu để khởi tạo mộtmáy chủ mới nhanh chóng hơn và thống nhất hơn khi cần dự trù nhiềumáy chủ thay vì việc cài đặt từng hệ điều hành và cấu hình riêng các
Trang 30dịch vụ đi kèm Nó có thể dùng để lưu trữ và lập danh mục một lượngbackup không giới hạn.
Image Service có thể lưu trữ đĩa và ảnh máy chủ thông qua nhiềuback-end, bao gồm các hệ thống file, OpenStack Object Storage, Ceph API cung cấp một giao diện RESTFUL cho việc truy cập thông tin vềđĩa ảnh và cho phép người dùng lấy các đĩa ảnh về máy chủ mới
Các tính năng của Image Service gồm:
• Quản trị viên có thể tạo các khuôn mẫu để từ đó người dùng cóthể chạy các máy ảo mới
• Người dùng được tùy ý lựa chọn các file ảnh có sẵn, hoặc có thể
tự tạo file ảnh của riêng họ nếu muốn
• Lưu trữ các snapshot, giúp backup máy ảo nhanh chóng
• Quản lý tập trung tài nguyên máy chủ và CPU, bộ nhớ, đĩa cứng,card mạng đã ảo hóa Nâng cao khả năng tận dụng, tự động hóacác nguồn tài nguyên, nâng cao hiệu quả sử dụng tài nguyên, tiếtkiệm chi phí
• Quản lý mạng LAN, Flat, Flat DHCP, VLAN DHCP, IPv6 Hỗtrợ tính năng cấp IPs và VLANs bằng lập trình, linh hoạt trong
Trang 31việc thiết kể mô hình mạng, phù hợp với yêu cầu của ứng dụng
• IP động: khả năng gán và gán lại IP cho các máy ảo
• Bảo mật theo nhóm: linh hoạt gán và điều khiển quyền truy cậpmáy ảo bằng cách tạo các tổ hợp tài nguyên riêng biệt
• Điểu khiển truy cập dựa trên vai trò
• VNC Proxy qua trình duyệt web: dễ dàng, nhanh chóng trongviệc quản trị bằng dòng lệnh
• Lưu trữ và quản lý file bằng lập trình thông qua API: tự độngquản lý và dự phòng tài nguyên
Việc cài đặt OpenStack có thể thực hiện trên một máy hoặc nhiềumáy Việc cài đặt trên một máy chỉ mang mục đích thử nghiệm Trong
Trang 32môi trường sản phẩm, các dịch vụ nên được cài riêng trên các máy chủkhác nhau Công việc cài đặt gồm các bước sau:
1 Cài đặt Identity Service (Keystone) và tạo dữ liệu về phân quyền,phân nhóm ban đầu
2 Cài đặt Image Service (Glance) phục vụ cho việc lưu trữ file ảnh hệđiều hành
3 Cài đặt Networking (Nova-network/Quantumn), chịu trách nhiệmcấp IP, NAT cho các máy ảo sẽ được tạo
4 Cài đặt Compute (Nova-compute), thực hiện chạy máy ảo
5 Cài đặt Dashboard(horizon) để quản lý các máy ảo bằng giao diệnweb
6 Cài đặt hệ thống lưu trữ (Swift hoặc nova-volume/cinder) phục vụmọi hoạt động liên quan đến lưu trữ (không bắt buộc)
Trang 33Chương 2
Quản lý cấu hình
2.1 Sơ lược về quản lý cấu hình
Quản lý cấu hình (Configuration Management) là một quá trìnhthiết lập và duy trì tính nhất quán về tốc độ, tính năng của một hệthống, một dịch vụ với yêu cầu, thiết kế và các thông tin vận hànhxuyên suốt vòng đời của nó
Việc quản lý cấu hình thường thực hiện bởi quá trình xây dựngtrước mẫu cho các chương trình cần quản lý và chỉ cần thêm thông
số phù hợp khi sử dụng Các máy chủ sẽ tải cấu hình dành cho mình
về và thực thi các công việc cài đặt, cấu hình để đạt được một trạngthái định trước Quản lý cấu hình thường sử dụng ngôn ngữ của vấn
đề cần giải quyết để che đi sự phức tạp, khác biệt giữa các nền tảng ởphía dưới Một số chương trình hỗ trợ chức năng để đảm bảo máy chủ
Trang 34luôn có một cấu hình như đã định trước ngay cả khi cấu hình máy chủ
đó đã bị người dùng thay đổi thủ công
2.2 Các tiêu chí đánh giá một hệ thống
quản lý cấu hình
• Tính đơn giản: Đối tượng sử dụng các hệ thống quản lý cấuhình chủ yếu là các nhà quản trị và vận hành hệ thống Bởi vậytính đơn giản là một trong những tiêu chuẩn hàng đầu khi đánhgiá Những chương trình sử dụng ngôn ngữ phức tạp để viết filecấu hình có thể gây khó khăn cho việc sử dụng của người dùng
• Tính linh hoạt: Một mẫu cấu hình cần có khả năng áp dụngcho nhiều máy khác nhau, với những thay đổi tùy thuộc theo cácthông số của từng máy
• Khả năng mở rộng tính năng: nhu cầu dễ dàng thêm cácthành phần của bên thứ ba vào một chương trình quản lý cấuhình là cần thiết Giúp các nhà phát triển dễ dàng thêm cácthành phần của họ, đồng thời giúp chương trình có thể sử dụng
ở một môi trường chuyên biệt mà không đòi hỏi thay đổi mãnguồn chương trình
• Khả năng mở rộng hệ thống (scaling): với những hệ thốnglớn, mô hình của chương trình quản lý cấu hình sử dụng ảnh
Trang 35hưởng lớn tới khả năng mở rộng của nó Một chương trình sửdụng mô hình máy chủ - máy khách với một máy chủ duy nhất
sẽ dẫn đến quá tải và không thể mở rộng hệ thống
2.3 Một số chương trình tiêu biểu
Phổ biến thứ hai sau CFEngine, Puppet có cộng đồng người dùngrộng rãi nhờ ngôn ngữ cấu hình đơn giản hơn nhiều so với CFEnginehay Chef Sử dụng ngôn ngữ thủ tục riêng của Puppet để viết cấu hình
hệ thống Năm 2010, Puppet đã thêm tính năng sử dụng Ruby DSL
Trang 36để nâng cao tính linh động của file cấu hình nhưng đồng thời cũng làmgiảm đi tính đơn giản vốn có của Puppet.
Các khách hàng lớn: Twitter, Nokia, SugarCRM,
Chef được xây dựng ngay từ đầu nhắm tới thị trường cloud puting Chef đứng thứ ba về độ phổ biến trong thị phần các chươngtrình quản lý cấu hình Chef dụng ngôn ngữ Ruby để viết cấu hình hệthống, điều này giúp sự linh hoạt trong cấu hình của Chef là khônggiới hạn nhưng cũng là rảo cản lớn nhất cho người dùng khi họ phảihọc một ngôn ngữ lập trình
com-Chef được sử dụng bởi nhiều hãng công nghệ trên thế giới trong
đó có Facebook và DreamHost
Salt mới xuất hiện từ năm 2011 và đang trong quá trình phát triểnrất mạnh mẽ Ngay từ khi ra đời, Salt nhanh chóng thu hút được sựquan tâm của cộng đồng bởi tính đơn giản trong cấu hình và mô hình
có khả năng mở rộng Salt sử dụng định dạng YAML để viết file cấuhình kết hợp với một engine render template Yếu tố này mang lại sựđơn giản và linh hoạt cho Salt, việc viết một file cấu hình bằng YAMLđơn giản hơn rất nhiều so với việc học một ngôn ngữ lập trình mới
Trang 37Các khách hàng nổi bật của Salt có thể kể đến HP cloud, Rackspace,LinkedIn, Paypal.
Đồ án này sẽ sử dụng Salt để thực hiện quản lý cấu hình, bởi saukhi thử nghiệm qua cả bốn chương trình này, Salt tỏ ra là chương trình
có ngôn ngữ cấu hình đơn giản hơn cả, kết hợp với tài liệu chính thứccủa Salt rất dễ đọc, dễ hiểu, giúp giảm bớt thời gian học dùng Salt
2.4 Những khó khăn trong triển khai thủ
công hệ thống cloud OpenStack
Việc cài đặt OpenStack thủ công gặp phải những khó khăn:
• Đòi hỏi thực hiện một lượng lớn công việc để cài đặt và cấu hìnhnhiều phần mềm OpenStack là một tập hợp các phần mềm mãnguồn mở để tạo nên một hệ thống cloud, tính module của môhình này là ưu điểm cho phép phát triển độc lập các thành phầnnhưng cũng đồng thời là nhược điểm khiến cho quá trình cài đặttrở nên phức tạp hơn
• Việc cài đặt lặp đi lặp lại khi cần cài trên nhiều node Một hệthống cloud trong môi trường chạy thật luôn đòi hỏi được càitrên tối thiểu 3 máy vật lý có cấu hình mạnh Khi cần đảm bảotính sẵn sàng và khả năng chia tải, hệ thống cần sử dụng thêmnhiều máy vật lý để đảm bảo các nhu cầu của cloud
Trang 38• Việc thay đổi cấu hình của một bộ phận trong cloud đòi hỏi phảithực hiện trên nhiều máy vật lý Quá trình cấu hình lại bằng tayluôn tiềm ẩn lỗi do sự bất cẩn của quản trị viên khi phải làmmột lượng công việc lớn.
• Khi cần triển khai một hệ thống cloud mới, phải thực hiện càiđặt từ đầu Người vận hành cloud có thể sử dụng các script đểphục vụ việc tự động hóa, nhưng việc này kém linh hoạt, phứctạp và mang lại năng suất thấp hơn so với việc sử dụng một hệthống quản lý cấu hình tập trung
2.5 Lợi ích khi sử dụng trình quản lý cấu
hình để triển khai hệ thống cloud Stack
Open-Sử dụng một chương trình quản lý cấu hình trong quá trình triểnkhai hệ thống cloud OpenStack sẽ mang lại những lợi ích sau:
• Tự động hóa công việc cài đặt và cấu hình, dễ dàng mở rộng
hệ thống khi cần triển khai tới hàng trăm, thậm chí hàng nghìnmáy Giảm sức lực và nhân lực cần thiết để quản lý một hệ thốnglớn
• Việc cài đặt và cấu hình được thực hiện đồng thời trên nhiều
Trang 39máy cùng lúc, giúp giảm thời gian triển khai hệ thống So vớithực hiện bằng tay, sử dụng chương trình quản lý cấu hình giúptăng tốc độ thực hiện lên gấp N lần khi phải cài đặt trên N máy.
So với thực hiện bằng một script với khả năng chạy song songthì chương trình quản lý cấu hình đơn giản, nhanh và bảo mậthơn
• Khi cần thay đổi, chỉ cần thay đổi một lần tại một máy duynhất, các máy cần thay đổi sẽ tự động thay đổi theo Ưu điểmnày giúp giảm bớt lượng công việc cần làm của nhà quản trị đồngthời giảm nguy cơ về lỗi trong quá trình thực hiện
• Nếu quá trình cài đặt xảy ra lỗi, hệ thống sẽ tự thu thập lỗi vàtrả về máy quản lý Nhờ vậy, giảm thiểu được một lượng lớn côngviệc, không cần đăng nhập vào từng máy để xem lỗi xảy ra Cáclog về lỗi xảy ra có thể được lưu trữ và phân tích phục vụ quátrình giải quyết lỗi
• Dễ dàng kết hợp với các hệ thống logging và monitor để tự độngtheo dõi và quản lý cloud nhờ tính phân tán của mô hình quản
lý cấu hình
• Cấu hình hệ thống cloud có thể sử dụng lại khi cần triển khaicác hệ thống khác Nếu được thực hiện tốt, cấu hình này thậmchí có thể sử dụng trên nhiều nền tảng khác nhau, hỗ trợ choquá trình nghiên cứu, học tập và thử nghiệm
Trang 40• Thích hợp cho việc chia nhỏ công việc, phát triển và thử nghiệmtừng nhóm chức năng của cloud cho nhiều nhóm phát triển Tăngtính chuyên môn hóa trong công việc và nâng cao chất lượng của
hệ thống
• Luôn đảm bảo các node trong hệ thống cloud ở một trạng tháiđịnh trước, lập tức thông báo khi có sự cố khiến cho các dịch vụhoạt động sai lệch so với dự định Tính năng này giúp đảm bảotính nhất quán của việc quản lý hệ thống, đồng thời giúp pháthiện và ngăn chặn kịp thời khi cấu hình hệ thống bị thay đổi
2.6 Salt
SaltStack hay Salt là chương trình quản lý hệ thống và cấu hình
mã nguồn mở Hệ thống Salt xây dựng trên một mô hình phân tán
và có khả năng phân tầng (Salt Syndic) Salt được viết bằng ngônngữ Python, các node trong mô hình tương tác với nhau qua hàng đợithông tin (Message Queue) sử dụng thư viện ZeroMQ Salt gồm có haichức năng chính:
• Thực thi lệnh từ xa (Remote execution)
• Quản lý cấu hình dựa trên nền tảng thực thi lệnh từ xa