1 前言
1.1 文档编号
版本号 |
撰写日期 |
撰写成员 |
备注 |
v1.0 |
10.14.2021 |
王盛 |
大纲 |
v2.0 |
10.16.2021 |
王盛 |
完善 |
|
|
|
|
|
|
|
|
|
|
|
|
1.2 项目概述
项目背景:
在掌握了云计算平台搭建的基础知识,接下来从该年级三个专业(云计算技术与应用、移动应用开发、移动测试)中选择其中一个专业,由此我们基于学校的移动测试专业来进行设计移动测试实验室,因为平常的学习生活中,我们都是使用个人笔记本电脑,存在着许多问题,可能有操作系统兼容性、以及个人安装软件过程中出现的不细心导致的安装错误,还可能是软件与电脑之间的兼容性,还可能是安装部署过程比较复杂耗时较长导致多数同学对学习的兴趣消失在了萌芽状态,例如:用wmware新建一个虚拟机安装Centos操作系统、部署某个开发环境、安装某个大型软件等等,正是因为这些安装步骤需要很长的时间,会消耗我们不必要的时间,所以我们设想从云上来实现上课学习的便捷化,不仅节约时间,还可以提高上课效率。
项目介绍:
此次项目我选择的是通过部署OpenStack的云平台来搭建项目,实OpenStack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合。OpenStack为私有云和公有云提供可扩展的弹性的云计算服务。
1.3 项目目标
提供实施简单、可大规模扩展、丰富、标准统一的移动测试的云计算管理平台。
例如:学生可以通过平板或者个人电脑、终端设备链接校园网直接访问属于个人的云主机,且云主机上的软件都满足上课所需要求;管理员(教师)可以实时管理每个学生的云主机,根据当时的上课人数确定开启云主机的台数等等。
2 需求分析
2.1 现状分析
此次选择的是移动测试专业,据统计:实验室没有提供任何上课所需环境,全部使用的是个人笔记本电脑,移动专业总需要的软件:Office2016办公软件、photoshop、夜神模拟器、java、c、python所需环境,数据库SQLServer2012、VMwareWorkStation16pro、思科模拟器。个人笔记本搭建软件问题及其痛点:例如搭建数据库软件时候,很多同学电脑在安装时候都会报错,可能是下载的盗版软件引起的安装问题,还可能是个人笔记本电脑由于某个文件丢失而导致的软件安装失败。另外就是配置一些开发环境的时候,环境变量的参数有些同学总是会弄错,所以会耽误很多不必要的上课时间。
2.2 可行性分析
对于移动测试专业来说,当上课环境迁云以后,将很大提高上课效率,因为某些上课使用的软件安装过程需要很久,且很可能因为笔记本电脑类型不同而导致的软件问题,例如:在戴尔笔记本中,使用思科模拟器时候,开启主机的终端时候,会黑屏。而其它类型笔记本电脑不会出现此问题。对于云实验环境的适用范围来说,都是全面可部署的,不仅移动测试可以使用此实验环境,而像其它一些专业同学涉及编程语言学习时候,或者office办公时候都可以使用此实验环境。实验环境对于硬件也没用特殊的要求性,都是些常规硬件。上课时候老师可以弹性动态的增加节点,方便扩展实验环境的用户数,一旦搭建完此实验环境都是可以长时间使用的,甚至能跨专业使用。
2.3 用户需求分析
据调查显示,移动测试专业共有100个用户需要使用云实验环境,实际上单次上课只需要50个用户就可以了,因为移动测试分为两个班是相同的老师进行授课教学,也不排除之后可能同时进行上课的情况,所以我们还是以100个用户的需求来进行实验环境的搭建,同学们的操作系统都是windows 10的专业版操作系统,没有使用linux等其它操作系统。Photoshop是使用的2018版本,c语言用的是DevC++5.4开发环境,java是JDK1.8,python3.6,夜神模拟器2018版本,office2016,vmware是15.5pro版本的,sql Server2016,思科模拟器7.0,用户不需要分类管理。
单台云主机的配置如下:
CPU内核:4核
运行内存:12G
硬盘:240G
操作系统:Windows10专业版
服务器的配置及其型号:
总需求:
CPU总核:400核
总运行内存:1200G
总硬盘:30T
实际总核:440核
实际总运行内存:1760G
实际总硬盘:44T
服务器数量:10台+1台(容错备用)
总价:55000元
2 云平台规划设计
云平台选择的是OpenStack
云平台部署拓扑结构:
部署过程及步骤:
服务器为CentOS 7 1804版本。Root密码设置为111111
1、 先统一设置,将防火墙允许ssh22端口访问,方便后续远程使用。
2、进入/etc/selinux/config 将开启的selinux关闭。
3、进入/etc/sysconfig/networks-scrips/ifcfg-ens33 将IP固定为上图拓扑所示。
4、进入/etc/hostname 将主机名一一修改为CT、C1、C2、C3………
5、进入/etc/hosts将所有主机映射修改为 IP+主机名
6、配置yum源,准备进行下载
(1)可先备份/etc/yum.repos.d/下面的reop文件(备不备份都可以,有快照):
cd /etc/yum.repos/d/
mkdir bak
mv *.repo bak/
(2)下载国内yum源:
wget http://mirrors.aliyun.com/repo/Centos-7.repo
(3)在etc/yum.repos.d/目录下创建并编辑:
vim openstack-rocky.repo
[openstack]
name=openstack
baseurl=https://mirrors.aliyun.com/centos/7/cloud/x86_64/openstack-rocky/
gpgcheck=0
enabled=1
(4)因为在安装过程中会报错qemu版本过低,所以还需要配置qemu的源
创建并编辑:
vim Centos-qemu.repo
[centos-qemu-ev]
name=qemu
baseurl=https://mirrors.aliyun.com/centos/7/virt/x86_64/kvm-common/
gpgcheck=0
enabled=1
(5)清除yum源缓存并重新生成本地缓存(如果第一次报错可以再执行一次):
yum clean all
yum makecache
(6)安装PackStack:
yum -y install openstack-packstack
(7)重启所有系统,修改了hosts要重启才能生效
(8)在CT控制节点上下载ntp时钟同步服务器
yum install -y ntp
3.配置时钟同步(控制节点)
yum -y install ntp
编辑/etc/ntp.conf注释掉
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
添加
server 127.127.1.0
fudge 127.127.1.0 stratum 10
启动ntp服务并开机自启动
systemctl start ntpd
systemctl enable ntpd
(9)在计算节点与控制节点进行时钟同步
在所有计算节点上执行yum install -y ntpdate openstack-packstack
(10)产生应答文件,进行ssh登录
packstack --gen-answer-file=YDCS
ssh-copy-id C1
ssh-copy-id C2
ssh-copy-id C3
…………………
输入对应密码
修改应答文件,规划计算节点
Vim YDCS
CONFIG_ CONTROLLER_HOST=10.7.96.100
CONFIG_COMPUTE_HOSTS=10.7.96.101,10.7.96.102,10.7.96.103…10.7.96.100
CONFIG_NETWORK_HOSTS=10.7.96.101,10.7.96.102,10.7.96.103…10.7.96.100
(11)开始部署
packstack --answer-file=YDCS
对于用户权限的管理:
将学生归结为普通用户,且设置相应的流量策略,防止学生上课时候进行与课外无关的活动,将老师归结为管理员,上课时候实时动态的管理学生的上课行为。
对云平台网络的规划就是将一台服务器作为备用服务器,同时也是管理员使用的服务器,其它服务器均作为计算节点所使用的服务器。
备份:此次学生的需要使用的是100台虚拟机,大约每次上课要开启50台虚拟机,给老师分一台,剩下的都可以作为备用主机,当有学生电脑出现错误,根据云平台的高可用性,可以迅速启用,而且不会耽误课程进度。
3 仿真验证
验证openstack服务
1. 登陆
首先当然是打开dashboard的界面,能成功登陆的话,说明用户创建成功。接下来就可以使用可视化界面来进行一些简单的操作。网页做的是将你的请求发送到openstack后端,然后由openstack后端来处理你的请求。http://ip/dashboard
注意:初始的用户名和密码都在/root目录下的keystonerc_admin文件中
可以通过cat /root/keystonerc_admin来查看用户名和密码
export OS_USERNAME=admin
export OS_PASSWORD=XXXXX
2. 查看
成功登陆后,看到一个很简洁的界面,分为三个部分,分别是项目、管理员、身份管理。
· 项目,根据登陆的用户来显示用户拥有的镜像、实例、网络等信息
o 计算:上传镜像、增删改查实例等
o 网络:可以增删改查网络配置,创建、配置内部网络、外部网络,路由器等
o 云编排
· 管理员,由于我登陆的是管理员账号,会有这个部分显示。可以利用管理员权限来修改这些信息。
o 概况:有点像监控的功能,看内存啊、实例数量啊之类的信息
o 虚拟机管理
o 主机聚合
o 实例
o 卷
o 网络
o 路由
o …
o 系统信息:可以看启动了什么服务
· 身份管理,管理员还可以对用户的身份、组和角色进行修改
o 用户:包括neutron、heat、cinder等等,用于keystone验证身份。
o 组:对用户进行分组,限制权限之类的。
o 角色:不同角色拥有的权限也是不一样的
3. 上传镜像
可以试下上传一个镜像,这里推荐cirror,大概12MB左右的镜像,我们用它来创建实例,并且测试实例之间的网络。
4. 创建网络
接下来创建网络,为了测试,我们分别创建内部网络和外部网络。并且为这两个网络建立子网。两个网络用路由器进行连接,进行数据通信。路由器关联两个接口,一个是关联内部网络的接口,一个是关联外部网络的接口。
实例可以建立在内部网络上,也可以建立在外部网络上,如果内部网络之间的实例需要通信,用的是内部网络的ip进行通信,如果内部网络的一个实例要与外部网络的一个实例进行通信,我们需要为内部网络的实例分配浮动ip,简单来说就是分配一个外部网络的ip,然后两个不同网络的实例就可以进行通信了。
子网通过路由器连接外网:
5. 安全组规则
管理安全组规则,其实有点像在配置iptable,设置入口和出口。这里设置了两组规则,icmp和ssh,用于后面的测试。
6. 创建实例
*是必须填的,也就是配置实例之前你要现有这些配置可以选才行。缺了其中一个都不能创建成功。
创建成功后,我们可以通过控制台连入实例,进行命令行交互。也可以查看相关的日志、操作日志。
7. 通信
先打开实例控制台,也可以在网络拓扑中点击节点然后打开控制台:
然后进行ping命令测试:
我们创建了两个实例test1和test2,首先我们进行实例之间的内部通信,实例test1来ping实例test2
然后进行外部网络的访问,外部网络为test0,
用实例test2来ping实例test,用实例test1来ping实例test0
最后尝试用ssh来链接test0,test1,test2,用Xshell 5.0进行ssh链接,如下图所示:
4 经验总结
此次经验总结主要是在于部署云平台的过程中所总结出来的,虽然在部署过程中也遇到了一些意外错误和问题,但是基本上都解决了,这些大都是一些小问题,代码写错,某些内容更改错误等等。
首先,对于这些较大的实验项目,我们需要先理清思路和部署顺序;
其次,安装过程中,由于是实验过程,需要习惯性地进行备份(虚拟机上我们可以拍摄快照),这也是一种存储方式哈。这样我们可以在之后出现问题无法解决等情况时,可以通过这种快照机制回滚到当初部署成功的阶段的时间点。这样可以为我们节省大量的时间。
接着就是排障,先看懂ERROR的含义,如果一眼看出问题所在可以直接修改;如果没有什么解决思路,就去检查自己的环境是否有问题,服务是否开启,该停的服务是否关闭等;如果环境没什么问题就去查看一下自己的配置文件是否有误,例如其中某些配置文件的相关参数是否修改正确等等;如果还是无法解决就需要自行去查找资料,例如去百度,看看官方文档,看看前辈们或者之前的工程师是否遇到过类似的问题,是如何解决的。