1.前言

1.1 简介

它提供软硬件一体的系统,将一台服务器虚拟化为多台服务器使用,提供统一的WEB管理界面,以及底层的命令行管理功能,可以提供稳定、高速的实训环境。
人话:一台高性能服务器虚拟化出来一堆服务器,类似于正常电脑的Vm

1.2 接口介绍

image-20201221111031688

  • 管理口:提供云平台对外管理功能,SSH、WEB管理功能,即管理云平台的网线口;
  • 业务口:提供云平台里面的服务器对外的通信,如果云平台内的服务器需要跨网段通信时,则需要使用到此口;
  • 显示输出口:类似于电脑接入显示器一样,接入后的显示是Linux系统,因为云平台的内核就是Linux;
  • 电源提示灯:蓝色时即为开机,不亮即为关机;
  • 电源键:按一下即可开机,切勿长按关机,除非云平台彻底死机;

1.3 Openstack概念引入(理解)

1.3.1 核心组成部分

  • 计算(compute) - nova:提供计算即服务。一套控制器,用于为单个用户或使用群组管理虚拟机实例的整个生命周期,根据用户需求来提供虚拟服务。负责虚拟机创建、开机、关机、挂起、暂停、调整、迁移、重启、销毁等操作
  • 对象存储(Object Storaage) - Swift:提供存储即服务。一套用于在大规模可扩展系统中通过内置冗余及高容错机制实现对象存储的系统,允许进行存储或者检索文件。可为glance提供镜像存储,为cinder提供卷备份服务。
  • 镜像服务(image service) - glance:提供虚拟机镜像服务。一套虚拟镜像查找机检索系统,支持多种虚拟机镜像格式(AKI/AMI/API/ISO/QCOW2/RAW/VDI/VHD/VMDK),有创建上传镜像、删除镜像、编辑镜像基本信息的功能。
  • 身份服务(identity service) - keystone:为openstack其他服务提供身份验证、服务规则和服务令牌的功能,管理domains、projects、users、groups、roles。
  • 网络&地址管理(network) - neutron:提供云计算的网络虚拟化技术,为openstack其他服务提供网络连接服务。为用户提供接口,可以定义network、subnet、router,配置DHCP、DNS、负载均衡、L3服务,网络支持VLAN、vxlan、GRE等。插件架构支持许多主流的网络厂家和技术。
  • 块存储(block storage) - cinder:为运行实例提供稳定的数据块存储服务,它的插件驱动架构有利于块设备的创建和管理,如创建卷、删除卷,在实例上挂载和卸载卷。
  • UI界面(dashboard) - horizon:openstack中各种服务的web管理门户,用于简化用户对服务的操作,例如:启动实例、分配IP地址、配置访问控制、安全组等。

2.介绍

2.1 概要

云平台可以用网页版和SSH进行使用,web页面主要是为了实现对虚拟机的硬件、网络、存储管理工作,SSH主要是为了配置云平台里面的设置

2.2 登录

WEB管理地址:http://192.168.100.100/dashboard
域:default
用户名:admin
密码:dcncloud
Tips:以上为默认配置

image-20201221112913286

登录成功后,是以下截图,左边的菜单栏是云平台WEB管理的三个区域,项目和管理员是比较常用的,身份管理可以基本不动

image-20201221114034802

2.3 身份管理(理解就行)

比赛环境中这里基本不用配置

image-20201221114511673

红框:里面显示的是当前所使用的域和项目
黑框:身份管理的子菜单
  • 域:有特定的项目(project)来承担,一个域是一组user、group或project的容器。
  • 项目:是各个服务中的一些可以访问的资源集合,人话:这个项目能创建多少台虚拟机,能用多少存储空间,能用多少多少核CPU都在这里设置;
  • 用户:通过keystone访问openstack服务的个人、系统亦或是某个服务,keystone会通过认证信息验证用户请求的合法性,通过验证的用户将会分配到一个特定的令牌,该令牌可以用作后续资源访问的一个通行证,非全局唯一,只需要在域内唯一即可。
  • 组:一个组users的容器,可以向group中添加用户,并直接给group分配角色,那么在这个group中的所有用户都拥有了group所拥有的角色权限。通过引入group的概念,keystone实现了对用户组的管理,达到了同时管理一组用户权限的目的。
  • 角色(role):一个用户所具有的角色,角色不同意味着被赋予的权限不同,只有知道用户所被授予的角色才能知道该用户是否有权限访问某资源。人话:类似于权限组,这里的角色用途就是为了设定权限,用户有哪个角色,他就有那个角色的所有权限。
graph LR;
A(域) -->B(项目)
A-->C(用户)
A-->D(组)
A-->E(角色)
C-->glance
C-->nova
C-->cinder

Tips:此图仅适用于神州数码云实训平台,glance、nova、cinder都是用户

2.4 项目

2.4.1 概要

image-20201221152741032

比赛中通常用到【计算】-》 【实例】、【卷】

2.4.1 计算

1. 概述
  • 作用:查看这个项目的使用情况量(云平台能创建的虚拟机数量,内存能用多少存储,CPU总核数能用多少)

image-20201221153004467

2. 实例(常用)
  • 作用:创建虚拟机

image-20201221153300977

3.卷(常用)
  • 作用:创建卷(虚拟磁盘)
  • 用途:用于给实例连接卷用

image-20201221153642001

4.镜像
  • 作用:查看当前项目内的全部镜像
  • 用途:实例创建时可以选择镜像,镜像需要在这里创建
  • 其他:[创建云平台能启动的镜像]()

image-20201221154204843

5.访问 & 安全
  • 作用:类似于防火墙,完全用不到

2.4.1 网络

1. 网络拓扑
  • 作用:图形化查看当前的网络结构

image-20201221154626914

2. 网络(常用)

image-20201221155114184

3.路由器
  • 作用:类似于硬件路由器功能,完全用不到

2.5 管理员

image-20201222125718393

此次仅有一个子菜单【系统】
因为此处子项目过多,只描述会用到的;

2.5.1 实例规格 (常用)
  • 作用:创建虚拟机的配置模板
  • 用途:创建模板后,创建实例后可以选择模板,直接使用该模板的配置进行创建。
    image-20201222130939645
2.5.2 网络 (常用)
  • 作用:用于创建云平台内的网络
  • 用途:虚拟机的网络都会使用到这个页面上所创建的。

image-20201222131447478

2.5.3 镜像 (不常用)

image-20201222131717347

2.5.4 电源
  • 作用:重启和关机云平台

image-20201222132013410

2.5.5 其他
  • 概述:类似于项目中的使用情况摘要
  • 管理程序:类似于项目中的使用情况摘要
  • 主机距离:针对物理主机的聚合,配合openstack的flavor(虚拟机模板)控制虚拟机针对物理主机选择
  • 实例:类似于项目中的实例,但是这里无法创建虚拟机
  • 路由器:类似于项目中的路由器
  • 缺省值:显示当前项目可用的配置,云平台能创建的虚拟机数量,内存能用多少存储,CPU总核数能用多少
  • 元数据定义:虚拟机启动时候需要注入hostname、password、public-key、network-info之类的信息
  • 系统信息:显示云平台所使用基本服务和组件
  • 许可证:云平台的序列号

3.实操

3.1 概要

竞赛中,通常只会用到

  • 项目 --》 计算 --》 实例、卷
  • 管理员 --》 系统 --》实例规格、网络

菜单

3.2 顺序

网络必须在创建虚拟机前创建,否则无法创建虚拟机

做题顺序

3.3 创建典型网络

管理员 -> 系统 -> 网络

  1. 创建网络

配置网络信息

image-20201222145316021

  1. 配置子网和DHCP

打开当前网络页面

image-20201222150008482

  1. 子网(配置完后下一步)

此处网关地址要与连接交换机设置的网关 IP 地址一致

image-20201222150535977

  1. DHCP

image-20201222150903254

完成截图

image-20201222151039579

3.4 创建实例规格

管理员 -> 系统 -> 实例规格

image-20201222151430247

3.5 创建实例

项目 -> 计算-> 实例

  1. 开始创建

image-20201222151926589

  1. 选择使用的操作系统

image-20201222152517473

  1. 选择实例规格(配置模板)

image-20201222154817575

  1. 选择虚拟机使用的网络

Tips:网络是可以多选的,有时候的需求是要一个虚拟机上有多个网段的网络

image-20201222155029954

  1. 创建完成界面

image-20201222190159384

3.6 创建卷

  1. 创建卷

image-20201222190724122

  1. 连接进虚拟机

image-20201222191009312

image-20201222191140205

3.7 更改子网配置

  1. 打开此网络

image-20201222150008482

  1. 编辑子网配置

image-20201222191852817

3.8 更改实例规格

image-20201222193108308

3.9 更改实例息

3.9.1 给实例新增网卡

Tips:去除网卡是【拆离接口】

image-20201222193346110

image-20201222193407899

3.9.2 修改实例名称

image-20201222193745599

3.10 更改卷

3.10.1 扩展卷的大小

Tips:扩展前需无连接实例状态,否则无法扩展

image-20201222194347761

3.10.2 断开连接

image-20201222194525136

3.11 免流端口

3.11.1 免流端口介绍

在某些实验实训环境中我们需要任意修改虚拟机的 IP 地址为同一网段内的其它地址,同时也需要让到达虚拟机的流量或是虚拟机发出的流量不受端口安全的限制。
默认情况下由云平台分发的IP地址

3.11.2 应用环境
  1. 要求更改一个非云平台DHCP分发的IP时

    • Window 故障转移群集
  2. 网卡聚合时

    • Linux 链路聚合
    • Window NLB
3.11.3 创建免流端口
  1. 打开所需要的网段(看需求)

image-20201222150008482

  1. 创建端口

image-20201222202757398

  1. 设置端口为免流端口

命令:setportfree -name 端口名字
使用SSH连接到云平台内部,执行上面的命令,看到下图反馈信息表示修改成功

image-20201222203541899

  1. 使用此免流端口

此时创建实例时,网络端口会多出一个端口,此时选择端口后可以不选择网络

image-20201222205730700

3.12 创建云平台能启动的镜像(扩展)

咕咕

4.常见问题

4.1 Linux无网安装服务

4.1.1 正常配置
mount /opt/CentOS-7-x86_64-DVD-1708.iso /media/
cd /etc/yum.repos.d/
rm -rf CentOS-Base.repo
vim CentOS-Media.repo
## 三个file修改成镜像挂载的路径 enabled数值改为1
    [c7-media]
    name=CentOS-$releasever - Media
    baseurl=file:///media/
            file:///media/
            file:///media/
    gpgcheck=1
    enabled=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
4.1.2 脚本配置

将下面的代码复制另存为VBS后缀的文件,利用CRT软件在连接虚拟机后执行该脚本

#$language = "VBScript"
#$interface = "1.0"

crt.Screen.Synchronous = True

' This automatically generated script may need to be
' edited in order to work correctly.

Sub Main
    crt.Screen.Send "cd /etc/yum.r" & chr(9) & chr(13)
    crt.Screen.Send "rm -rf C" & chr(9) & "B" & chr(9) & chr(13)
    crt.Screen.WaitForString "/static/yum.repos.d]# "
    crt.Screen.Send "vi C" & chr(9) & "M" & chr(9) & chr(13)
    crt.Screen.Send "G" & chr(27) & "[A" & chr(27) & "[AA" & chr(8) & "1" & chr(27) & "[A" & chr(27) & "[A" & chr(27) & "[C" & chr(27) & "[C" & chr(27) & "[C" & chr(27) & "[C" & chr(27) & "[C" & chr(27) & "[C" & chr(27) & "[C" & chr(27) & "[C" & chr(27) & "[C" & chr(27) & "[C" & chr(27) & "[C" & chr(27) & "[C" & chr(27) & "[3" & chr(126) & chr(27) & "[3" & chr(126) & chr(27) & "[3" & chr(126) & chr(27) & "[3" & chr(126) & chr(27) & "[3" & chr(126) & chr(27) & "[3" & chr(126) & chr(27) & "[3" & chr(126) & chr(27) & "[3" & chr(126) & chr(27) & "[3" & chr(126) & chr(27) & "[3" & chr(126) & chr(27) & "[3" & chr(126) & chr(27) & "[A" & chr(27) & "[3" & chr(126) & chr(27) & "[3" & chr(126) & chr(27) & "[3" & chr(126) & chr(27) & "[3" & chr(126) & chr(27) & "[3" & chr(126) & chr(27) & "[3" & chr(126) & chr(27) & "[A" & chr(27) & "[3" & chr(126) & chr(27) & "[3" & chr(126) & chr(27) & "[3" & chr(126) & chr(27) & "[3" & chr(126) & chr(27) & "[3" & chr(126) & chr(27) & "[3" & chr(126) & chr(27) & "[3" & chr(126) & chr(27) & chr(27) & ":wq" & chr(13)
    crt.Screen.WaitForString "/static/yum.repos.d]# "
    crt.Screen.Send "mon" & chr(8) & "unt /op" & chr(9) & chr(9) & "/me" & chr(9) & chr(13)
    crt.Screen.WaitForString "/static/yum.repos.d]# "
    crt.Screen.Send "yum install- y " & chr(8) & chr(8) & chr(8) & chr(8) & " -y vim" & chr(13)
End Sub

4.2 虚拟机打不开,电源提示无状态

image-20201222212446081

这个是没有分配置IP地址。检查是否关联网络,网络里是否创建子网,子网是否正确配置地址。

4.3 关于修改SID后windows内ISO文件不见问题

Windows的ISO文件在桌面上,修改SID后会重置桌面,桌面上的文件将被清空,所以在修改SID前,请将桌面上的ISO文件剪切到C盘要目录。

4.4 删除卷报错

Cinder Error

4.5 提示无法删除卷

已连接实例的卷是无法删除的,需要[断开连接]()0后删除

4.5.1 解决办法

以下代码均在云平台内进行操作

后面为注释 [root@dcncloud ~]# 后面跟的是操作代码

1. 查找错误卷ID
[root@dcncloud ~]# lvs
  LV                                          VG             Attr       LSize
  volume-26005826-b736-449d-a6e4-86d425740592 cinder-volumes -wi-a----- 2.00g    
[root@dcncloud ~]# cinder list
|                  ID                    |     Status     |  Name | Size | Volume Type | Bootable |  Attached to|
| 26005826-b736-449d-a6e4-86d425740592 | error_deleting |  hd6  |  2   |      -      |  false   |             |
## status 显示 26005826-b736-449d-a6e4-86d425740592 ID的卷目前处于 error_deleting

2. 删除lvremove直接删除
## 格式:lvremove /dev/cinder-volumes/volume-卷ID
[root@dcncloud ~]# lvremove /dev/cinder-volumes/volume-26005826-b736-449d-a6e4-86d425740592
      Logical volume cinder-volumes/volume-26005826-b736-449d-a6e4-86d425740592 is used by another device.
      ##正常来讲都会提示磁盘正在被使用
      
3. 查看占用进程
## lsof | grep "卷ID" 
## fuser -m /dev/cinder-volumes/volume-卷ID
[root@dcncloud ~]# lsof | grep "26005826-b736-449d-a6e4-86d425740592"
[root@dcncloud ~]# fuser -m /dev/cinder-volumes/volume-26005826-b736-449d-a6e4-86d425740592
## 如果返回,则用kill -9 PID,接着直接跳到第五步;如果没有返回则继续下一步

4. 直接关闭存储节点服务
[root@dcncloud ~]# systemctl stop openstack-cinder-volume.service target.service
[root@dcncloud ~]# lvremove /dev/cinder-volumes/volume-26005826-b736-449d-a6e4-86d425740592

5. 此时LV卷被删除,但是云平台的数据库还卡在那里
[root@dcncloud ~]# mysql -u root -pdcncloud
MariaDB [(none)]> use cinder
MariaDB [(cinder)]> select id,status,deleted from volumes where id="26005826-b736-449d-a6e4-86d425740592";
+--------------------------------------+----------------+---------+
| id                                   | status         | deleted |
+--------------------------------------+----------------+---------+
| 26005826-b736-449d-a6e4-86d425740592 | error_deleting |       0 |
+--------------------------------------+----------------+---------+
MariaDB [(cinder)]> update volumes set deleted=1 where id='26005826-b736-449d-a6e4-86d425740592';

6. 重新启动存储节点服务
[root@dcncloud ~]# systemctl restart openstack-cinder-volume.service

4.5.2 目前可能导致的情况

一次性删除大量卷

5.业务口通信

云平台通信基本架构

    本次云服务实训平台**架构如图 1 所示**,IP 地址规划如图 1 所示。 本次操作主要在云服务中创建两个 vlan,即vlan10、vlan20。
    在交换机上**vlan10 中创建一个192.168.10.0/24 网络**,在**vlan20 中创建 192.168.20.0/24 的网络**,通过 eth2网卡连接到物理交 换机中的端口(同时需要配置此端口为 trunk),为了可以连通外网,我们需要**在交换机中配置与云服务实训平台中 vlan 对应的 vlan**, 并为其配置 IP**(此 IP 作为云服务平台中 vlan 的网关)**。 
    eth1 作为管理网络,连接到物理交换机的 access 口,并设置一个 IP(此 IP 作为云服务平台中 eth1 网卡的网关),通常为 vlan100,IP:192.168.100.1/24

image-20201222212128032

简单地说:
①云平台的eth1口连接到交换机上的端口,交换机的端口需要配置为ACCESS模式且网段为192.168.100.0/24

Switch#config
Switch(config)#vlan 100
Switch(config-Vlan100)#interface vlan 100 //创建 VLAN 100
Switch(config-if-Vlan100)#ip address 192.168.100.1 255.255.255.0 //配置IP地址(管理Vlan)
Switch(config-if-Vlan100)#exit
Switch(config)#interface Ethernet 1/0/1 //配置接入云平台Eth0/1的接口(管理口)
Switch(config-if)#switchport mode access //配置接口模式为接入模式
Switch(config-if)#switchport access vlan 100 //配置接口为ACCESS vlan100
Switch(config-if)#exit
Switch(config)#

②云平台的eth2口连接到交换机上的端口,交换机的端口需要配置为TRUNK模式且允许业务网段通过

Switch#config
Switch(config)#vlan 10,20 //创建VLAN10、20
Switch(config)#interface vlan 10
Switch(config-if-vlan10)#ip address 192.168.10.1 255.255.255.0 //配置IP地址(这里的IP就是云平台机器的网关)
Switch(config-if-vlan10)#exi
Switch(config)#interface vlan 20
Switch(config-if-vlan20)#ip address 192.168.20.1 255.255.255.0 //配置IP地址(这里的IP就是云平台机器的网关)
Switch(config-if-vlan20)#exit
Switch(config)#
Switch(config)#interface Ethernet 1/0/23//配置接入云平台Eth0/2的接口(业务口)
Switch(config-if)#switchport mode trunk //配置接口模式为中继模式
Switch(config-if)#switchport trunk allow vlan 10,20 //配置允许的VLAN为Vlan10、20 (云平台创建的网络也是Vlan10、20于此对应)
Switch(config-if)#exit
Switch(config)#

最后更新日期:20.12.23