OpenStack 初探(一) -- All-In-One模式部署(初學OpenStack必備)
一、操作前需瞭解:
1. OpenStack提供IaaS(基礎設施即服務)服務,它是開源的雲端計算平臺。(個人理解:將多臺硬體裝置虛擬化成一個池,然後在池子裡放虛擬機器,放儲存(物件和塊)叢集,所有整合一起提供雲端計算基礎服務,會想到VMWARE的ESX(i))
2. 通常OpenStack是由許多硬體節點組合而成的,包括控制節點Controller,計算節點Compute,網路節點Network,塊儲存節點ceph,物件儲存節點swift等。
AllInOne是Openstack最基本的模式,即將所有必要元件都安裝到一臺硬體節點上。這種模式不包含塊儲存和物件儲存模組。
3. 元件服務名詞(紅色部分為必要服務元件)
Service | Project Name | Description |
---|---|---|
Dashboard | Horizon | Provides a web-based self-service portal to interact with underlying OpenStack services, such as launching an instance, assigning IP addresses and configuring access controls. |
Compute service | Nova | Manages the lifecycle of compute instances in an OpenStack environment. Responsibilities include spawning, scheduling and decommissioning of virtual machines on demand. |
Networking service | Neutron | Enables Network-Connectivity-as-a-Service for other OpenStack services, such as OpenStack Compute. Provides an API for users to define networks and the attachments into them. Has a pluggable architecture that supports many popular networking vendors and technologies. |
Object Storage service | Swift | Stores and retrieves arbitrary unstructured data objects via a RESTful, HTTP based API. It is highly fault tolerant with its data replication and scale-out architecture. Its implementation is not like a file server with mountable directories. In this case, it writes objects and files to multiple drives, ensuring the data is replicated across a server cluster. |
Block Storage service | Cinder | Provides persistent block storage to running instances. Its pluggable driver architecture facilitates the creation and management of block storage devices. |
Identity service | Keystone | Provides an authentication and authorization service for other OpenStack services. Provides a catalog of endpoints for all OpenStack services. |
Image service | Glance | Stores and retrieves virtual machine disk images. OpenStack Compute makes use of this during instance provisioning. |
Telemetry service | Ceilometer | Monitors and meters the OpenStack cloud for billing, benchmarking, scalability, and statistical purposes. |
Orchestration service | Heat | Orchestrates multiple composite cloud applications by using either the native HOT template format or the AWS CloudFormation template format, through both an OpenStack-native REST API and a CloudFormation-compatible Query API. |
Database service | Trove | Provides scalable and reliable Cloud Database-as-a-Service functionality for both relational and non-relational database engines. |
Data Processing service | Sahara | Provides capabilities to provision and scale Hadoop clusters in OpenStack by specifying parameters like Hadoop version, cluster topology and nodes hardware details. |
4. 本文會搭建一個AllInOne的OpenStack,並登陸Dashboard,建立project,搭建網路,上傳image,launch一個虛擬機器(虛擬機器在OpenStack上專業術語叫instance),最後會給出呼叫OpenStack Restful API來獲取host主機資訊,列出instance的程式碼例項。
5. 補充說明:使用AllInOne來搭建OpenStack是最簡單直接的方法,因為基本上都是自動化的,無需手動配置各個元件。網上很多OpenStack deploy的教程是多節點的部署,需要一個元件一個元件的安裝和配置,由於作業系統版本的差異,以及OpenStack版本的差異,很容易出錯。比如,很多教程是在CentOs 7.1上的,並且安裝的是OpenStack的liberty版本,由於liberty版本現在已經不是最新的OpenStack版本,所以在安裝時會出現無法從CentOS的repository裡找到liberty版本的OpenStack rpm錯誤。
二、搭建AllInOne模式的OpenStack
真實環境下的OpenStack是搭建在真實硬體上的,出於研究目的,本文將會在VMWARE虛擬機器(目前最新的CentOs 7.4.1708 minimal)上搭建OpenStack。由於過程中有一些步驟容易出錯,所以建議在安裝之前給作業系統打好快照,以便後續出現莫名錯誤時能回退作業系統。
OpenStack all-in-one模式會將OpenStack的控制節點、計算節點和網路節點同時安裝在一個機器上。這種模式可以快速配置,非常方便用於測試和開發。
接下來我們會使用RDO repository來安裝OpenStack all-in-one。這裡簡單介紹一下RDO:RDO是一個組織,這群人在CentOS和RedHat上使用和開發OpenStack。RDO提供了OpenStack安裝的Repository,使用RDO方式來安裝OpenStack會非常簡單,因為幾乎所有都是自動化的,一鍵式的。
請將虛擬機器記憶體設定為>=8GB,安裝過程中對記憶體的消耗比較大,當小於這個記憶體時,安裝會失敗,報錯為:fork() failing with Out of memory (一般會在已經花費了半個多小時,安裝快要結束時報這個錯,會讓人很奔潰)。
建議的虛擬機器配置:
CPU:8核(大於等於4核,條件允許越大越好,因為OpenStack元件執行會消耗系統資源,你launch的instance也會消耗,作為基礎平臺,硬體要給力才行)
記憶體:16GB(大於等於8G)
硬碟:60GB(保險起見,建議>=100G)
網路:能surf the Internet(因為安裝過程會從RDO repository下載按照包)
開始安裝:
安裝前,先看看當前的網路和系統資訊(CentOS 7沒有ifconfig,使用ip命令替代,若要使用ifconfig,需要安裝:yum install net-tools.x86_64)
請切換到root使用者,全程使用root使用者來進行安裝
1、 更新系統
1.1 命令列:yum update
更新過程中,如果更新了kernel,建議重啟系統,如下:
1.2 修改hostname(可選)
這個步驟在all-in-one模式下不是必須的,但是建議進行修改,如果後續需要將all-in-one擴充套件成多節點時,配置節點間通訊,都會用到這個hostname。並且all-in-one的機器節點將會作為多節點中的controller節點,這裡我們將hostname更改為controller-node。
(1)命令列:hostnamectl set-hostname controller-node
(2)將/etc/hosts手動更改為:
#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 controller-node
::1 controller-node
登出當前登入,重新登入系統
2、 安裝RDO庫
安裝前的yum repository:
執行命令:yum install https://www.rdoproject.org/repos/rdo-release.rpm
安裝後的yum repository,多了RDO的三個庫:
3、 安裝packstack(自動化的OpenStack安裝程式)
命令列:yum install openstack-packstack
4、 關掉NetworkManager並disable掉,防止這個服務更改我們的網路配置。
systemctl stop NetworkManager && systemctl disable NetworkManager
下面兩個操作關掉SElinux和firewall是可選的,不關的話all-in-one也能成功。出於排除不必要干擾的考慮,建議將他們關掉。
(1)關掉SELinux
setenforce 0
修改/etc/selinux/config中:SELINUX=disabled
(2)關掉firewall
systemctl stop firewalld&& systemctl disable firewalld
5、 執行packstack開始自動化安裝
Packstack安裝有兩種模式,一種是使用answer file進行元件配置,另一種是直接進行all-in-one安裝。前者可以通過packstack命令生成一個answer file,在這個檔案裡自定義配置安裝和不安裝哪些元件,後者直接使用預設的allinone配置來安裝。建議初次安裝時使用後者。詳細的answer file模式,直接google:RDO packstack answer file
安裝命令:packstack –allinone –provision-demo=n
–provision-demo=n的含義是不安裝OpenStack的demo project,否則安裝完以後,登入Dashboard會看到已經存在一個叫demo的工程。後續我們會自己配置OpenStack的網路,再launch一個例項,出於排除掉這個demo的干擾的考慮,這裡建議不安裝它。(實際上,安裝了,也不會影響我們後續的任何操作,這裡只是為了簡化而已)
整個安裝過程可能會花費一個小時左右,這取決於你這臺機器的配置。並且中途會到repository下載安裝包,所以這個機器surf the Internet的速度也會大大影響安裝時間。
整個安裝過程會很消耗記憶體,這也是建議將虛擬機器配置為>=8GB記憶體的原因所在,使用top可以看到,packstack在觸發nova,glance,keystone等元件的逐個安裝和check available。並且記憶體使用量在蹭蹭的上漲,很快就會達到5G以上,峰值會逼近8G。
安裝成功以後是這樣的顯示:
我的這次安裝耗費了40分鐘,請留意上面截圖黃色高亮部分的內容。
現在可以先登入Dashboard大致瀏覽一下OpenStack長啥樣。登入的使用者名稱和密碼在CentOS系統/root/keystonerc_admin檔案裡。
登入後可以看到預設存在的project admin
這是OpenStack最高許可權的project,在這個project裡可以看到compute node的機器資訊,可以檢視所有project launch的instance等,而其他非admin的project是無法檢視compute node機器資訊的(預設不允許,也許可以通過修改policy來給許可權,目前簡單查過方法,未果)。後面Restful API的測試會通過admin來進行,當使用非admin的project時,會報錯:ERROR: Policy doesn’t allow os_compute_api:os-hypervisors to be performed. (HTTP 403)。
下一篇《在OpenStack中launch一個虛擬機器例項》將講解如何在OpenStack中配置和建立一個例項(instance,即虛擬機器)