单节点部署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确认安装时否成功,各功能是否正确运行。

  

  

 

原文地址:https://www.cnblogs.com/zimsky/p/9108773.html