1. OpenStack提供IaaS(基礎設施即服務)服務,它是開源的雲計算平臺。(我的理解:將多臺硬件設備虛擬化成一個池,而後在池子裏放虛擬機,放存儲(對象和塊)集羣,全部整合一塊兒提供雲計算基礎服務,會想到VMWARE的ESX(i))
2. 一般OpenStack是由許多硬件節點組合而成的,包括控制節點Controller,計算節點Compute,網絡節點Network,塊存儲節點ceph,對象存儲節點swift等。
AllInOne是Openstack最基本的模式,即將全部必要組件都安裝到一臺硬件節點上。這種模式不包含塊存儲和對象存儲模塊。
3. 組件服務名詞(紅色部分爲必要服務組件)node
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錯誤。linux
真實環境下的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下載按照包)web
開始安裝:
安裝前,先看看當前的網絡和系統信息(CentOS 7沒有ifconfig,使用ip命令替代,若要使用ifconfig,須要安裝:yum install net-tools.x86_64)
請切換到root用戶,全程使用root用戶來進行安裝
一、 更新系統
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
註銷當前登陸,從新登陸系統
二、 安裝RDO庫
安裝前的yum repository:
運行命令:yum install https://www.rdoproject.org/repos/rdo-release.rpm
安裝後的yum repository,多了RDO的三個庫:
三、 安裝packstack(自動化的OpenStack安裝程序)
命令行:yum install openstack-packstack
四、 關掉NetworkManager並disable掉,防止這個服務更改咱們的網絡配置。
systemctl stop NetworkManager && systemctl disable NetworkManagerswift
下面兩個操做關掉SElinux和firewall是可選的,不關的話all-in-one也能成功。出於排除沒必要要干擾的考慮,建議將他們關掉。
(1)關掉SELinux
setenforce 0
修改/etc/selinux/config中:SELINUX=disabled
(2)關掉firewall
systemctl stop firewalld&& systemctl disable firewalld
五、 運行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,即虛擬機)api