OpenStack的简单部署

一、OpenStack概述

OpenStack是由Rackspace和NASA共同研发的云计算平台,是一个旨在为公共及私有云的建设与管理提供软件的开源项目(它是一个云平台管理的项目,而不是一个软件)。其通过仪表盘为管理员提供计算、存储和网络资源的管理控制,同时通过Web界面为用户提供资源。这个项目由几个主要的组件组合起来完成一些具体的工作。

核心组件及如下图所示:

在这里插入图片描述在这里插入图片描述在这里插入图片描述

详细说明如下:

1、计算(Compute): Nova。一套控制器,用于为单个用户或使用群组管理虚拟机实例的整个生命周期,根据用户需求来提供虚拟服务。负责虚拟机创建、开机、关机、挂起、暂停、调整、迁移、重启、销毁等操作,配置CPU、内存等信息规格。自Austin版本集成到项目中。
2、对象存储(Object Storage): Swift。一套用于在大规模可扩展系统中通过内置冗余及高容错机制实现对象存储的系统,允许进行存储或者检索文件。可为Glance提供镜像存储,为Cinder提供卷备份服务。自Austin版本集成到项目中。
3、镜像服务(Image Service): Glance。一套虚拟机镜像查找及检索系统,支持多种虚拟机镜像格式(AKI、AMI、ARI、ISO、QCOW2、Raw、VDI、VHD、VMDK),有创建上传镜像、删除镜像、编辑镜像基本信息的功能。自Bexar版本集成到项目中。
4、身份服务(Identity Service): Keystone。为OpenStack其他服务提供身份验证、服务规则和服务令牌的功能,管理Domains、Projects、Users、Groups、Roles。自Essex版本集成到项目中。
5、网络&地址管理(Network): Neutron。提供云计算的网络虚拟化技术,为OpenStack其他服务提供网络连接服务。为用户提供接口,可以定义Network、Subnet、Router,配置DHCP、DNS、负载均衡、L3服务,网络支持GRE、VLAN。插件架构支持许多主流的网络厂家和技术,如OpenvSwitch。自Folsom版本集成到项目中。
6、块存储 (Block Storage): Cinder。为运行实例提供稳定的数据块存储服务,它的插件驱动架构有利于块设备的创建和管理,如创建卷、删除卷,在实例上挂载和卸载卷。自Folsom版本集成到项目中。
7、UI 界面 (Dashboard): Horizon。OpenStack中各种服务的Web管理门户,用于简化用户对服务的操作,例如:启动实例、分配IP地址、配置访问控制等。自Essex版本集成到项目中。
其它:Ceilometer(计量)、Heat(部署编排)、Trove(数据库)

在这里插入图片描述

该图展示了各组件的作用以及各组件之间的关系,也是OpenStack各个服务之间APT调用的概览,其中实线表示客户端的API调周用,虚线表示各个组件之间通过rpc进行通信。

在这里插入图片描述

认证组件与其它组件都有交互,主要是为他们提供身份验证服务。计算组件Nova与其他几个服务也有一些接口:它使用Keystone来执行身份验证,使用界面展示服务Horizon作为其管理接口,并用Glance提供其镜像。

其余的理论内容暂不展开赘述.

参考:

中国大学MOOC 河海大学-云计算技术与应用

OpenStack官方文档

二、环境准备

  1. VMware17虚拟机环境 https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html

  2. Centos7.9镜像 https://mirror.tuna.tsinghua.edu.cn/centos/7.9.2009/isos/x86_64/

  3. Xshell7&Xftp7远程连接工具 https://www.xshell.com/zh/free-for-home-school/

  4. 开启虚拟化功能的Windows 10,查看方式如下

在这里插入图片描述

其实大部分人是不需要管这一步骤的,因为大部分电脑都是已经启用了的,但是很多blog文章提到了,那么我也在这弄一个参考.如果未启用的可百度一下如何启用.

然后新建一台虚拟机,最小化安装就行。至于配置嘛,根据看自己电脑情况来,我这里是2核2线程,然后分配了8G的运行内存,50G的内存。

在这里插入图片描述

记得把Intel VT-x/EPT和AMD-V/RVI(V) 虚拟化引擎勾选上,如果报错再取消勾选.

关于 VMware的虚拟化引擎 Intel VT-x/EPT和AMD-V/RVI(V) 也简单记录一下:

  • Intel VT-X技术实现的功能是减少虚拟机运行时虚拟机和物理机得到双重系统调用所产生的高Context Switch。也就是说,虚拟机的进程在要先从虚拟机ring3转到ring0,再从物理机的ring3转到ring0,性能有很大损失,而Intel VT-X就是为了解决这一问题而产生的技术。
  • Intel RPT技术则是为了解决虚拟机的虚拟内存映射问题。虚拟机的虚拟内存要映射到虚拟机的物理内存上面,而虚拟机的物理内存相当于物理机的虚拟内存,物理机的虚拟内存也是要映射到物理机的物理内存上面的,所以这双重转换会造成很大的资源消耗,RPT技术就是减小这个消耗的。
  • AMD实现的功能和Intel的功能类似

关于vmware的详细使用配置:https://www.gaojipro.com/a/18085

关于虚拟化引擎的选项: http://t.zoukankan.com/zknublx-p-9156560.html

三、搭建流程

1. 安装虚拟机

CentOS7 使用最小化安装,也就是使用待有Minimal字样的镜像文件,安装界面先更改网卡名称

在这里插入图片描述

 net.ifnames=0 biosdevname=0

输入上面内容后再回车,目的是将网卡名称改为Eth0,记得和quiet之间有空格.

安装前开启网络并且选择最小安装:

在这里插入图片描述

安装完成之后打开虚拟机


2. 配置网路

查看VMware网络配置
在这里插入图片描述

设置静态ip

vi /etc/sysconfig/network-scripts/ifcfg-eth0  # 打开网卡配置文件
# 修改
BOOTPROTO="static"	     #设为静态IP
ONBOOT="yes"			 #设置开机自启动

# 添加
IPADDR="192.168.153.130" #子网IP,建议和开机时也就是ip addr看到的设置相同
GATEWAY="192.168.153.2"  #默认网关,一定和vmware的网关ip一样,见上图
NETMASK="255.255.255.0"  #子网掩码,自己设置和虚拟机NAT网卡的子网掩码一样
DNS1="223.6.6.6"		 #阿里云DNS
DNS2="114.114.114.114"   #腾讯114
DNS3="1.2.4.8"           #中国互联网络中心

如下图所示:

在这里插入图片描述

重启网络

service network restart 	 #重启网卡
systemctl restart network    # 重启网络服务

可以用以下命令查看是否配置正确

ping www.baidu.com -c 3
3. 修改主机名
hostnamectl set-hostname openstack.alione.local && exec bash
4. 配置hosts解析
vi /etc/hosts # 打卡配置文件

添加以下内容

192.168.153.130 openstack openstack.alione.local

在这里插入图片描述

5. 配置本机免密连接

生成密钥

ssh-keygen -t rsa  # 回车四次

对本机进行免密

ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.153.130
6. 关闭防火墙、selinux策略以及NetworkManager
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config; 
setenforce 0; 
systemctl stop firewalld; 
systemctl disable firewalld;
systemctl stop NetworkManager; 
systemctl disable NetworkManager
7. 修改yun源

1.下载阿里源
方法一: curl下载(此处若下载失败可以先重启并检查第二步网络配置后重试)

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

如果这里失败的话可以尝试下面的方法
方法二:wget下载

yum install -y wget # 安装wget下载器
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

2.清空并加载缓存yum源

yum clean all && yum makecache

阿里源 https://developer.aliyun.com/mirror/centos

8. 安装基本工具
yum install -y bash-completion vim telnet bridge-utils yum-utils && bash
9. 系统升级
yum -y update

reboot

如需删除多余内核

yum remove $(rpm -qa | grep kernel | grep -v $(uname -r)) -y 
10. 安装OpenStack的yum仓库
yum install centos-release-openstack-train -y

如需查看可安装版本

yum list | grep openstack*
11. 修改openstack仓库repo文件

因为对网络需求大,当出现网络波动时会导致报错,最好修改为国内源进行部署

cd /etc/yum.repos.d # 切换目录
cp CentOS-OpenStack-train.repo{,.bak} #备份配置
vim CentOS-OpenStack-train.repo # 打开配置文件

更改按照以下内容进行更改

在这里插入图片描述

baseurl=http://mirrors.aliyun.com/$contentdir/$releasever/cloud/$basearch/openstack-train/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=cloud-openstack-train

重建yum缓存

yum clean all && yum makecache
12. 安装packstack工具
cd ~ # 先回到根目录
yum install -y openstack-packstack

再次确认以下内容:

ping www.baidu.com -c3 
hostname
cat /etc/hosts
getenforce
systemctl status firewalld.service
systemctl status NetworkManager

全部正确如下所示:
在这里插入图片描述

13. 在线部署
packstack --allinone

可新建一个终端查看安装过程信息

tail -f /var/log/messages

此处时间可能比较长,出现 [ \ ] 就等一会儿看,出现错误就解决错误 (建议重装虚拟机吧),安装错误解决可以参考后文(实际上可能没什么实质性帮助)

出现类似下面这个就说明安装成功了

在这里插入图片描述

四、OpenStack的简单使用

这里就强调"简单"二字!

1. 查看用户信息并登陆
cat ~/keystonerc_admin

在这里插入图片描述

打开浏览器访问:
在这里插入图片描述

登入后内容如下:
在这里插入图片描述

2. 向OpenStack上传镜像

在原本的openstack中只有一个镜像

在这里插入图片描述

首先将任意一个镜像上传至虚拟机(上传方法很多很多,可以使用scp命令也可以用Xftp,我这里将CentOS-7-x86_64-Minimal-2207-02.iso上传至虚拟机

在这里插入图片描述

在这里插入图片描述

可以看到已经在虚拟机中了。然后我们使用如下指令将其上传到open stack当中

openstack image create "CentOS7" --file CentOS-7-x86_64-Minimal-2207-02.iso --disk-format qcow2 --container-format bare --public

重新刷新网页查看刚刚上传的镜像

在这里插入图片描述


五、一些安装错误

希望你不需要看这些内容

1. ERROR : Failed to run remote script, stdout:

报错信息如下:

Pre installing Puppet and discovering hosts' details[ ERROR ]
ERROR : Failed to run remote script, stdout: 
stderr: Warning: Permanently added '192.168.242.134' (ECDSA) to the list of known hosts.
+ trap t ERR
+ facter -p
facter: error while loading shared libraries: leatherman_curl.so.1.3.0: cannot open shared object file: No such file or directory

根据提示看了一下日志:/var/tmp/packstack/20221210-215006-NfsKcI/openstack-setup.log .

发现错误:leatherman rpm 包版本问题,已经安装版本是1.10.0-1而facter需要1.3.0

回退leatherman版本

yum downgrade leather

问题解决。

解决参考:Packstack安装OpenStack问题:facter: error while loading shared libraries: leatherman_curl.so.1.3.0

2. ERROR : Error appeared during Puppet run: 192.168.242.134_controller.pp
Error: Execution of '/usr/bin/yum -d 0 -e 0 -y install openstack-keystone' returned 1: Error: Package: python2-qpid-proton-0.26.0-2.el7.x86_64 (centos-openstack-train)
You will find full trace in log /var/tmp/packstack/20221210-220027-RbWWFw/manifests/192.168.242.134_controller.pp.log
Please check log file /var/tmp/packstack/20221210-220027-RbWWFw/openstack-setup.log for more information
Additional information:
 * Parameter CONFIG_NEUTRON_L2_AGENT: You have chosen OVN Neutron backend. Note that this backend does not support the VPNaaS or FWaaS services. Geneve will be used as the encapsulation method for tenant networks
 * A new answerfile was created in: /root/packstack-answers-20221210-220027.txt
 * Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem for some OpenStack components.

如果不出问题就出问题了,

解决参考:

【云计算】CentOS7 上配置Openstack(单机)bug记录

yum -y install PackageKit-backend
yum -y install yum-utils
yum -y install qpid-proton-c-0.26.0-2.el7.x86_64
yum -y install openstack-keystone
3. Error: (pymysql.err.OperationalError) (1045, u"Access denied for user ‘nova’@‘192.168.242.134’ (using password: YES)")
92.168.242.134_controller.pp:                    [ ERROR ]              
Applying Puppet manifests                         [ ERROR ]

ERROR : Error appeared during Puppet run: 192.168.242.134_controller.pp
Notice: /Stage[main]/Nova::Db::Sync/Exec[nova-db-sync]/returns: 
#########################这是主要报错,无法解决
Error: (pymysql.err.OperationalError) (1045, u"Access denied for user 'nova'@'192.168.242.134' (using password: YES)") (Background on this error at: http://sqlalche.me/e/e3q8)
#############################
You will find full trace in log /var/tmp/packstack/20221210-223929-ulhpTJ/manifests/192.168.242.134_controller.pp.log
Please check log file /var/tmp/packstack/20221210-223929-ulhpTJ/openstack-setup.log for more information
Additional information:
 * Parameter CONFIG_NEUTRON_L2_AGENT: You have chosen OVN Neutron backend. Note that this backend does not support the VPNaaS or FWaaS services. Geneve will be used as the encapsulation method for tenant networks

在这里插入图片描述

解决:根据信息提示 Access denied for user ‘nova’@‘hostname’ (using password: YES) 查看数据库用户信息,发现并不能登陆 openstack。此问题一直未得到解决,可以尝试删除虚拟机之后重新安装!

尝试了以下的方法:

在这里插入图片描述

仍然报了相同的错误!

我在Stack Overflow上也发现了类似的问题:https://stackoverflow.com/questions/66904344/openstack-installation-error-with-nova-and-authentification

and thishttps://serverfault.com/questions/894327/how-to-install-rdo-openstack-in-hetzner

OpenStack搭建报错1045

1045-Access denied for user ‘‘@‘‘ (using password: YES)错误处理

4. Error: Systemd start for httpd failed!

出现该问题一般有两个原因: 1是端口号被占用了,2是僵尸进程

解决方法1:

ps -aux | grep http# 查看端口号,第二行数字就是进程pid号
# kill -pid号 即可杀掉进程 如 Kill -9  
# 杀完之后 重启reboot 再ps –aux | grep http 确保httpd进程被杀掉

解决方法2:

yum -y remove httpd mod_wsgi  #先卸载httpd服务
yum -y install httpd mod_wsgi #再重新安装
service httpd restart 		  #重启服务
systemctl start httpd.service # 重启服务

参考解决:

openstack部署中systemctl start httpd失败解决方法

OpenStack常见错误:无法开启http服务

OpenStack Train 安装过程记录

5. 打开浏览器之后提示:Forbidden You don’t have permission to access /dashboard on this server.
没有安装成功,请重新安装
6. Missing value auth-url required for auth plugin password

第一步:登录到openstack,找到右上角admin

第二步:下载admin-openrc.sh

第三步:将这个文件拖到openstack开发环境中,source它。输入密码就ok了。

参考: Missing value auth-url required for auth plugin password

7. The request you have made requires authentication. (HTTP 401)

参考:https://blog.csdn.net/qq_28513801/article/details/90263263

8. 其它问题

参考:

openstack中遇到的错误记录(记录中)

离线安装 Openstack 和问题记录

openstack报错汇总

来谈谈packstack工具部署OpenStack路上的一些坑

openstack部署及使用过程中遇到的问题汇总

去找找说不定有你的错误! 去找找说不定有你的错误!

9. 结尾

结尾彩蛋: 如何给命令行上个色? 👉 Xshell7 给 [root@Localhost:root] 上个颜色

PS1='\[\e[37;40m\][\[\e[37;40m\]\u\[\e[0m\]@\h \[\e[36;40m\]\w\[\e[37;40m\]]\\$\[\e[0m\]'

参考文章:

OpenStack rdo一键allinone部署

OpenStack部署(图文详解)

最全openstack部署教程

[openstack详细部署]

云平台技术学习笔记(二)

在centos7上使用packstack安装openstack

OpenStack-allinone单机部署-Bilibili

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐