Trong sáu năm qua, hàng trăm tổ chức đã triển khai thành công nền tảng Cơ sở hạ tầng dưới dạng Dịch vụ (IaaS) dựa trên OpenStack. Số tiền đầu tư khổng lồ từ các tổ chức này, bao gồm cả những người khổng lồ trong ngành như IBM và HP, cũng như các nhà lãnh đạo mã nguồn mở, như Red Hat, Canonical và SUSE, đã khiến các nhà phân tích coi OpenStack là công nghệ mã nguồn mở quan trọng nhất kể từ khi Hệ điều hành Linux. Do phạm vi tham vọng của nó, OpenStack là một dự án nguồn mở phức tạp và phát triển nhanh, đòi hỏi một bộ kỹ năng đa dạng để thiết kế và thực hiện nó.
Bài viết này sẽ dẫn bạn qua các điểm quyết định chính mà bạn sẽ phải đối mặt trong khi kiến trúc một đám mây riêng OpenStack cho tổ chức của bạn. Bài viết này sẽ đề cập đến những thay đổi gần đây được thực hiện trong bản phát hành OpenStack mới nhất và cũng sẽ đề cập đến các khái niệm nâng cao như container, NVF và bảo mật.
Tại Hội nghị OpenStack Vancouver vào tháng 5 năm 2015, công ty bán lẻ khổng lồ Walmart của Mỹ tuyên bố rằng họ đã triển khai một đám mây OpenStack với 140.000 lõi tính toán, hỗ trợ 1,5 tỷ lượt xem trang vào Thứ Hai Điện Tử. CERN, một người dùng OpenStack lâu năm, đã thông báo rằng đám mây riêng OpenStack của họ đã tăng lên 100.000 lõi, chạy khối lượng công việc tính toán trên hai petabyte trong sản xuất. Trong những năm kể từ đó, các gã khổng lồ viễn thông trên toàn cầu, bao gồm AT & T, Verizon và NTT, đã bắt đầu quá trình chuyển xương sống của internet từ phần cứng được xây dựng có mục đích sang các chức năng mạng ảo chạy trên OpenStack.
Quy mô của dự án OpenStack và việc triển khai của nó rất đáng kinh ngạc, một bản phát hành nửa năm cho phần mềm OpenStack chứa hàng chục ngàn cam kết từ hàng trăm nhà phát triển từ hàng chục công ty.
chúng ta sẽ xem OpenStack là gì và tại sao nó lại có ảnh hưởng lớn như vậy. Chúng tôi cũng sẽ thực hiện những bước đầu tiên trong việc kiến trúc một đám mây.
OpenStack được xác định tốt nhất bởi các trường hợp sử dụng, vì người dùng và cộng tác viên tiếp cận phần mềm với nhiều mục tiêu khác nhau. Đối với các nhà cung cấp dịch vụ lưu trữ như Rackspace, OpenStack cung cấp cơ sở hạ tầng cho nền tảng dịch vụ chia sẻ nhiều tầng lớp. Đối với những người khác, nó có thể cung cấp một cơ chế cung cấp dữ liệu và tính toán cho một ứng dụng kinh doanh thông minh phân tán. Có một vài câu trả lời cho câu hỏi này có liên quan, bất kể trường hợp sử dụng của tổ chức của bạn.
Openstack và API
Một trong những mục tiêu ban đầu của OpenStack là cung cấp khả năng tương thích Giao diện chương trình ứng dụng (API) với Dịch vụ web của Amazon. Khi mức độ phổ biến của nền tảng tăng lên, API OpenStack đã trở thành một tiêu chuẩn thực tế. Trong Khảo sát người dùng tháng 11 năm 2017, các API tiêu chuẩn đã được liệt kê là trình điều khiển doanh nghiệp số một cho việc áp dụng OpenStack làm nền tảng đám mây riêng. Do đó, nhiều tổ chức doanh nghiệp mà chúng tôi đã hợp tác để tạo các đám mây OpenStack đang sử dụng chúng làm lớp Cơ sở hạ tầng dưới dạng Dịch vụ (IaaS) cho một hoặc nhiều Nền tảng dưới dạng Dịch vụ (PaaS) hoặc triển khai Đám mây lai.
Mọi tính năng hoặc chức năng của OpenStack đều được hiển thị trong một trong các API REST của nó. Có các giao diện dòng lệnh cho OpenStack (legacy nova và máy khách chung openstack mới hơn) cũng như giao diện web tiêu chuẩn (Horizon). Tuy nhiên, hầu hết các tương tác giữa các thành phần và người dùng cuối xảy ra qua API. Điều này là thuận lợi cho các lý do sau:
• Mọi thứ trong hệ thống đều có thể được tự động
• Tích hợp với các hệ thống khác được xác định rõ
• Các trường hợp sử dụng có thể được xác định rõ ràng và tự động kiểm tra
OpenStack – một dự án phần mềm nguồn mở.
OpenStack là một dự án phần mềm nguồn mở có số lượng người đóng góp rất lớn từ nhiều tổ chức. OpenStack ban đầu được tạo bởi NASA và Rackspace. Rackspace vẫn là một đóng góp đáng kể cho OpenStack, nhưng ngày nay, những đóng góp cho dự án đến từ một loạt các công ty, bao gồm cả những người đóng góp mã nguồn mở truyền thống (Red Hat, IBM và HP) cũng như các công ty dành riêng cho OpenStack (Mirantis và CloudBase). Đóng góp đến dưới dạng trình điều khiển cho các phần cơ sở hạ tầng cụ thể (nghĩa là trình điều khiển lưu trữ khối Cinder hoặc trình điều khiển SDN của neutron), sửa lỗi hoặc các tính năng mới trong các dự án cốt lõi.
OpenStack được quản lý bởi một nền tảng. Tư cách thành viên trong nền tảng là miễn phí và mở cửa cho bất kỳ ai muốn tham gia. Hiện tại có hàng ngàn thành viên trong nền tảng. Lãnh đạo về các vấn đề kỹ thuật được cung cấp bởi một ủy ban kỹ thuật gồm 13 thành viên, thường được bầu bởi các thành viên cá nhân. Các vấn đề chiến lược và tài chính được quyết định bởi một ban giám đốc, bao gồm các thành viên được chỉ định bởi các nhà tài trợ của công ty và được bầu bởi các thành viên cá nhân.
OpenStack được viết bằng ngôn ngữ lập trình Python và thường được triển khai trên hệ điều hành Linux. Mã nguồn có sẵn trên internet và các cam kết được chào đón từ cộng đồng nói chung. Trước khi mã được cam kết cho dự án, nó phải đi qua một loạt các cổng, bao gồm kiểm tra đơn vị và xem xét mã.
OpenStack – một nền tảng đám mây riêng
OpenStack cung cấp các mô-đun phần mềm cần thiết để xây dựng một nền tảng đám mây riêng tự động. Mặc dù OpenStack theo truyền thống tập trung vào việc cung cấp các khả năng IaaS theo phong cách của Dịch vụ web Amazon, các dự án mới đã được giới thiệu gần đây, bắt đầu cung cấp các khả năng có thể được liên kết nhiều hơn với Nền tảng dưới dạng Dịch vụ.
Khía cạnh quan trọng nhất của OpenStack liên quan đến việc sử dụng nó như một nền tảng đám mây riêng là mô hình người thuê. Các dịch vụ xác thực và ủy quyền cung cấp mô hình này được triển khai trong dịch vụ nhận dạng, Keystone. Mọi đối tượng ảo hoặc vật lý được quản lý bởi hệ thống OpenStack tồn tại trong một không gian riêng được gọi là đối tượng thuê hoặc dự án. Phiên bản mới nhất của API Keystone đã tự phân biệt hơn nữa để bao gồm một cấu trúc cấp cao hơn được đặt tên là một tên miền. Bất kể thuật ngữ nào, khả năng bẩm sinh để phân tách an toàn tính toán, mạng và tài nguyên lưu trữ là khả năng cơ bản nhất của nền tảng. Đây là những gì phân biệt nó với ảo hóa trung tâm dữ liệu truyền thống và làm cho nó trở thành một nền tảng đám mây riêng.
Các thành phần OpenStack
OpenStack là một hệ thống mô-đun. Mặc dù một số Kiến trúc sư OpenStack chọn triển khai kiến trúc tham chiếu của tất cả các thành phần cốt lõi được phân phối bởi nhà phân phối OpenStack, nhiều người sẽ chỉ triển khai các dịch vụ cần thiết để đáp ứng các trường hợp kinh doanh của họ.
Việc triển khai tham chiếu thường được sử dụng cho các trường hợp sử dụng phát triển trong đó trạng thái sản xuất cuối cùng của dịch vụ có thể không được xác định rõ. Việc triển khai sản xuất có thể sẽ hỗ trợ sự sẵn có của một số dịch vụ để giảm lượng cấu hình và thử nghiệm cần thiết để thực hiện. Việc triển khai tham chiếu thường sẽ không thay đổi so với triển khai của nhà phân phối để các công cụ kiểm tra và triển khai của nhà phân phối có thể được sử dụng lại mà không cần sửa đổi.
Tính toán(Compute)
OpenStack Compute (Nova) là một trong những thành phần ban đầu của OpenStack. Nó cung cấp khả năng cung cấp một máy ảo, một thùng chứa ứng dụng hoặc một hệ thống vật lý, tùy thuộc vào cấu hình. Tất cả việc cung cấp đều dựa trên hình ảnh và Dịch vụ hình ảnh OpenStack (Glance) là điều kiện tiên quyết cho dịch vụ Điện toán. Một số loại mạng cũng được yêu cầu để khởi chạy một thể hiện tính toán.
Hệ thống Mạng ban đầu được cung cấp bởi dịch vụ Điện toán trong OpenStack, nhưng việc sử dụng Nova Mạng không được chấp nhận trong bản phát hành OpenStack của Newton và nó không còn được hỗ trợ. Hệ thống Mạng được cung cấp bởi dịch vụ Neutron, cung cấp một loạt các chức năng.
Trong OpenStack, chúng tôi đề cập đến các nút tính toán được cung cấp dưới dạng phiên bản chứ không phải máy ảo. Mặc dù điều này có vẻ như là một vấn đề ngữ nghĩa, nó là một thiết bị hữu ích vì một vài lý do. Lý do đầu tiên là nó mô tả cơ chế triển khai; tất cả tính toán trong OpenStack là sự khởi tạo của hình ảnh Glance với một mẫu phần cứng được chỉ định,
Phần cứng này được mô tả các đặc điểm của hình ảnh khởi tạo và nó thường đại diện cho một số lõi tính toán với một lượng bộ nhớ và lưu trữ nhất định. Dung lượng có thể được cung cấp bởi dịch vụ Điện toán hoặc dịch vụ lưu trữ khối, Cinder. Mặc dù hạn ngạch được xác định để giới hạn số lượng lõi, bộ nhớ và lưu trữ có sẵn cho một người dùng nhất định (người thuê).
Lý do thứ hai mà thuật ngữ này hữu ích là các máy ảo trong OpenStack thường không có vòng đời giống như trong ảo hóa truyền thống. Mặc dù chúng ta có thể mong đợi các máy ảo có vòng đời nhiều năm như các máy vật lý, chúng ta sẽ mong đợi các trường hợp có vòng đời được đo bằng ngày hoặc tuần. Các máy ảo được sao lưu và phục hồi, trong khi các trường hợp được giải cứu hoặc sơ tán. Các nền tảng ảo hóa kế thừa giả định thay đổi kích thước và sửa đổi các hành vi được đưa ra; các nền tảng đám mây như OpenStack mong muốn triển khai lại các máy ảo hoặc thêm dung lượng bổ sung thông qua các trường hợp bổ sung, không thêm tài nguyên bổ sung cho các máy ảo hiện có.
Lý do thứ ba mà chúng tôi thấy hữu ích khi sử dụng thuật ngữ này là dịch vụ Điện toán đã phát triển qua nhiều năm để khởi chạy một số loại tính toán khác nhau. Một số triển khai OpenStack chỉ có thể khởi chạy các máy vật lý, trong khi các triển khai khác có thể khởi chạy kết hợp các phiên bản vật lý, ảo và dựa trên container. Cấu trúc tương tự được áp dụng, bất kể nhà cung cấp tính toán.
Một số dòng giữa các máy ảo và cá thể đang trở nên mờ nhạt hơn khi nhiều tính năng doanh nghiệp được thêm vào dịch vụ OpenStack Compute. Sau đó, chúng ta sẽ thảo luận về một số cách mà chúng ta có thể khởi chạy các cá thể hoạt động giống như các máy ảo để có khối lượng công việc tính toán truyền thống hơn.
Lưu trữ đối tượng(Object storage)
Dịch vụ lưu trữ sao lưu phù hợp cho các trường hợp tính toán được cung cấp bởi dịch vụ Nova. Loại lưu trữ liên tục đầu tiên được cung cấp trong hệ thống OpenStack là lưu trữ đối tượng, dựa trên dịch vụ S3 có sẵn trong môi trường Dịch vụ web của Amazon.
Lưu trữ đối tượng được cung cấp bởi dịch vụ Swift trong OpenStack. Giống như Nova cung cấp API tính toán tương thích EC2, Swift cung cấp API lưu trữ đối tượng tương thích S3. Các ứng dụng được viết để chạy trên dịch vụ Amazon EC2 và đọc và ghi dữ liệu liên tục của chúng vào dịch vụ Lưu trữ đối tượng S3 không cần phải viết lại để chạy trên hệ thống OpenStack.
Một số ứng dụng của bên thứ ba cung cấp API tương thích S3 hoặc Swift và chúng có thể được thay thế cho Swift trong triển khai OpenStack điển hình. Chúng bao gồm các cửa hàng đối tượng nguồn mở, như Gluster hoặc Ceph, hoặc các cửa hàng độc quyền, như Scality hoặc Cloudian. Dịch vụ Swift được chia thành một số thành phần và các ứng dụng của bên thứ ba có thể sử dụng thành phần Proxy của Swift cho các dịch vụ API và chỉ triển khai một phụ trợ hoặc có thể thay thế hoàn toàn dịch vụ Swift. Tất cả các cửa hàng đối tượng tương thích OpenStack sẽ sử dụng mô hình người thuê của OpenStack và chấp nhận mã thông báo Keystone để xác thực.
Khối lưu trữ(Block storage)
Lưu trữ liên tục truyền thống được cung cấp cho khối lượng công việc OpenStack thông qua thành phần lưu trữ khối Cinder. Vòng đời của các khối Cinder được duy trì độc lập với các phiên bản tính toán và các khối có thể được gắn hoặc tách ra với một hoặc nhiều phiên bản tính toán để cung cấp một kho lưu trữ sao lưu cho lưu trữ dựa trên hệ thống tệp.
OpenStack cung cấp triển khai Cinder tham chiếu, tận dụng lưu trữ cục bộ trên máy chủ và sử dụng LVM cũng như khả năng sử dụng iSCSI để chia sẻ một thiết bị khối được gắn vào nút lưu trữ Cinder có thể sử dụng lưu trữ của nó trong các trường hợp. Việc triển khai này thiếu tính sẵn sàng cao và nó thường chỉ được sử dụng trong các môi trường thử nghiệm. Việc triển khai sản xuất có xu hướng tận dụng giải pháp lưu trữ khối dựa trên phần mềm hoặc dựa trên phần cứng, như Ceph hoặc NetApp, được chọn dựa trên các yêu cầu về hiệu suất và tính khả dụng.
Mạng(Network)
Dịch vụ nền tảng cuối cùng trong OpenStack là Neutron, dịch vụ Mạng. Neutron cung cấp API để tạo cổng, mạng con, mạng và bộ định tuyến. Các dịch vụ mạng bổ sung, như tường lửa và cân bằng tải, được cung cấp trong một số triển khai OpenStack.
Như với Cinder, việc triển khai tham chiếu, dựa trên Open vSwitch, thường được sử dụng trong môi trường thử nghiệm hoặc triển khai nhỏ hơn. Việc triển khai sản xuất quy mô lớn sẽ thúc đẩy một trong nhiều giải pháp SDN dựa trên phần mềm hoặc phần cứng có sẵn, có trình điều khiển Neutron. Các giải pháp này bao gồm từ các triển khai nguồn mở như OpenContrail của Juniper đến các giải pháp độc quyền như nền tảng NSX của VMware.