当前位置:   article > 正文

2024广东省职业技能大赛云计算赛项实战——OpenStack搭建_openstack云计算比赛

openstack云计算比赛

OpenStack搭建

前言

搭建采用双节点安装,即controller控制节点和compute计算节点。
CentOS7 系统选择 2009 版本:CentOS-7-x86_64-DVD-2009.iso
可从阿里镜像站下载:https://mirrors.aliyun.com/centos/7/isos/x86_64/

OpenStack使用竞赛培训平台提供的镜像包。
备赛时经常浏览别人做样卷的文章,看到很多人都在求这个,但其实这玩意儿是可以搞出来的,不过估计就我一个人想到了搞出来的方法。而且这玩意儿好像是有版权保护的,我也只能自己用了。你们可以通过在这个网站申请环境进行操作https://ncc.douxuedu.com/

使用到的工具/软件:

  • VMware Workstation Pro
  • SecureCRPT、SecureFX(其他远程连接软件也可以,看个人喜好)

节点规划如下

主机名IP/24内存/处理器数量/磁盘节点
controller192.168.100.106GB/4/40GB控制节点
compute192.168.100.204GB/4/40GB+20GB计算节点

操作过程

虚拟机的创建与安装

如果是在网站中申请资源,这一步都不需要做

创建虚拟机

使用Vmware软件,在上方导航栏【文件】处选择【新建虚拟机】或者在主页点击【创建新的虚拟机】

在这里插入图片描述
在这里插入图片描述
在【新建虚拟机向导】框中,选择【自定义安装】然后【下一步】
在这里插入图片描述
虚拟机兼容性界面,默认下一步
在这里插入图片描述

虚拟机操作系统界面,选择【稍后安装操作系统】
在这里插入图片描述
注:Vmware从14版本开始,在这一步安装操作系统若先指定镜像文件,下一步就会变成下图这个步骤,要你创建一个用户,我们并不需要多余的用户,只需要root用户即可,所以这里先不指定镜像文件。
在这里插入图片描述
⬆指定镜像文件后
操作系统选择【Linux】,版本选择【CentOS 7 64 位】
在这里插入图片描述
在【命名虚拟机】步骤中,设置【虚拟机名称】为【controller】,【位置】无所谓选择一个空间足够且你记得住的位置
在这里插入图片描述

在【处理器配置】中,根据个人电脑的配置,数量不小于4个即可
在这里插入图片描述
在【虚拟机内存】界面中,设置虚拟机的内存,根据个人电脑配置,不小于4G即可
在这里插入图片描述
在【网络类型】界面,选择【仅主机模式】
在这里插入图片描述
【选择I/O控制器类型】和【选择磁盘类型】界面,使用推荐配置,默认下一步

【选择磁盘】界面,选择【创建新虚拟磁盘】
在这里插入图片描述
【指定磁盘容量】界面,设置【最大磁盘大小】为40G,你要更多也可以
在这里插入图片描述
【指定磁盘文件】界面,默认下一步

在最后的界面,我们选择【自定义硬件】
在这里插入图片描述
在弹出的选项卡中,我们选择光盘映像,指定ISO镜像文件
在这里插入图片描述
可以将不需要的硬件移除,减少资源占用(USB、声卡、打印机)
在这里插入图片描述
点击下方添加按钮,添加一张网卡,设置为NAT模式
在这里插入图片描述
在这里插入图片描述
然后我们关闭选项卡,点击完成,这样虚拟机就创建好了
在这里插入图片描述

安装虚拟机

我们开启虚拟机,在启动界面通过方向上下键和回车选择【install Centos 7】,这样能更快的安装
在这里插入图片描述

等待一段时间后,会进入安装向导界面
在选择语言界面,我们拉至最底下,选择中文
在这里插入图片描述
在安装信息摘要界面,【软件选择】选择【最小安装】
在这里插入图片描述
【安装位置】选择【我要配置分区】
在这里插入图片描述
选择【点这里自动创建他们】
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

【KDUMP】禁用kdump
在这里插入图片描述
【网络和主机名】配置ens32网卡
在这里插入图片描述
在【常规】处勾选【可用时自动链接到这个网络】
在这里插入图片描述
在【IPv4设置】栏,选择【方法】为【手动】,点击【Add】添加IP地址,保存退出
在这里插入图片描述
配置ens33网卡,只需要在【常规】处勾选【可用时自动链接到这个网络】即可
在这里插入图片描述
设置完成之后,我们点击【开始安装】
在这里插入图片描述
在安装过程中,设置root用户的密码
在这里插入图片描述
为了避免记混,密码默认设置为000000
由于密码设置过于简单,需要按两下完成才可设置
在这里插入图片描述
然后等待安装完毕重启即可
在这里插入图片描述
然后我们以相同的步骤,安装计算节点compute虚拟机(克隆也行,不过要用完整克隆,并且还需要额外的操作),设置的区别在于:

  1. compute需要额外添加一块硬盘,作为cinder和swift还有manila的存储磁盘。
  2. 设置IP时,controller节点是192.168.100.10,compute节点是192.168.100.20

配置如下图
在这里插入图片描述
在这里插入图片描述

克隆机额外操作

如果你是使用克隆出的compute,那么你还需要进行以下操作
注:使用远程连接工具,方便操作
首先,UUID可能会影响到后续的步骤,我们使用uuid命令生成一个随机的uuid,并将其复制
在这里插入图片描述
我们进入ens32网卡配置文件,将UUID修改为生成的UUID,并修改IP地址为192.168.100.20
在这里插入图片描述
然后重启网络服务
在这里插入图片描述
如果你没有搭建云平台的经验,无法保证在后面的步骤中,能够不犯错误,那么我建议你在这开始保存快照,一步一个脚印,以便后面连自己都不知道哪里错了的情况可以从快照开始重来。

虚拟机基础配置

更改主机名

控制节点(192.168.100.10)改为controller
计算节点(192.168.100.20)改为compute

[root@localhost ~]# hostnamectl set-hostname controller
[root@localhost ~]# bash
[root@controller ~]#

[root@localhost ~]# hostnamectl set-hostname compute
[root@localhost ~]# bash
[root@compute ~]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
连接光盘映像文件

打开Vmware软件,右键控制节点(controller)的选项卡,保证【可移动设备】→【CD/DVD(IDE)】处于连接状态
在这里插入图片描述
如果是在网站上的环境,可以不用做,直接跳转到配置YUM源那步

上传云平台镜像

打开SecureCRT,在控制节点(controller)选项卡右键,选择【打开SecureFX】
在这里插入图片描述
进入SecureFX后,将提供的openstack平台镜像传入到root目录下(若无法拖入,可以复制文件后粘贴)
在这里插入图片描述
传输完成后,可在/root目录下查看到镜像文件

[root@controller ~]# ls
anaconda-ks.cfg  chinaskills_cloud_iaas_v2.0.3.iso
[root@controller ~]# 
  • 1
  • 2
  • 3

如果是在网站上的环境,那么直接从他们的源里拉取就行了
curl -O http://mirrors.douxuedu.com/competition/chinaskills_cloud_iaas_v2.0.3.iso

挂载镜像
#我们将镜像挂载,首先在opt目录下创建一个centos目录,用于存放centos镜像的软件包
[root@controller ~]# mkdir /opt/centos
#然后进行挂载,我们使用永久挂载的方式进行挂载,这样可以防止重启后挂载的内容丢失导致无法安装服务。
#先将centos镜像挂载到一个第三方空目录/mnt里
[root@controller ~]# mount -o loop /dev/sr0 /mnt/
#可用ls命令查看是否真的挂载成功
[root@controller ~]# ls /mnt/
CentOS_BuildTag  EULA  images    LiveOS    repodata              RPM-GPG-KEY-CentOS-Testing-7
EFI              GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL
#再把/mnt目录下的所有内容复制到我们真正要挂载的目录/opt/centos下
[root@controller ~]# cp -rvf /mnt/* /opt/centos/
#cp 复制命令,即copy的缩写
#-rvf为选项,r为递归复制,及该文件夹及包含的文件全部复制,
#拷贝文件夹时这个参数必须加上,否则报错。
#v为显示命令执行的操作,可省略。
#F为强制复制,无论目标文件或目录是否存在。
#*为通配符,代表多个所有字符,这里意义为mnt目录下的所有文件。
#命令执行完后,就可在/opt/centos目录下看见和/mnt/目录下一样的内容了,这些复制过来的东西在重启后也不会消失,所以我称其为永久挂载
[root@controller ~]# ls /opt/centos/
CentOS_BuildTag  EULA  images    LiveOS    repodata              RPM-GPG-KEY-CentOS-Testing-7
EFI              GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL
#mnt目录只是我们完成永久挂载的“工具人”,因此我们再把他取消挂载一下
#可用看到取消挂载后,/mnt又变成了空目录
[root@controller ~]# umount /mnt
[root@controller ~]# ls /mnt/
[root@controller ~]# 
#相同的操作,我们把openstack的镜像也用同样的方法进行永久挂载操作
#请出我们的工具人,将openstack镜像挂载过去
[root@controller ~]# mount -o loop chinaskills_cloud_iaas_v2.0.3.iso /mnt
mount: /dev/loop0 写保护,将以只读方式挂载
[root@controller ~]# ls /mnt/
iaas-repo  images
#将/mnt/目录下所有内容复制到/opt/目录下
[root@controller ~]# cp -rvf /mnt/* /opt
#最后取消挂载mnt目录,利用完他就不要了
[root@controller ~]# umount /mnt/
[root@controller ~]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
配置YUM源仓库

控制节点(controller)采用本地源的方式配置YUM源仓库,计算节点(compute)通过ftp服务使用控制节点(controller)的资源配置YUM源仓库。
当然计算节点(compute)也可以和控制节点(controller)一样都采用本地源的方式,步骤都是一样的,但这样比较费时,还更加占用空间。

如果是网站申请的环境,两个节点均使用他们的http源即可,路径分别是:
baseurl= http://mirrors.douxuedu.com/Centos7
baseurl=http://mirrors.douxuedu.com/iaas

控制节点(controller)
#首先删除系统源
[root@controller ~]# rm -rf /etc/yum.repos.d/*
#创建一个新的仓库文件
[root@controller ~]# vi /etc/yum.repos.d/local.repo 
[centos]
name=centos
baseurl=file:///opt/centos
enabled=1
gpgcheck=0
[iaas]
name=iaas
baseurl=file:///opt/iaas-repo
enabled=1
gpgcheck=0
#检查可用性,若可用包显示0,则为上面的文件配置写错了
[root@controller ~]# yum clean all && yum repolist
...
源标识                                       源名称                                       状态
centos                                       centos                                       4,070
iaas                                         iaas                                           954
repolist: 5,024
[root@controller ~]#
#配置好YUM源仓库后,我们就可以安装软件了
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
安装ftp服务
#在控制节点(controller)安装ftp服务,方便计算节点(compute)使用控制节点(controller)的资源
[root@controller ~]# yum -y install vsftpd
...
Complete!
#修改ftp服务的配置文件,共享/opt目录
[root@mycat ~]# echo "anon_root=/opt" >> /etc/vsftpd/vsftpd.conf   
#启动ftp服务并设置开机自启
[root@mycat ~]# systemctl start vsftpd && systemctl enable vsftpd
...
#关闭防火墙,并关闭开机自启,否则计算节点(compute)的ftp请求会被防火墙阻拦
[root@controller ~]# systemctl stop firewalld && systemctl disable firewalld
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
计算节点(compute)
#首先还是删除系统源
[root@compute ~]# rm -rf /etc/yum.repos.d/*
#创建一个新的仓库文件
[root@compute ~]# vi /etc/yum.repos.d/local.repo 
[centos]
name=centos
baseurl=ftp://192.168.100.10/centos
enabled=1
gpgcheck=0
[iaas]
name=iaas
baseurl=ftp://192.168.100.10/iaas-repo
enabled=1
gpgcheck=0
#检查可用性
[root@compute ~]# yum clean all && yum repolist
...
源标识                                       源名称                                       状态
centos                                       centos                                       4,070
iaas                                         iaas                                           954
repolist: 5,024
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
磁盘分区

计算节点(compute)需要给cinder、swift和manila服务各提供一块空白分区,总共需要三块,我们在创建虚拟机时就已经额外给计算节点(compute)添加了一块20G的硬盘,现在我们给计算节点(compute)分区
在这里插入图片描述
使用fdisk命令进行分区
在这里插入图片描述
输入n添加一个新分区,给cinder创建空白分区
在这里插入图片描述
在这里插入图片描述
分区类型为主分区p,默认回车即可
分区号默认回车即可
起始扇区也是默认回车
截至扇区看个人情况,如果你只装cinder和swift,20G的硬盘均分10G即可,那你就输入+10G
我还要装个manila,所以我这里设置+7G
在这里插入图片描述
重复刚刚的操作,给swift创建空白分区
在这里插入图片描述
在设置最后一块分区的时候,如果你还是输入+10G,就会超出分区的范围(硬盘实际大小并没有20G)
在这里插入图片描述
所以我们这里直接不输入,默认值就是最大值,回车即可
在这里插入图片描述
分好后,可以输入p打印分区表,查看分区的情况
在这里插入图片描述
在这里插入图片描述

确认无误后输入w,保存设置并退出即可
在这里插入图片描述
在这里插入图片描述
可以通过罗列块设备的命令查看分区情况
在这里插入图片描述
虽然这里显示了,但有时当我们创建或删除分区设备后,系统并不会立即生效,需要重启后才能生效
这个时候我们只需要输入partprobe命令
partprobe命令可以在不重启系统的情况下重新读加载分区表信息,使得新设备信息被同步
在这里插入图片描述
至此,该步骤完毕,可以拍摄一个快照。

平台搭建基础配置

安装openstack
#两个节点都安装
[root@controller ~]# yum -y install openstack-iaas
[root@compute ~]# yum -y install openstack-iaas
  • 1
  • 2
  • 3
编辑环境变量文件
#设置各个变量的参数,这些变量会用在之后的搭建脚本中。
[root@controller ~]# vi /etc/openstack/openrc.sh
#需要更改的段落如下
HOST_IP=192.168.100.10						
HOST_PASS=000000							
HOST_NAME=controller						
HOST_IP_NODE=192.168.100.20					
HOST_PASS_NODE=000000					
HOST_NAME_NODE=compute					
network_segment_IP=192.168.100.0/24			
RABBIT_USER=openstack						
RABBIT_PASS=000000							
DB_PASS=000000								
DOMAIN_NAME=demo						
ADMIN_PASS=000000							
DEMO_PASS=000000							
KEYSTONE_DBPASS=000000					
GLANCE_DBPASS=000000						
GLANCE_PASS=000000						
PLACEMENT_DBPASS=000000					
PLACEMENT_PASS=000000						
NOVA_DBPASS=000000						
NOVA_PASS=000000							
NEUTRON_DBPASS=000000					
NEUTRON_PASS=000000						
METADATA_SECRET=000000					
INTERFACE_NAME=ens33	#外网网卡名称		
Physical_NAME=provider						
minvlan=1									
maxvlan=1000								
CINDER_DBPASS=000000						
CINDER_PASS=000000							
BLOCK_DISK=sdb1 #第一个分区					
SWIFT_PASS=000000							
OBJECT_DISK=sdb2 #第二个分区				
STORAGE_LOCAL_NET_IP=192.168.100.20		
TROVE_DBPASS=000000						
TROVE_PASS=000000							
HEAT_DBPASS=000000						
HEAT_PASS=000000							
CEILOMETER_DBPASS=000000					
CEILOMETER_PASS=000000					
AODH_DBPASS=000000						
AODH_PASS=000000							
ZUN_DBPASS=000000							
ZUN_PASS=000000							
KURYR_PASS=000000							
OCTAVIA_DBPASS=000000						
OCTAVIA_PASS=000000						
MANILA_DBPASS=000000						
MANILA_PASS=000000						
SHARE_DISK=sdb3							
CLOUDKITTY_DBPASS=000000					
CLOUDKITTY_PASS=000000					
BARBICAN_DBPASS=000000					
BARBICAN_PASS=000000
SENLIN_DBPASS=000000
SENLIN_PASS=000000
#可以发现,涉及PASS密码的参数都是设置为000000,所以我们可以批量进行设置
#使用命令行模式,即:
#输入%s/PASS=/PASS=000000/g
#%s	表示替换字符							
#/	分隔符									
#PASS=	旧字符(要替换的字符)				
#PASS=000000	新字符(替换成为什么字符)	
#/g	表示全文替换							
#整个命令意思即为:查找文件中匹配PASS=条件的字符,将其全部改为PASS=000000
#然后我们再把那些空的补上
#最后,按文件最后的提示,在命令行模式下执行命令,删除每行前的注释符
################################################################
######在vi编辑器中执行:%s/^.\{1\}//  删除每行前1个字符(#号)#####
################################################################
#不过我个人喜欢用Ctrl+v进入块操作模式,然后按下G跳至行末,选中每行的第一个字符,最后按下gg删除
[root@controller ~]# scp /etc/openstack/openrc.sh 192.168.100.20:/etc/openstack/openrc.sh
...
Are you sure you want to continue connecting (yes/no)? yes
root@192.168.100.20's password: #输入控制节点的密码
openrc.sh                                                    100% 4964     2.5MB/s   00:00 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
执行初始化脚本
#这个脚本会对虚拟机进行一些基础配置,两个节点都要执行
#运行这些脚本的时候保证一个原则,就是让控制节点执行完毕后再去计算节点执行
[root@controller ~]# iaas-pre-host.sh 
[root@compute ~]# iaas-pre-host.sh 
#脚本执行完毕后会提示你重启系统,输入reboot命令重启即可
...
Please Reboot or Reconnect the terminal
#实际上Ctrl+D登出再回车重新登入也行
[root@controller ~]# reboot
[root@compute ~]# reboot
#重启之后,登录之后就会打印欢迎语了
 ################################
 #    Welcome  to  OpenStack    #
 ################################
[root@controller ~]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
初始化脚本解析

我就只讲解这个脚本的功能,其他的脚本大差不多,你可以自己去查看脚本的内容。实际上就是把手动搭的命令放到一个脚本里,一些可能不同的配置项就用变量替代,而这个变量我们在前面就已经设置好了值,每个脚本开始前都会生效那个变量文件。

#/bin/bash
source /etc/openstack/openrc.sh
  • 1
  • 2

生效环境变量

#Welcome page
cat > /etc/motd <<EOF 
 ################################
 #    Welcome  to  OpenStack    #
 ################################
EOF
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

整个段落所做的事:在用户登录后弹出欢迎界面
/etc/motd这个文件是在你登录系统后显示的,不管你是直接登录还是远程登录,都将显示这个文件里的信息
故而这段脚本功能是每次登录都打印欢迎界面

#selinux
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
  • 1
  • 2
  • 3

第一句为设置Selinux为Disable(关闭模式)
由于修改配置文件后需要重启才能生效,所以第二句功能为临时关闭Selinux

#firewalld
systemctl stop firewalld
systemctl disable firewalld  >> /dev/null 2>&1
  • 1
  • 2
  • 3

整个段落所做的事:将防火墙关闭并禁用开机自启
关于>> /dev/null 2>&1的解释:

  1. /dev/null 是说将命令的返回结果(输出)追加到/dev/null文件中

    而/dev/null文件是Linux的空文件设备,所有往这个文件里面写入的内容都会丢失,正因如此,它还有"黑洞"的俗称

  2. 2>&1 2指的是错误输出,1指的是标准输出,>为重定向,&为绑定

    意思即为将错误输出和标准输出绑定输出到同一个文件中,而这个文件是/dev/null的话,就找不着了

    所以整句>> /dev/null 2>&1 的功能就是让命令的返回结果(无论正确还是报错)不显示在屏幕上

#NetworkManager
systemctl stop NetworkManager >> /dev/null 2>&1
systemctl disable NetworkManager >> /dev/null 2>&1
yum remove -y NetworkManager firewalld
systemctl restart network
  • 1
  • 2
  • 3
  • 4
  • 5

整个段落所做的事:将NetworkManager服务停止、禁止开机自启、删除,随后重启network服务
为何这么做的原因:
NetworkManager服务和network服务类似,都是管理网络的服务
但是两种服务都配置会起冲突,导致network服务开不起来,所以一般都会关闭其中一个服务
并且NetworkManager在网络断开的时候会清除路由,如果是自定义的路由,没有添加进NetworkManager的配置文件当中的话,路由就会被清除掉
NetworkManager比较适合有桌面环境的系统,我们搭建openstack只是用作服务器,不需要桌面环境。所以我们保留network服务,将NetworkManager服务关闭禁用开机自启

其他解释:
yum remove是删除软件,脚本这里粗暴的删除了NetworkManager和firewalld防火墙

#iptables
yum install  iptables-services  -y 
if [ 0  -ne  $? ]; then
	echo -e "\033[31mThe installation source configuration errors\033[0m"
	exit 1
fi
systemctl restart iptables
iptables -F
iptables -X
iptables -Z 
/usr/sbin/iptables-save
systemctl stop iptables
systemctl disable iptables
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

整个段落所做的事:安装和配置iptables服务。

iptables是一个防火墙服务,和firewalld相比,有以下区别:

iptablesfirewalld
实现方式链式规则区域和服务
默认放行规则允许拒绝
优缺点修改规则后需全部刷新才可生效允许动态更新规则而不破坏现有会话和连接

CentOS7默认使用的防火墙是firewalld,替换了iptables,因为firewalld使用更加方便,功能也更加强大。
这里选择抛弃功能强大的firewalld,转而使用iptables的原因是
OpenStack网络相关组件的功能(如安全组)是基于iptables实现的,所以没办法

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/803886
推荐阅读
相关标签