zoukankan      html  css  js  c++  java
  • 单节点部署OpenStack(Queens版本、DevStack)

      本人在本科毕业设计期间选择了基于OpenStack做一个项目,当初选题时过分低估了OpenStack学习的时间成本以及学习难度(说起来都是泪…着手搭建平台之前对linux、云计算、虚拟化都知之甚少),以至于整过过程下来踩了无数的坑,但整个过程亦收获颇丰,也重新燃起了对技术的热情。在学习和实践期间通过阅读论坛博主CloudMan写的“每天5分钟玩转OpenStack”一书以及论坛中很多博主分享的文章获得了很大的帮助。因此同样秉持着开源、共享的精神,在博客园也开通了自己的博客,将这段时间学习的过程、踩过的坑记录下来,一方面也算是对自己做过的工作做个总结,另一方面也期望能够在一定程度上给同是新手、同样遇到很多问题与麻烦的同僚一个解决问题的思路和方法。

     

      PS:本文叙述比较详尽,较适合小白,因为本人也是Newbie,还要向大佬们不断学习探索~

     

      操作系统的安装:

      我的OpenStack安装在了Ubuntu 16.04操作系统之下(Win10+Ubuntu 16.04双系统),先安装操作系统;操作系统安装上便遇到了麻烦:在Ubuntu安装过程选择分区时,最开始根据网上的教程,划分了三个分区Swap、boot和/:

      Swap(交换分区)8G:类似于Windows的虚拟内存,物理内存空间不够时使用磁盘资源,通常设置为内存大小的二倍,但部署在普通笔记本上一般8G的容量足矣;

      /boot 200M:存放Linux内核文件、启动信息;

      /:剩下的磁盘空间挂载到/下即可,/为根目录(可以将其理解为只一个分区的Windows,即C盘)。

      问题就出在/boot这个分区,它是由于以前BIOS只能认一个1024柱面的硬盘。如果启动文件放在0-1023之外,BIOS就无法读取启动所需的文件,从而无法启动。为了兼容这种BIOS,就需要在磁盘前端分出一个小分区专门来存储启动文件。 现在这个分区完全没有划分的必要,内核文件和启动信息会存储在/中相关的子目录下。众所周知Linux内核会不断更新,而在更新之后不再使用的旧的内核文件依然会存在,占据着空间,倘若划分了/boot分区(通常容量不会太大),当空间被占满或不足时会出现各种各样的问题。我在用DevStack自动化部署工具安装OpenStack的时就出现了/boot空间不足自动终止安装,安装失败的问题。然后在网上搜索如何扩大/boot分区,得到的答案是做这件事太复杂了,甚至因此都可以为此写一篇长文,所以最后的解决方案就是重新安装系统。还好只是为的搭建实验环境新安装的操作系统,否则会有更多麻烦的事情发生。

      Linux分区是树结构的,/为根目录,在其目录下会分各个执行不同工作的目录,所以在分区的时候完全可以只分一个根分区和一个swap(虚拟内存)分区即可。

      按照通常的先安装Windows在安装Ubuntu的安装顺序,在Ubuntu安装过程结束后会自动建立通过grub2的双系统引导(通过Linux引导Windows)。如果是安装Win+CentOS双系统还涉及到修复引导的问题。此外,还有通过Windows引导Linux的方式启动系统,可以通过EasyBCD建立引导文件实现。这些问题之后再在另一篇文章详述。

     

      OpenStack安装部署:

      进入操作系统首先进行一系列的配置,最后执行DevStack工具自动化安装。

     

    1.更换apt源

    系统设置-软件和更新-Ubuntu软件页面下拉菜单中选择其他国内的站点(如阿里云、清华或是点选自动选择最佳服务器),确认关闭时选择重新载入。

    或者通过命令行:

    sudo vim /etc/apt/sources.list(如果提示没有安装vim,请使用命令:sudo apt install vim)

    用下述内容替换文本内容:

    deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse

    执行如下命令:

    sudo apt-get update

    sudo apt-get upgrade

     

    2.设置root用户

    sudo passwd root

     

    3.时间同步

    在 Ubuntu 下把当地时间写入硬件时间,有效解决双系统时间不同步问题。

    (1)安装 ntpdat
    sudo apt install ntpdate
    (2)校对时间
    sudo ntpdate http://cn.pool.ntp.org
    (3)同步硬件时间
    sudo hwclock --localtime --systohc

     

    4.安装pip、vim、git

    sudo apt-get install python-pip

    sudo apt install vim

    sudo apt-get install git

     

    5.更改pip源

    mkdir .pip

    vim .pip/pip.conf

    将如下内容写入(修改为阿里源):

    [global]
    index-url = https://mirrors.aliyun.com/pypi/simple/
    trusted-host = mirrors.aliyun.com

     

    6.升级pip版本

    sudo pip install --upgrade pip

     

    7.执行下述命令

    sudo apt-get update

    sudo apt-get upgrade

     

    8.添加stack用户

    sudo useradd -s /bin/bash -d /opt/stack -m stack

    为stack用户设定权限

    echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack

    切换到stack用户

    sudo su - stack

     

    10.下载DevStack Queens版本

    git clone https://github.com/openstack-dev/devstack -b stable/queens

     

    11.切换到devstack目录下

    cd devstack/

    修改配置文件

    vim local.conf

     

    写入如下内容:

    [[local|localrc]]

    # Define images to be automatically downloaded during the DevStack built process.
    DOWNLOAD_DEFAULT_IMAGES=False
    IMAGE_URLS="http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img" 

    # Use TryStack git mirror
    GIT_BASE=http://git.trystack.cn
    NOVNC_REPO=http://git.trystack.cn/kanaka/noVNC.git
    SPICE_REPO=http://git.trystack.cn/git/spice/spice-html5.git

    # Credentials
    DATABASE_PASSWORD=123456
    ADMIN_PASSWORD=123456
    SERVICE_PASSWORD=123456
    SERVICE_TOKEN=123456
    RABBIT_PASSWORD=123456

    # FLAT_INTERFACE=enp0s3
    # HOST_IP=49.140.11.221

    # Enable Logging
    DEST=/opt/stack
    LOGFILE=$DEST/logs/stack.sh.log
    VERBOSE=True
    LOG_COLOR=True
    SCREEN_LOGDIR=$DEST/logs

     

     

    注:配置文件内容为默认下载cirros-0.3.4镜像、git源设为国内、设置相关的密码、设置日志存储的路径。(HOST_IP为虚拟机ip,默认与安装时的主机ip一致)。

     

    12.切换至files目录下,执行以下命令

    cd files/

    wget -c https://github.com/coreos/etcd/releases/download/v3.1.10/etcd-v3.1.10-linux-amd64.tar.gz
    wget -c https://github.com/coreos/etcd/releases/download/v3.1.7/etcd-v3.1.7-linux-amd64.tar.gz

    一次下载不成功就多次执行上面的命令,直到成功为止。

     

    13.切回devstack目录,授权(之前执行这些操作会在安装时提示用户权限问题报错推出,所以最后再进行一次授权操作)

    cd ..

    echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack

    sudo chown -R stack:stack /opt/stack/devstack

    sudo chmod 777 /opt/stack -R

     

    14.执行./stack.sh开始安装

    如果中间因为超时等原因安装失败,可以先查看界面反馈的错误信息或者在/opt/stack/logs路径下查看stack.sh.log文件获取详细信息。然后执行./unstack.sh反安装,并再次运行./stack.sh直至成功为止。

    (在本人的环境下实测完全按照上述步骤安装不会出现其它问题,如果遇到用户权限的问题便在运行./stack.sh之前在执行13中的授权命令即可)

     

    安装完成后可在浏览器中输入反馈的ip地址登录到Dashboard确认安装时否成功,各功能是否正确运行。

      

      

     

  • 相关阅读:
    ElasticSearch6.5.0【Java客户端之TransportClient】
    ElasticSearch6.5.0 【安装IK分词器】
    ElasticSearch6.5.0 【字段类型】
    不能说的秘密
    渔已经给你们了 剩下的鱼靠你们自己来
    Xshell使用笔记
    Potplayer使用教程
    爱真的需要勇气
    中文字体练习好看的手写字
    一些学习方法
  • 原文地址:https://www.cnblogs.com/zimsky/p/9108773.html
Copyright © 2011-2022 走看看