单节点部署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 mirrors.aliyun/ubuntu/ xenial main restricted universe multiverse
deb mirrors.aliyun/ubuntu/ xenial-security main restricted universe multiverse
deb mirrors.aliyun/ubuntu/ xenial-updates main restricted universe multiverse
deb mirrors.aliyun/ubuntu/ xenial-backports main restricted universe multiverse
deb mirrors.aliyun/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src mirrors.aliyun/ubuntu/ xenial main restricted universe multiverse
deb-src mirrors.aliyun/ubuntu/ xenial-security main restricted universe multiverse
deb-src mirrors.aliyun/ubuntu/ xenial-updates main restricted universe multiverse
deb-src mirrors.aliyun/ubuntu/ xenial-backports main restricted universe multiverse
deb-src mirrors.aliyun/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 p.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 .f
将如下内容写⼊(修改为阿⾥源):
[global]
index-url = mirrors.aliyun/pypi/simple/
trusted-host = mirrors.aliyun
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 github/openstack-dev/devstack -b stable/queens
11.切换到devstack⽬录下
cd devstack/
修改配置⽂件
f
写⼊如下内容:
[[local|localrc]]
# Define images to be automatically downloaded during the DevStack built process. DOWNLOAD_DEFAULT_IMAGES=False
IMAGE_URLS="download.cirros-cloud/0.3.4/cirros-0.3.4-x86_64-disk.img" # Use TryStack git mirror
GIT_BASE=stack
NOVNC_REPO=stack/kanaka/noVNC.git
SPICE_REPO=stack/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 github/coreos/etcd/releases/download/v3.1.10/etcd-v3.1.
wget -c github/coreos/etcd/releases/download/v3.1.7/etcd-v3.1.
⼀次下载不成功就多次执⾏上⾯的命令,直到成功为⽌。
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确认安装时否成功,各功能是否正确运⾏。