Trong đó, điện toán đám mây có nhiều tính năng mở rộng như báo cáo chi phí, thanh toán, và điều phối.Như vậy, OpenStack là một hệ điều hành ảo cho phép tổ chức hoặc người dùng có thể quả
TỔNG QUAN VỀ OPENSTACK
Khái niệm
OpenStack là một phần mềm mã nguồn mở cho phép triển khai và quản lý các cơ sở hạ tầng đám mây công cộng và đám mây riêng OpenStack dựa trên API để quản lý tập trung các tài nguyên như phần cứng, phần mềm, VM và container nhằm cung cấp các dịch vụ có tính khả dụng cao.
OpenStack sử dụng công nghệ ảo hoá để tạo ra môi trường điện toán đám mây và VMware vSphere, Microsoft Hyper-V hoặc KVM Trong đó, điện toán đám mây có nhiều tính năng mở rộng như báo cáo chi phí, thanh toán, và điều phối.
Như vậy, OpenStack là một hệ điều hành ảo cho phép tổ chức hoặc người dùng có thể quản lý tài nguyên mạng và lưu trữ không đồng nhất thông qua bảng điều khiển quản lý và API Ngoài ra, OpenStack dựa trên đám mây hỗ trợ lưu trữ web, dự án dữ liệu lớn, phân phối dịch vụ phần mềm và triển khai container.
Trên thị trường nền tảng đám mây, OpenStack thường có sự cạnh tranh vớiEucalyptus và Apache CloudStack Tuy nhiên, OpenStack vẫn được lựa chọn sử dụng nhiều hơn với mục đích là nền tảng đám mây gốc của nhiều nhà cung cấp
Hình 1.1.1 Khái niệm về OpenStack
Kiến trúc về OpenStack
Hình 1.2.1 Kiến trúc khái niệm của OpenStack
Tên Kiến Trúc Chức năng
❖ Dùng để triển khai các ứng dụng dựa vào các template được dựng sẵn
❖ Tự động tính toán và sử dụng các tài nguyên: Compute, Network…
❖ Là tab “stack” ở trong HorizonHorizon ❖ Là tab “stack” ở trong Horizon
❖ Tương tác với APIs của các dịch vụ
❖ Không đầy đủ các chức năng để điều khiển OpenStack
Keystone ❖ Dịch vụ xác thực và ủy quyền trong OpenStack
❖ Quản lý, tạo, sửa, xóa tài khoản, nhóm người dùng, vai trò…
❖ Hỗ trợ và có thể kết hợp với LDAP, PAM, SQL…
Nova ❖ Lập lịch cho các máy ảo (Instance) Tạo, sửa, xóa, thay đổi các máy ảo
❖ Quản lý vòng đời của các máy ảo từ lúc tạo ra, đến lúc xóa đi
❖ Nova tương đương với dịch vụ EC2 (Dịch vụ cung cấp máy ảo của AWS)
❖ Hỗ trợ nhiều Hypervisor: KVM, VMWare, Hyper-V, XEN, Docker…
❖ Hỗ trợ nhiều Backend storage: iSCSI, SAN, NetAPP…
Glance ❖ Lưu trữ và truy vấn các disk image (Các máy mẫu được tạo sẵn)
❖ Hỗ trợ nhiều định dạng của Hypervisor: vmdk, vhd, qcow, ami…
❖ Làm việc với các storage backend: File system, Swift, Amazon S3
Swift ❖ Đọc và ghi các đối tượng (chính là các file) thông qua
❖ Tương tự dịch vụ S3 (Simple Storage Service) của AWS (Dịch vụ lưu trữ file)
❖ Dữ liệu lưu trữ trong Swift có khả năng tạo bản sao
❖ Lưu trữ theo kiểu phân tán, có khả năng chống chịu lỗi và nhất quán.
❖ Có thể triển khai thành dịch vụ độc lập về lưu trữ (swiftstack com
Neutron ❖ Trước đó tên mã dự án là Quantum, đổi sang Neutron trong bảnGrizzly
❖ Mục tiêu: Cung cấp dịch vụ về mạng trong OpenStack.
❖ Có nhiều dịch vụ cao cấp: FWaaS, LBaaS, VPNaaS.
❖ Thay thế cho Nova network
❖ Có cơ chế Plugin để làm việc với các hãng và giải pháp về network khác.
Cinder ❖ Thay thế Nova Volume, cung cấp các “Block Storage” gắn vào máy ảo
❖ Cung cấp các Volume (Ổ đĩa-partion) gắn vào các máy ảo
❖ Có thể khởi tạo các máy từ Volume
❖ Có các plugin để kết nối với Storage của các hãng khác.
❖ Có thể sao lưu, mở rộng các Volume.
Ceilometer ❖ Đáp ứng tính năng “Pay as you go” của Cloudcomputing
❖ Dùng để thống kê các tài nguyên mà người dùng sử dụng
❖ Giám sát mức độ sử dụng tài nguyên trong OpenStack
❖ Có mục tiêu lớn: Đo lường để tính phí
❖ Tích hợp trong Horizon với quyền Admin.
Các thành phần trong OpenStack
Hình 1.3.1 Các thành phần trong OpenStack
❖ Object Storage (code-name Swift)
❖ Block Storage (code-name Cinder)
❖ Identity Service (code-name Keystone)
❖ Image Service (code-name Glance)
❖ Compute (code-name Nova) là một trong những thành phần chính của nền tảng đám mây OpenStack Thành phần này cung cấp các dịch vụ để quản lý máy ảo trên hệ thống đám mây OpenStack.
❖ Nova cung cấp một API để quản lý các máy ảo Người dùng có thể sử dụng API này để tạo, xóa, sửa đổi và khởi động lại các máy ảo trên hệ thống đám mây OpenStack Nova hỗ trợ nhiều loại hypervisor như KVM, VMware, Xen và Hyper-V Điều này cho phép người dùng sử dụng các máy ảo chạy trên các nền tảng khác nhau trên hệ thống đám mây OpenStack.
❖ Các tính năng chính của Nova bao gồm:
➢ Quản lý máy ảo: Nova cung cấp các API để quản lý các máy ảo, bao gồm tạo, xóa và khởi động lại các máy ảo.
➢ Quản lý hạ tầng máy chủ: Nova cung cấp các dịch vụ để quản lý hạ tầng máy chủ, bao gồm tạo và xóa các máy chủ và cấu hình máy chủ.
➢ Điều khiển tài nguyên: Nova cho phép người dùng điều khiển tài nguyên của các máy ảo, bao gồm CPU, RAM và bộ nhớ đĩa.
➢ Hỗ trợ cho nhiều hypervisor: Nova hỗ trợ nhiều loại hypervisor như KVM, VMware, Xen và Hyper-V.
➢ Mở rộng dễ dàng: Nova được thiết kế để mở rộng dễ dàng Các máy chủ compute có thể được thêm vào và xóa khỏi hệ thống đám mây OpenStack mà không ảnh hưởng đến hoạt động của hệ thống.
➢ Hỗ trợ cho mạng ảo: Nova cung cấp hỗ trợ cho mạng ảo, bao gồm mạng riêng ảo (VLAN) và mạng SDN (Software Defined Network).
❖ Networking (code-name Neutron) là một trong những thành phần chính của nền tảng đám mây OpenStack Thành phần này cung cấp các dịch vụ để quản lý mạng trên hệ thống đám mây OpenStack.
❖ Neutron cung cấp một API để quản lý mạng ảo trên hệ thống đám mâyOpenStack Người dùng có thể sử dụng API này để tạo, xóa và cấu hình các mạng ảo trên hệ thống đám mây OpenStack Neutron hỗ trợ nhiều loại mạng ảo như VLAN, VXLAN, GRE, và các mạng ảo SDN khác Điều này cho phép người dùng tùy chỉnh mạng của họ để phù hợp với các yêu cầu kinh doanh của họ.
❖ Các tính năng chính của Neutron bao gồm:
➢ Quản lý mạng ảo: Neutron cung cấp các API để quản lý mạng ảo, bao gồm tạo, xóa và cấu hình các mạng ảo.
➢ Quản lý mạng vật lý: Neutron cung cấp các dịch vụ để quản lý mạng vật lý, bao gồm tạo và xóa các mạng vật lý và cấu hình mạng vật lý.
➢ Quản lý tài nguyên mạng: Neutron cho phép người dùng quản lý tài nguyên mạng, bao gồm IP, subnet và mạng ảo.
➢ Hỗ trợ cho nhiều mạng ảo: Neutron hỗ trợ nhiều loại mạng ảo như VLAN, VXLAN, GRE và các mạng ảo SDN khác.
➢ Hỗ trợ cho mạng SDN: Neutron cung cấp hỗ trợ cho các mạng ảo SDN (Software Defined Network), cho phép người dùng tùy chỉnh mạng của họ để phù hợp với yêu cầu kinh doanh của họ.
➢ Tích hợp với các nhà cung cấp mạng: Neutron cho phép tích hợp với các nhà cung cấp mạng bên ngoài để cung cấp các dịch vụ mạng như VPN, tường lửa và cân bằng tải.
❖ Object Storage (code-name Swift) là một trong những thành phần chính của nền tảng đám mây OpenStack Thành phần này cung cấp các dịch vụ lưu trữ đối tượng trên hệ thống đám mây OpenStack.
❖ Swift cung cấp một hệ thống lưu trữ đối tượng phân tán để lưu trữ và truy cập các đối tượng như file, hình ảnh và video trên hệ thống đám mây
OpenStack Swift cũng cung cấp các tính năng bảo mật như mã hóa dữ liệu, kiểm soát truy cập và phân quyền.
❖ Các tính năng chính của Swift bao gồm:
➢ Lưu trữ đối tượng phân tán: Swift cung cấp hệ thống lưu trữ phân tán để lưu trữ các đối tượng như file, hình ảnh và video trên hệ thống đám mây OpenStack.
➢ Tính năng bảo mật: Swift cung cấp các tính năng bảo mật như mã hóa dữ liệu, kiểm soát truy cập và phân quyền để đảm bảo rằng dữ liệu của người dùng được bảo vệ.
➢ Tính sẵn sàng cao: Swift có khả năng chịu lỗi và phục hồi dữ liệu tự động Nó có thể chuyển dữ liệu sang các node khác trong hệ thống để đảm bảo tính sẵn sàng cao.
➢ Hỗ trợ cho nhiều giao thức lưu trữ: Swift hỗ trợ nhiều giao thức lưu trữ như OpenStack Object Storage API, Amazon S3 API và Swift API.
➢ Tính mở rộng linh hoạt: Swift có khả năng mở rộng linh hoạt, cho phép người dùng tăng hoặc giảm dung lượng lưu trữ theo nhu cầu của họ.
❖ Block Storage (Cinder) là một trong những thành phần chính của nền tảng đám mây OpenStack Thành phần này cung cấp các dịch vụ lưu trữ khối cho hệ thống đám mây OpenStack.
Ưu đi^m, nhược đi^m của OpenStack
❖ Tính linh hoạt: OpenStack cho phép người dùng tùy chỉnh, triển khai và quản lý các dịch vụ đám mây theo nhu cầu sử dụng của mình Nó cung cấp một loạt các dịch vụ đám mây linh hoạt để đáp ứng nhu cầu của các doanh nghiệp và tổ chức.
❖ Tính mở: OpenStack được phát triển dưới giấy phép mã nguồn mở, cho phép người dùng truy cập mã nguồn và sửa đổi mã nguồn để đáp ứng nhu cầu của họ Điều này cũng đồng nghĩa với việc giảm chi phí do phải trả tiền bản quyền OpenStack có thể mở rộng lên tới hàng ngàn server, cho phép người dùng mở rộng hệ thống đám mây của mình để đáp ứng nhu cầu tăng trưởng
❖ Tính tiêu chuẩn: OpenStack được xây dựng dựa trên các tiêu chuẩn ngành, cho phép các doanh nghiệp và tổ chức triển khai các dịch vụ đám mây một cách đồng nhất và thống nhất.
❖ Tính tương thích: OpenStack có khả năng tương thích với các hệ thống đám mây khác như Amazon Web Services hay Microsoft Azure, giúp người dùng dễ dàng chuyển đổi giữa các dịch vụ đám mây.
❖ Khó khăn trong việc triển khai và quản lý: OpenStack đòi hỏi kỹ năng và kiến thức cao để triển khai và quản lý các dịch vụ đám mây Việc triển khai và quản lý đòi hỏi nhiều thời gian và nguồn lực.
❖ Thiếu hỗ trợ từ các nhà cung cấp: Mặc dù OpenStack được phát triển dưới giấy phép mã nguồn mở, tuy nhiên, các nhà cung cấp đám mây khác không luôn hỗ trợ cho việc triển khai OpenStack, điều này có thể gây khó khăn cho các doanh nghiệp và tổ chức khi triển khai OpenStack
❖ Vấn đề bảo mật: Việc bảo vệ dữ liệu và đảm bảo an toàn cho các dịch vụ đám mây là một vấn đề lớn và đòi hỏi các chuyên gia
Hình 1.4.1 Ưu nhược điểm của OpenStack
Mô hình giải pháp của OpenStack
Điện toán đám mây OpenStack được các nhà cung cấp dịch vụ phát triển qua 3 giải pháp:
IaaS (Infrastructure as a service) cung cấp/cho thuê cơ sở hạ tầng như thuê máy chủ…
PaaS (Platform as a service) cung cấp nền tảng để phát triển ứng dụng
SaaS (Software as a service) cung cấp khả năng truy cập phần mềm linh hoạt nhưHCM, CRM…
Hình 1.5.1 mô hình giải pháp của OpenStack
QUẢN TRỊ TÀI NGUYÊN ĐÁM MÂY HẠ TẦNG OPENSTACK
Mục tiêu
❖ Xây dựng một Containers với Admin là người chủ và User là người thực hiện
❖ Xây dựng các Project cho Admin và User
❖ Thiết lập sự quản lý giữa Admin và User
❖ Tạo những Project của Admin
■ Xây dựng được một Instances
■ Xây dựng được một Images
■ Xây dựng được một Server Group
■ Xây dựng được các Routers
■ Tạo những Project cho User
❖ Tạo những Project của User
■ Xây dựng được một Instances
■ Xây dựng được một Images
■ Xây dựng được một Server Group
■ Xây dựng được các Routers
Mô hình xây dựng
Hình 2.2.1 mô hình xây dựng
Công cụ thực hiện
Bài lab được thực hiện trên OpenStack Dashboard
Kết quả
❖ Lập được các Project cho Admin
❖ Lập được các User và các Project để giao cho User làm
❖ Bên tài khoản của User, lập được các Project riêng cho User
❖ Hiểu một cách đơn giản như sau: Admin sẽ giao cho ít nhất một User thực hiện một Project và việc của User của User là thực hiện Project đấy vs các
User khác Và đồng thời User này cũng có thể tạo một Project riêng cho bản thân của nó
❖ Admin sẽ quản lý tất cả các User cũng như các Project của User, User chỉ có lập được các Project mà Admin cho phép
Tóm tắt các bước thực hiện
❖ Thiết lập OpenStack Dashboard Service (Horizon) chạy trên VM Ware với hệ điều hành Ubuntu 20.04 LTS
❖ Đăng nhập vào OpenStack Dashboard
❖ Lập các Project cho Admin
➢ Trên thanh Project, chọn các Project cho Admin
❖ Lập được các User và các Project cho User
■ Trên thanh Identity, chọn Users, kích Create User và làm theo hướng dẫn
➢ Lập các Project cho User:
■ Sau khi lập được User, đăng nhập vào tài khoản của User mà Admin đã cung cấp cho
■ Trên thanh Project, chọn các Project muốn lập cho User
➢ Admin có thể quản lý tất cả các User cũng như không gian bộ nhớ của tất cả Admin có quyền kiểm soát chứ không có quyền truy cập vào các Project riêng của User
➢ Khi lập một User, Admin sẽ cấp cho User một tài khoản để có thể truy cập vào Admin có quyền đưa User làm một Project bất kì hoặc đưa User vào một Groups nào đó mà Admin muốn
➢ User có thể tạo những Project riêng để hoàn thiện Project mà Admin giao cho User có thể tạo những Project riêng giống Admin và có thể kiểm soát các Project của mình Các User chỉ có thể quản lý các Project của mình chứ không có quyền quản lý nhau.
➢ Admin chia sẻ cái gì thì User mới có thể truy cập cũng như sử dụng cái đó
Các bước thực hiện
Sau khi thiết lập được OpenStack Dashboard Service (Horizon), truy cập vào URL bên sau bằng bất kì trình duyệt web nào: http://(Tên máy chủ hoặc địa chỉ IP của máy chủ bảng điều khiển)/horizon/
Sau khi truy cập vào URL http://10.0.0.30/horizon/ giao diện bài lab cá nhân ta sẽ hiện ra
Hình 2.6.1 Giao diện đăng nhập của OpenStack
Sau đó chúng ta đăng nhập OpenStack Dashboard theo tài khoản và mật khẩu do chúng ta tự thiết lập khi thiết lập OpenStack Dashboard Service (Horizon).
Sau khi đăng nhập, chúng ta sẽ nhận được giao diện như sau:
Hình 2.6.2 Giao diện sau khi đăng nhập
2.6.1 Lập các Project cho Admin
➢ Bước 2: Tại đây ta kích chọn Create Images sau đó điền đầy đủ thông tin
○ File: hệ điều hành CirrOS-0.6.1-x86_64-disk.in
○ Format: FLOOP-Virtuozoo/Parallels Loopback Disk
○ Sau đó chọn Create Image để tạo 1 hệ điều hành mới
➢ Bước 3: Kiểm tra hệ điều hành
Chọn vào tên hề điều hành muốn kiểm tra trong sách mà ta vừa tạo ( ImageName: LeVanLinh)
➢ Bước 1: Project -> Compute -> Instances để truy cập các máy ảo trên môi trường
➢ Bước 2: Trong cửa sổ Instances, chọn Launch Instance
➢ Bước 3: Cửa sổ “Launch Instance” hiện ra, chúng ta điền đầy đủ thông tin và kích chọn Next Ở trường “Instances Name”, Chúng ta điền tên cho Instances Tại trường
“Count” chúng ta điền số lượng máy ảo mà chúng ta muốn tạo Ta đặt tên Instances là “LeVanLinh”, Count là 1, thì sau khi tạo xong chúng ta sẽ có 1 máy ảo với tên là LeVanLinh”.
➢ Bước 4: Chọn hệ điều hành cho máy ảo
Sau khi điền đầy đủ thông ở trang thứ nhất chúng ta kích chọn Next để sang trang thứ 2
Tại trang thứ 2 chúng ta kích chọn hệ điều hành cho máy ảo Để chọn được hệ điều hành thì chúng ta phải chủ động tạo được hệ điều hành (Hướng dẫn bên trên) Ví dụ chúng ta chọn hệ điều hành CirrOS cho máy ảo, chúng ta kính vào mũi tên hướng lên tại hệ điều hành CirrOS Sau đó chúng ta kích chọn Next
➢ Bước 5: Sau khi kích chọn Next, chúng ta sẽ điền nốt thông tin của trang thứ 3 Tại đây, chúng ta sẽ chọn dung lượng cho máy ảo Ví dụ chúng ta có 2 sự lựa chọn như trên hình, chúng ta muốn máy ảo có dung lượng bao nhiêu thì kích chọn mũi tên ứng với dung lượng đó Sau đó chúng ta kích chọn Launch Instances
➢ Bước 6: Sau khi kích chọn Launch Instances, chúng ta hoàn tất việc việc lập máy ảo cho Admin và chúng ta sẽ có một máy ảo với tên
➢ Bước 7: Kiểm tra máy ảo Để kiểm tra xem máy ảo chúng ta hoạt động như nào thì chúng ta kích chọn vào tên máy ảo
Tại đây chúng ta có thể thấy rất nhiều trường hiện ra với chúng ta và mỗi trường sẽ cho chúng ta một thông tin khác nhau Ví dụ như:
Overview: Tại trường này, chúng ta có thể xem tất cả các thông tin của máy ảo mà chúng ta vừa mới lập, từ Tên máy ảo, ID máy ảo hay rất nhiều thông tin khác
Interfaces: Tại trường này, chúng ta có thể xem địa chỉ Interfaces mà con máy ảo này kết nối tới cũng như có thể xem được Địa chỉ MAC,…
Log: Tại trường này, chúng ta có thể xem được tài khoản và mật khẩu để kết nối vào máy ảo
Console: Tại trường này chúng ta sẽ đăng nhập vào máy ảo và kiểm tra xem máy ảo của chúng ta có thật sự hoạt động được không Để kiểm tra hoạt động của máy ảo, chúng ta cần đăng nhập vào máy ảo với tên khoản và mật khẩu chúng ta có được ở trường Log Sau đó chúng ta kiểm tra máy ảo với một câu lệnh bất kì Ví dụ như chúng ta sẽ kiểm tra địa chỉ IP của máy ảo bằng câu lệnh “ifconfig
Chúng ta có thể thấy rõ máy ảo hoàn toàn có thể hoạt động được và nó đang hoạt động với địa chỉ IP là 192.168.123.152, BroadCast là 192.168.123.255 và NetMask là 255.255.255.0
➢ Bước 1: Để lập được một Server Group cho Admin, kích vào Project trên thanh công cụ, chọn Compute và chọn Server Groups
➢ Bước 2: Tạo Server Group Ở đây, chúng ta điền đầy đủ thông tin của Server Group mà chúng ta muốn tạo Ví dụ như tại trường Name chúng ta chọn tên là “private”, tại trường Policy chúng ta có thể chọn bất kì ví dụ như ở đây là chọn “Anti Affinity” Sau đó nhấn Submit
➢ Bước 1: Trên thanh Project, kích chọn Networks, kích chọn Routers và nhấn Create Router
➢ Bước 2: Điền tên Router và kích chọn Create Router
Ví dụ ở đây chúng ta sẽ điền tên Router là “R2”
➢ Bước 3: Sau khi kích chọn Create Router, chúng ta đã có con Router mới với tên “R2”
➢ Bước 4: Thiết lập Interface cho Router
Kích vào tên Router, chọn trường Interfaces và nhấn Add Interface
Tại trường Subnet, chúng ta chọn tới Network mà chúng ta đã lập ở trên
“Internet: 192.168.123.0/24 (subnet1)”, để con Router này có thể kết nối với Network mà chúng ta đã lập và chọn một địa chỉ IP tùy thích, ví dụ ở đây là 192.168.123.2.Sau đó nhấn Submit để thiết lập Interface cho Router
➢ Bước 5: Kiểm tra Interface Để biết xem con Router này đã thiết lập Interfaces thành công hay chưa và nó có kết nối với Network mà chúng ta đã lập hay không thì kích chọn Network trên thanh Project, sau đó kích chọn Network Topology Ở đây chúng ta có thể thấy con Router đã liên kết với Network mà chúng ta đã tạo trước đó và không chỉ các con Router kết nối với Network mà thậm chí các máy ảo chúng ta lập trước đó cũng kết nối Network
2.6.2 Quản lý xác thực và ủy quyền
➢ Bước 1: Kích chọn Users tại thanh công cụ Identity
Kích chọn Create User, tại đây điền đầy đủ thông tin các trường của User. Tại đây có một số trường bắt buộc chúng ta phải điền ví dụ như trường User Name, Password, Confirm Password Đây là các trường quan trọng và thiết yếu để User có thể đăng nhập vào tài khoản của mình Ví dụ ở đây chúng ta sẽ lập 1 User với tên là “levanlinh”, mật khẩu là “Linh2001” Sau khi điền đầy đủ thông tin các trường chúng ta kích chọn vào Create User
➢ Bước 3: Xác thực tài khoản
Sau khi tạo được User xong, chúng ta đăng xuất tài khoản Admin ra và truy cập vào tài khoản User mà chúng ta vừa tạo Nếu đăng nhập thành công thì chứng tỏ chúng ta đã tạo User thành công