OpenStack 初探(一) -- All-In-One模式部署(初学OpenStack必备)

一、操作前需了解:

    1. OpenStack提供IaaS(基础设施即服务)服务,它是开源的云计算平台。(个人理解:将多台硬件设备虚拟化成一个池,然后在池子里放虚拟机,放存储(对象和块)集群,所有整合一起提供云计算基础服务,会想到VMWARE的ESX(i))
    2. 通常OpenStack是由许多硬件节点组合而成的,包括控制节点Controller,计算节点Compute,网络节点Network,块存储节点ceph,对象存储节点swift等。
    AllInOne是Openstack最基本的模式,即将所有必要组件都安装到一台硬件节点上。这种模式不包含块存储和对象存储模块。
    3. 组件服务名词(红色部分为必要服务组件)

DashboardHorizonProvides 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 serviceNovaManages the lifecycle of compute instances in an
OpenStack environment. Responsibilities include spawning, scheduling and
decommissioning of virtual machines on demand.
Networking serviceNeutronEnables 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 serviceSwiftStores 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 serviceCinderProvides persistent block storage to running
instances. Its pluggable driver architecture facilitates the creation
and management of block storage devices.
Identity serviceKeystoneProvides an authentication and authorization service
for other OpenStack services. Provides a catalog of endpoints for all
OpenStack services.
Image serviceGlanceStores and retrieves virtual machine disk images. OpenStack Compute makes use of this during instance provisioning.
Telemetry serviceCeilometerMonitors and meters the OpenStack cloud for billing, benchmarking, scalability, and statistical purposes.
Orchestration serviceHeatOrchestrates 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 serviceTroveProvides scalable and reliable Cloud
Database-as-a-Service functionality for both relational and
non-relational database engines.
Data Processing serviceSaharaProvides 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)
    OpenStack 初探(一) -- All-In-One模式部署(初学OpenStack必备)-LMLPHP
    请切换到root用户,全程使用root用户来进行安装
    1、 更新系统
    1.1 命令行:yum update
    更新过程中,如果更新了kernel,建议重启系统,如下:
    OpenStack 初探(一) -- All-In-One模式部署(初学OpenStack必备)-LMLPHP
    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
    注销当前登录,重新登录系统
    OpenStack 初探(一) -- All-In-One模式部署(初学OpenStack必备)-LMLPHP
    2、 安装RDO库
       安装前的yum repository:
       OpenStack 初探(一) -- All-In-One模式部署(初学OpenStack必备)-LMLPHP
       运行命令:yum install https://www.rdoproject.org/repos/rdo-release.rpm
       安装后的yum repository,多了RDO的三个库:
       OpenStack 初探(一) -- All-In-One模式部署(初学OpenStack必备)-LMLPHP
    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。
       安装成功以后是这样的显示:
       OpenStack 初探(一) -- All-In-One模式部署(初学OpenStack必备)-LMLPHP
       我的这次安装耗费了40分钟,请留意上面截图黄色高亮部分的内容。
       现在可以先登录Dashboard大致浏览一下OpenStack长啥样。登录的用户名和密码在CentOS系统/root/keystonerc_admin文件里。
       OpenStack 初探(一) -- All-In-One模式部署(初学OpenStack必备)-LMLPHP
       登录后可以看到默认存在的project admin
       OpenStack 初探(一) -- All-In-One模式部署(初学OpenStack必备)-LMLPHP
       这是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,即虚拟机)

05-11 09:23