实验目的

(1)掌握Linux虚拟机的安装方法;

(2)掌握OpenStack的单机安装方法;

(3)熟悉OpenStack的核心组件。

实验环境

Windows10 20H2/VirtualBox 6.1.18 r142142/Ubuntu 18.04 LTS/OpenStack W

实验内容与完成情况

1、下载安装虚拟机软件VirtualBox

ubuntu安装openstack源 ubuntu部署openstack_ubuntu安装openstack源

2、安装Ubuntu 18.04 LTS虚拟机

ubuntu安装openstack源 ubuntu部署openstack_虚拟机_02

ubuntu安装openstack源 ubuntu部署openstack_云计算_03

ubuntu安装openstack源 ubuntu部署openstack_openstack_04

 安装VirtualBox的增强功能,开启了双向文件拖放与剪贴板同步

ubuntu安装openstack源 ubuntu部署openstack_ubuntu_05

3、apt换源

首先对Ubuntu系统自带的apt软件源进行备份,执行

sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

ubuntu安装openstack源 ubuntu部署openstack_openstack_06

备份完成后,执行

sudo gedit /etc/apt/sources.list

以打开文本编辑器

ubuntu安装openstack源 ubuntu部署openstack_ubuntu_07

粘贴镜像站地址(中科大源)

参考:Ubuntu 源使用帮助 — USTC Mirror Help 文档

ubuntu安装openstack源 ubuntu部署openstack_ubuntu安装openstack源_08

4、测试换源结果并更新Ubuntu环境

执行

sudo apt update

ubuntu安装openstack源 ubuntu部署openstack_ubuntu安装openstack源_09

更新apt,执行

sudo apt upgrade

ubuntu安装openstack源 ubuntu部署openstack_ubuntu安装openstack源_10

 更新软件包,执行

sudo apt-get update

ubuntu安装openstack源 ubuntu部署openstack_云计算_11

5、安装python-pip

ubuntu安装openstack源 ubuntu部署openstack_虚拟机_12

在当前用户的/home目录下创建/.pip文件夹,执行

mkdir ~/.pip

使用vim创建并编辑pip的配置文件,执行

vim ~/.pip/pip.conf

ubuntu安装openstack源 ubuntu部署openstack_openstack_13

安装文本编辑器vim,执行

sudo apt-get install vim

ubuntu安装openstack源 ubuntu部署openstack_ubuntu安装openstack源_14

再次执行

vim ~/.pip/pip.conf

添加对应的pip源(中科大源)

参考:PyPI 镜像源使用帮助 — USTC Mirror Help 文档

ubuntu安装openstack源 ubuntu部署openstack_ubuntu_15

执行

sudo pip install --upgrade pip

ubuntu安装openstack源 ubuntu部署openstack_ubuntu安装openstack源_16

 提示无权限,查找资料,原因为中科大源没有该链接,更换为豆瓣源

ubuntu安装openstack源 ubuntu部署openstack_云计算_17

ubuntu安装openstack源 ubuntu部署openstack_云计算_18

6、安装git

通过apt安装,执行

sudo apt-get install git

ubuntu安装openstack源 ubuntu部署openstack_ubuntu安装openstack源_19

7、设置时间同步

执行

sudo apt-get install ntpdate

安装NTP同步工具

ubuntu安装openstack源 ubuntu部署openstack_ubuntu_20

 执行

sudo ntpdate cn.pool.ntp.org

向NTP服务器请求同步系统时间

ubuntu安装openstack源 ubuntu部署openstack_openstack_21

执行

date

查看当前系统时间

ubuntu安装openstack源 ubuntu部署openstack_虚拟机_22

8、下载devstack

执行

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

对Github的存储库进行克隆

ubuntu安装openstack源 ubuntu部署openstack_虚拟机_23

failed,经检查发现是与GitHub的连接遇到问题,修改github.com为反向代理的镜像站hub.fastgit.org

执行

git clone https://hub.fastgit.org/openstack-dev/devstack

ubuntu安装openstack源 ubuntu部署openstack_虚拟机_24

9、创建stack用户

执行

sudo devstack/tools/create-stack-user.sh

ubuntu安装openstack源 ubuntu部署openstack_ubuntu_25

 出错,依据提示修改stackrc文件中的HOST_IP变量为127.0.0.1

ubuntu安装openstack源 ubuntu部署openstack_虚拟机_26

ubuntu安装openstack源 ubuntu部署openstack_ubuntu_27

再次执行

sudo devstack/tools/create-stack-user.sh

ubuntu安装openstack源 ubuntu部署openstack_ubuntu安装openstack源_28

使用文本编辑器gedit打开用户配置文件,执行

sudo gedit /etc/sudoers

root ALL=(ALL:ALL) ALL

后添加

stack ALL=(ALL)NOPASSWD:ALL

并保存

ubuntu安装openstack源 ubuntu部署openstack_openstack_29

10、移动devstack目录到/opt/stack下,并设置权限

执行

sudo mv devstack /opt/stack

执行

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

ubuntu安装openstack源 ubuntu部署openstack_虚拟机_30

11、切换到stack用户

执行

sudo su - stack

ubuntu安装openstack源 ubuntu部署openstack_openstack_31

12、创建local.conf配置文件

执行

sudo ifconfig

ubuntu安装openstack源 ubuntu部署openstack_云计算_32

经查询资料,需安装net-tools软件包才可以使用ifconfig命令

使用apt安装,执行

sudo apt install net-tools

ubuntu安装openstack源 ubuntu部署openstack_openstack_33

 重新执行

sudo ifconfig

查询本机的IP地址

ubuntu安装openstack源 ubuntu部署openstack_ubuntu_34

选择使用本地环回(loopback)地址127.0.0.1

使用文本编辑器gedit打开本地配置文件,执行

sudo gedit local.conf

并粘贴配置内容,保存

ubuntu安装openstack源 ubuntu部署openstack_云计算_35

13、运行./stack.sh

执行

./stack.sh

ubuntu安装openstack源 ubuntu部署openstack_ubuntu_36

需切换到devstack所在的目录

执行

cd /opt/stack/devstack

ubuntu安装openstack源 ubuntu部署openstack_openstack_37

再次执行

./stack.sh

ubuntu安装openstack源 ubuntu部署openstack_ubuntu安装openstack源_38

观察发现是clone时出现问题,局域网内Windows主机开启代理服务器,允许局域网连接

配置git的http代理

执行

git config http.proxy http://192.168.183.88:10809

配置Ubuntu系统的代理如下

ubuntu安装openstack源 ubuntu部署openstack_ubuntu_39

再次执行

./stack.sh

 

ubuntu安装openstack源 ubuntu部署openstack_ubuntu_40

经检查是使用的pip源内没有setuptools软件包

修改pip源为清华源,再次执行

./stack.sh

ubuntu安装openstack源 ubuntu部署openstack_云计算_41

经检查为cannot uninstall 'simplejson’错误

执行命令

sudo pip install simplejson --ignore-installed simplejson

再次执行

./stack.sh

ubuntu安装openstack源 ubuntu部署openstack_ubuntu_42

可以看到,安装已经完成,显示出了DashBoard的IP地址和用户名密码

为使宿主计算机能够访问DashBoard,设置VirtualBox软件的端口转发

ubuntu安装openstack源 ubuntu部署openstack_云计算_43

将虚拟机内的80端口映射到宿主计算机的80端口

该设置保存后立即生效

在宿主计算机中打开DashBoard面板如下

ubuntu安装openstack源 ubuntu部署openstack_ubuntu安装openstack源_44

使用用户名密码(admin/admin或demo/admin)登录如下

ubuntu安装openstack源 ubuntu部署openstack_ubuntu安装openstack源_45

14、创建实例

打开项目/计算/实例,新建一个实例

ubuntu安装openstack源 ubuntu部署openstack_openstack_46

 运行实例

ubuntu安装openstack源 ubuntu部署openstack_虚拟机_47

15、其他

查看安装的OpenStack版本

通过查看OpenStack的Nova组件的版本来间接查询安装的OpenStack版本

执行

nova-manage version

ubuntu安装openstack源 ubuntu部署openstack_云计算_48

打开OpenStack发布网站

https://releases.openstack.org/teams/nova.html

如下所示

ubuntu安装openstack源 ubuntu部署openstack_openstack_49

可知安装的版本是OpenStack-W(Wallaby)版本

查看devstack的项目页面https://github.com/openstack/devstack

可知,devstack总是同步OpenStack的主干版本,目前OpenStack的主干版本即为Wallaby版。

ubuntu安装openstack源 ubuntu部署openstack_ubuntu_50

出现的问题与解决方案

1、在安装Ubuntu时由于分辨率原因不能选择安装的分区

解决方案:不要选择自定义安装(其它选项),要选择清除整个磁盘并安装Ubuntu。

ubuntu安装openstack源 ubuntu部署openstack_虚拟机_51

2、安装Ubuntu时启动会出现短暂黑屏

解决方案:等待即可,不要直接结束,可能会导致Fatal错误,此时只能重装虚拟机。

3、使用中科大源遇到问题

解决方案:手动查看镜像站,发现自动跳转到北京外国语大学镜像站,而该镜像站显示地址不存在,因此,需要进行换源,例如清华源、豆瓣源。

4、找不到setuptools软件包

解决方案:使用其它pip源,最终测试使用清华源完成了安装。

5、clone时出现问题

解决方案:将git设置代理,如果是能够手动输入clone地址的步骤,可考虑使用GitHub加速站,如hug.fastgit.org等

6、虚拟机资源耗尽,出现无响应现象

解决方案:强制结束虚拟机,进入VirtualBox安装目录(默认为C:\Program Files\Oracle\VirtualBox)下,打开命令行窗口,执行.\VBoxManage.exe  modifyhd "vdi文件路径" –resize命令以扩充虚拟机磁盘容量。

7、使用自带脚本create-stack-user.sh创建stack用户失败,提示“HOST_IP”未设置

解决方案:在报错的对应脚本前强制指定使用的HOST_IP。观察发现,即使在local.conf文件中设置了“HOST_IP”变量,但执行时依旧报错,具体原因未知。

8、出现cannot uninstall 'simplejson’错误

解决方案:执行命令sudo pip install simplejson --ignore-installed simplejson,应该是自带的simplejson与待安装的simplejson出现冲突,忽略自带版本即可。

9、尝试在Windows 10自带的Windows Subsystem for Linux(WSL)中安装OpenStack时遇到错误

ubuntu安装openstack源 ubuntu部署openstack_云计算_52

该问题来自于WSL中没有ebtables模块,是WSL2的自身缺陷,故安装无法继续进行

实验总结

        通过本次OpenStack的安装实验,我进一步熟悉了虚拟机的安装与Linux的重要发行版——Ubuntu的基本使用,在运行安装脚本的过程中尽管遇到了不少问题,但通过查询资料、查看错误日志、与同学交流等方式最终得以顺利解决,成功安装OpenStack。

        安装的过程需要对Linux的操作比较熟悉,例如shell语言或设置代理等操作,我在安装的过程中也遇到了许多其他人遇到过或没遇到过的问题与错误,在解决错误的过程中也学习到了许多以前没有接触过的知识,在与其他人交流或帮助查找错误的过程中也发现了许多自己安装中没有出现的其它问题。

        由于客观条件的限制,安装过程中遇到的最多问题依然是与网络相关的,对于这些问题,可以通过加载代理的方式解决,这也是能够顺利完成OpenStack安装的重要条件。