1. 程式人生 > >OpenStack 初探(一) -- All-In-One模式部署(初學OpenStack必備)

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)
    pre_install
    請切換到root使用者,全程使用root使用者來進行安裝
    1、 更新系統
    1.1 命令列:yum update
    更新過程中,如果更新了kernel,建議重啟系統,如下:
    kernel_update
    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
    登出當前登入,重新登入系統
    re-login
    2、 安裝RDO庫
       安裝前的yum repository:
       pre-repo
       執行命令:yum install https://www.rdoproject.org/repos/rdo-release.rpm
       安裝後的yum repository,多了RDO的三個庫:
       post-repo
    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。
       安裝成功以後是這樣的顯示:
       install-success
       我的這次安裝耗費了40分鐘,請留意上面截圖黃色高亮部分的內容。
       現在可以先登入Dashboard大致瀏覽一下OpenStack長啥樣。登入的使用者名稱和密碼在CentOS系統/root/keystonerc_admin檔案裡。
       keystone-file
       登入後可以看到預設存在的project admin
       first-log-in-dashboard
       這是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,即虛擬機器)