目录
云计算概述
什么是云计算
云计算 (cloud computing) 是一种基于网络的超级计算模式,基于用户的不同需求,提供所需的资源,包括计算资源、存储资源、网络资源等。云计算服务运行在若干台高性能物理服务器之上,提供每秒 10 万亿次的运算能力,可以用于模拟核爆炸、预测气候变化以及市场发展趋势。
云计算有广义和狭义之分。
- 狭义的云计算是指通过网络按需向用户提供 IT 基础设施,包括硬件、平台和软件,提供资源的网络被称为 “云”。在使用者看来,“云” 中的资源是无限大的,无论需要多少资源,云都可以提供。而在云端,所有的资源都可以通过横向进行扩展,如同使用水电、煤气一样。以用电为例,如果用户自行发电,那么用户需要维护一台发电机,定期加油,出现问题需要维修。而如果使用公共电网,用户不需要知道发电厂在哪里、怎么发电等问题,只需要按需付费使用就可以,多用多付,少用少付。在用户看来,电的资源是无限的。
广义的云计算是指服务的交付和使用模式,通过网络以按需、易扩展的方式获得所需的服务。这种服务可以是 IT 和软件、互联网相关的,也可以是任意其他的服务。
云计算是一种模型,提供无论在何时何地都可以便捷获取所需资源的模型,并能够让用户根据需要快速创建应用,并且在不需要时进行资源释放。
现在云计算技术已经日渐成熟,很多企业已经拥有自己的私有云,而掌握这种技术的人才也更为抢手。目前,云计算使用最广泛的是开源项目 OpenStack。经过多个版本的开发更新,现在已经到 T 版。作为云计算项目之一的 OpenStack 也受到各个企业的青睐,成为大家搭建私有云的首选。
云计算的服务模型
云计算模型中有 IaaS(Infrastructure as a Service,基础架构即服务)、PaaS(Platform as a Service,平台即服务)、SaaS(Software as a Service,软件即服务)三种基本服务模型。
IaaS
IaaS 提供最底层的 IT 基础设施服务,包括处理能力、存储空间、网络资源等。用户可以从中获取硬件或者虚拟硬件资源(包括裸机或者虚拟机),之后可以给申请到的资源安装操作系统和其他应用程序。一般面向的对象是 IT 管理人员。
PaaS
PaaS 是把已经安装好开发环境的系统平台作为一种服务通过互联网提供给用户。用户可以在上面安装其他应用程序,但不能修改已经安装好的操作系统和运行环境。一般面向的对象是开发人员,需要了解平台提供环境下的应用开发和部署。
SaaS
SaaS 可直接通过互联网为用户提供软件和应用程序等服务。用户可以通过租赁的方式获取安装在厂商或者服务供应商那里的软件。一般面向的对象是普通用户,最常见的模式是提供给用户一组账号和密码。
OpenStack 概述
OpenStack 起源
OpenStack 是 Rackspace(一家美国的云计算厂商)和美国国家航空航天局(National Aeronautics and Space Administration,简称 NASA)在 2010 年 7 月共同发起的项目。由 Rackspace 贡献存储源码(Swift)、NASA 贡献计算源码(Nova)。
什么是 OpenStack
OpenStack 是一个通过数据中心控制计算资源、存储资源和网络资源的云平台。同时它又是一款开源软件,以 Apache 许可证授权的自由软件和开放源代码项目,支持所有类型的云环境。OpenStack 的目标是提供简单实施、可扩展以及丰富功能集的云产品,来自全世界的云计算专家共同维护该云项目。OpenStack 通过多种补充服务提供了 IaaS 解决方案,每一种服务均提供了相应的应用程序接口(Application Programming Interface,简称 API),以促进各组件之间的整合。
OpenStack 被用来提供公有云以及私有云的建设以及管理。作为一个开源项目,其社区规模涵盖 130 家企业以及 1350 位开发人员。这些机构与个人都将 OpenStack 作为 IaaS 资源的通用前端。
OpenStack 覆盖了网络、虚拟化、操作系统、服务器等各个方面。2019 年 10 月 OpenStack 发布了最新版本 Train。一般情况下,OpenStack 每半年左右更新一次版本。表 1-1 中列出了 OpenStack 常见的 8 个核心项目(即 OpenStack 服务)。
服务 | 项目名称 | 描述 |
---|---|---|
Compute(计算服务) | Nova | 负责实例生命周期的管理,计算资源的单位。对 Hypervisor 进行屏蔽,支持多种虚拟化技术(红帽默认为 KVM),支持横向扩展。 |
Network(网络服务) | Neutron | 负责虚拟网络的管理,为实例创建网络拓扑结构。是面向租户的网络管理,可以自定义网络,并使租户之间互不影响。 |
Identity(身份认证服务) | Keystone | 类似于 LDAP 服务,对用户、租户和角色、服务进行认证与授权,并且支持多认证机制。 |
Dashboard(控制面板服务) | Horizon | 提供一个 Web 管理界面,与 OpenStack 底层服务进行交互。 |
Image Service(镜像服务) | Glance | 提供虚拟机镜像模板的注册与管理,将做好的操作系统复制为镜像模板,在创建虚拟机时直接使用。可支持多格式的镜像。 |
Block Storage(块存储服务) | Cinder | 负责为运行实例提供持久的块存储设备,可进行方便的扩展,按需付费,支持多种后端存储。 |
Object Storage(对象存储服务) | Swift | 为 OpenStack 提供基于云的弹性存储,支持集群无单点故障。 |
Telemetry(计量服务) | Ceilometer | 用于度量、监控和控制数据资源的集中来源,为 OpenStack 用户提供记账途径。 |
OpenStack 优势
OpenStack 在控制性、兼容性、可扩展性、灵活性方面具备有优势,它可能成为云计算领域的行业标准。
控制性:完全开源的平台,模块化的设计,提供相应的 API 接口,方便与第三方技术集成,从而满足自身业务需求。
兼容性:OpenStack 兼容其他公有云,方便用户进行数据迁移。
- 可扩展性:Openstack 采用模块化的设计,支持主流的 Linux 发行版本,可以通过横向扩展,增加节点、添加资源。
- 灵活性:用户可以根据自己的需要建立基础设施,也可以轻松地为自己的群集增加规模。Openstack 项目采用 Apache2 许可,意味着第三方厂家可以重新发布源代码。
- 行业标准:众多 IT 领军企业都加入到 OpenStack 项目,意味着 OpenStack 在未来可能形成云计算行业标准。
OpenStack 一键部署
本章使用 packstack 工具实现一键部署 OpenStack。通过该安装工具,只需简单运行一条命令,即可快速部署 OpenStack,省去繁琐的安装步骤,直接体验 OpenStack 的管理及使用。
实验环境
本案例需要提前部署一台新安装操作系统的主机,要求能访问互联网,主机的系统只需采用最小化方式安装。若通过 VMware 等虚拟机软件实现,网络采用桥接模式。
使用操作系统为 CentOS 7.3 的主机。表 1-2 是安装部署 OpenStack 环境的硬件设备最低配置要求。
类型 | 最低配置要求 |
---|---|
CPU | 支持 Intel 64 或 AMD64 CPU 扩展,并启用了 AMD - V 或 Intel VT 硬件虚拟化支持的 64 位 x86 处理器,逻辑 CPU 个数为 4 核 |
内存 | 8GB |
磁盘空间 | 30GB |
网络 | 1 个 1 Gbps 网卡 |
主机名 | IP 地址 / 掩码 | 角色 |
---|---|---|
openstack | ens33:192.168.9.137/24 | 安装所有 OpenStack 组件及需要的环境 |
实验需求
本章后续实验步骤用于实现以下需求:
(1)使用 packstack 一键部署 OpenStack。
(2)创建云主机(OpenStack 中的虚拟机)。
实现思路
本章案例的实现思路大致如下:
(1)安装前的准备工作。
(2)使用 packstack 一键部署 OpenStack。
(3)通过 Dashboard 体验 OpenStack 功能。
在线安装前准备工作
正式部署 OpenStack 之前,首先要准备如下环境。
准备虚拟机
实验所需虚拟机可以通过 VMware 等软件实现。虚拟机需要配置静态 IP 地址、网关及 DNS 参数,并测试网络连通性(具体过程略)。不过在配置 IP 地址的时候不要有 “DOMAIN=x.x.x.x” 这一行,因为这会影响 nova 配置文件内 host 的配置项,从而
导致可用域不可用,无法创建虚拟机。后面离线部署也要注意此问题。
修改主机名
[root@localhost ~]# hostnamectl set - hostname openstack
[root@localhost ~]# bash
[root@openstack ~]#
更新系统并安装常用软件
[root@openstack ~]# yum - y update
[root@openstack ~]# yum -y install vim wget net-tools lrzsz
关闭防火墙并取消开机启动
[root@openstack ~]# systemctl stop firewalld
[root@openstack ~]# systemctl disable firewalld
禁用 NetworkManager
[root@openstack ~]# systemctl stop NetworkManager
[root@openstack ~]# systemctl disable NetworkManager
禁用Seliux
[root@openstack ~]# cat /etc/sysconfig/selinux
plaintext
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
添加 hosts 绑定
plaintext
[root@openstack ~]# cat /etc/hosts
192.168.9.137 openstack //如果不绑 host,在创建云主机之后无法通过控制台方式访问云主
使用 packstack 一键在线部署 OpenStack
完成环境准备之后,通过 packstack 工具部署 OpenStack。packstack 是自动署 OpenStack 的工具,通过它可以帮助管理员完成 OpenStack 的自动部署。
首先通过 YUM 源安装 packstack 工具,然后利用 packstack 工具一键部 OpenStack,具体操作步骤如下所示。
Train 版 YUM 源安装
最小化安装 CentOS 7.3 的操作系统执行 update 升级之后,操作系统就会被级到 CentOS 7.7 版本。系统默认会提供 CentOS 的官方 YUM 源,在源中包含了前支持的 OpenStack 四个版本,分别是:Queens、Rocky、Stein、Train。本章案选择安装 Train 版本
[root@openstack ~]# yum install -y centos-release-openstack-train
Train 版本的 OpenStack 安装源部署完成之后,在 /etc/yum.repos.d/
目录下会自动生成 YUM 配置文件。
Packstack 软件包安装
完成 YUM 源配置之后,通过 YUM 安装 openstack-packstack
软件包。
[root@openstack ~]# yum install -y openstack-packstack
Packstack 一键部署 OpenStack
管理员只需在控制台上输入一条命令,所有的工作皆由 packstack 自动完成,packstack 工具会将所有的 OpenStack 组件部署到同一台服务器中。在实际工作中,考虑到负载分担以及冗余,建议将 OpenStack 组件分别部署到不同的服务器中,请留意后续章节关于 OpenStack 多节点安装部分内容。
OpenStack 安装只需执行以下命令即可。当界面中出现 “successfully” 时,说明 OpenStack 安装成功。
[root@openstack ~]# packstack --allinone
Welcome to the Packstack setup utility
The installation log file is available at: /var/tmp/packstack/20191205-113549-QSlfGn/openstack-setup.log
Packstack changed given value to required value /root/.ssh/id_rsa.pub
Installing:
Clean Up [ DONE ]
Discovering ip protocol version [ DONE ]
Setting up ssh keys [ DONE ]
Preparing servers [ DONE ]
Pre installing Puppet and discovering hosts' details [ DONE ]
Preparing pre-install entries [ DONE ]
Setting up CACERT [ DONE ]
Preparing AMQP entries [ DONE ]
Preparing MariaDB entries [ DONE ]
Fixing Keystone LDAP config parameters to be undef if empty[ DONE ]
OpenStack 安装完成之后,Linux 虚拟机桥 br - ex 中的 IP 地址是临时的,需要生成对应的配置文件。
[root@openstack network - scripts]# ifconfig
br - ex: flags = 4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.24.4.1 netmask 255.255.255.0 broadcast 172.24.4.255
inet6 fe80::50cc:ecff:fe19:e049 prefixlen 64 scopeid 0x20<link>
ether 52:cc:ec:19:e0:49 txqueuelen 1000 (Ethernet)
RX packets 1760 bytes 137052 (133.8 KiB)
RX errors 0 dropped 8 overruns 0 frame 0
TX packets 1648 bytes 158176 (154.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33: flags = 4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.9.137 netmask 255.255.255.0 broadcast 192.168.9.255
inet6 fe80::20c:29ff:fee9:c564 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:e9:c5:64 txqueuelen 1000 (Ethernet)
RX packets 17627 bytes 1434390 (1.3 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 23127 bytes 20570008 (19.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags = 73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 1039660 bytes 232980744 (222.1 MiB)
TX packets 1039560 bytes 232980744 (222.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@openstack network-scripts]# cp ifcfg-ens33 ifcfg-br-ex
[root@openstack network-scripts]# cat ifcfg-br-ex
TYPE=Ethernet
BOOTPROTO=none
NAME=br-ex
DEVICE=br-ex
ONBOOT=yes
IPADDR=172.24.4.1
PREFIX=24
[root@openstack network-scripts]#
至此,OpenStack 安装已完成。控制台消息的最后部分提示了环境变量文件与日志文件的位置,以及登录 Dashboard 的方法。根据提示在浏览器中输入 http://主机IP地址/dashboard
,即可登录 OpenStack 的 Horizon Web 界面进行相关操作。Horizon 可以与每个 OpenStack 项目 API 进行通信,所以使用此 Web 界面可以执行大部分任务。
离线安装前准备工作
如果网络较慢,无法通过 packstack 完成在线安装 OpenStack,可使用如下离线方式安装 OpenStack。首先要准备如下环境。
虚拟机准备
虚拟机的准备跟在线安装 OpenStack 类似。IP 地址配置如下所示。
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
BOOTPROTO=static
IPADDR="192.168.9.137"
PREFIX="24"
GATEWAY="192.168.9.1"
DNS1="114.114.114.114"
#DOMAIN=119.29.29.29 //不要出现 DOMAIN 配置项
另外,虚拟机的磁盘空间要确保大于 30G,以 40G 为宜,因为要存放离线包。
修改主机名
[root@localhost ~]# hostnamectl set-hostname openstack
[root@localhost ~]# bash
[root@openstack ~]#
安装常用软件并更新系统
[root@openstack ~]# yum -y install vim wget net-tools lrzsz createrepo yum-utils
[root@openstack ~]# yum -y update
关闭 firewalld 防火墙并取消开机启动
[root@openstack ~]# systemctl stop firewalld
[root@openstack ~]# systemctl disable firewalld
关闭 NetworkManager 并取消开机启动
[root@openstack ~]# systemctl stop NetworkManager
[root@openstack ~]# systemctl disable NetworkManager
禁用 Selinux
[root@openstack ~]# sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
[root@openstack ~]# setenforce 0
[root@openstack ~]# getenforce
Permissive
添加 hosts 绑定
[root@openstack ~]# cat /etc/hosts
192.168.9.137 openstack
使用 packstack 一键离线部署 OpenStack
离线部署的基础环境准备好之后,接下来通过 packstack 部署 OpenStack。首先需要上传离线包并构建离线安装源,然后通过离线 YUM 源安装 packstack 工具,最后利用 packstack 工具实现一键离线部署 OpenStack。具体操作步骤如下所示。
1. 上传并解压 Train 版离线安装包
[root@openstack ~]# mkdir /data && cd /data
[root@openstack data]# tar zxf openstack.tgz
[root@openstack data]# ll
total 412
drwxr-xr-x. 4 root root 38 Mar 24 22:29 base
drwxr-xr-x. 3 root root 12288 Mar 24 22:29 centos-ceph-nautilus
drwxr-xr-x. 3 root root 8192 Mar 24 22:29 centos-nfs-ganesha28
drwxr-xr-x. 3 root root 143360 Mar 24 22:31 centos-openstack-train
drwxr-xr-x. 3 root root 8192 Mar 24 22:32 centos-qemu-ev
drwxr-xr-x. 4 root root 38 Mar 24 22:32 extras
drwxr-xr-x. 3 root root 143360 Mar 24 22:34 openstack-train
drwxr-xr-x. 3 root root 8192 Mar 24 22:34 rdo-qemu-ev
drwxr-xr-x. 4 root root 38 Mar 24 22:46 updates
配置本地 YUM 源
[root@openstack ~]# cd /etc/yum.repos.d/
[root@openstack yum.repos.d]# mkdir backup
[root@openstack yum.repos.d]# mv *.repo backup/
[root@openstack yum.repos.d]# vim local.repo
[base]
name=base
baseurl=file:///data/base
gpgcheck=0
enabled=1
[centos-ceph-nautilus]
name=centos-ceph-nautilus
baseurl=file:///data/centos-ceph-nautilus
gpgcheck=0
enabled=1
[centos-nfs-ganesha28]
name=centos-nfs-ganesha28
baseurl=file:///data/centos-nfs-ganesha28
gpgcheck=0
enabled=1
[centos-openstack-train]
name=centos-openstack-train
baseurl=file:///data/centos-openstack-train
gpgcheck=0
enabled=1
[centos-qemu-ev]
name=centos-qemu-ev
baseurl=file:///data/centos-qemu-ev
gpgcheck=0
enabled=1
[extras]
name=extras
baseurl=file:///data/extras
gpgcheck=0
enabled=1
[openstack-train]
name=openstack-train
baseurl=file:///data/openstack-train
gpgcheck=0
enabled=1
enabled=1
[rdo-qemu-ev]
name=rdo-qemu-ev
baseurl=file:///data/rdo-qemu-ev
gpgcheck=0
enabled=1
[updates]
name=updates
baseurl=file:///data/updates
gpgcheck=0
enabled=1
本章中将 OpenStack 本地离线 YUM 源直接放到服务器内。如果是多人同可单独架设一台 Web 服务器用于存放这些离线包,相应的 local.repo 配置文件内改为 Web 服务器下离线包的路径地址。
更新 YUM 源数据
[root@localhost data]# createrepo /data/base/
[root@localhost data]# createrepo /data/centos-ceph-nautilus/
[root@localhost data]# createrepo /data/centos-nfs-ganesha28/
[root@localhost data]# createrepo /data/centos-openstack-train/
[root@localhost data]# createrepo /data/centos-qemu-ev/
[root@openstack data]# createrepo /data/extras/
[root@openstack data]# createrepo /data/openstack-train/
[root@openstack data]# createrepo /data/rdo-qemu-ev/
[root@openstack data]# createrepo /data/updates/
[root@openstack data]# yum clean all
[root@openstack data]# yum makecache
安装 openstack-packstack
[root@localhost ~]# yum -y install openstack-packstack
一键部署 OpenStack
完成前面的离线准备后,就可以使用 packstack 工具开始一键部署 OpenStack 软件。
[root@openstack ~]# packstack --allinone
Welcome to the Packstack setup utility
The installation log file is available at: /var/tmp/packstack/20200325-194236-5mUnew/openstack-setup.log
Packstack changed given value to required value /root/.ssh/id_rsa.pub
Installing:
Clean Up [ DONE ]
Discovering ip protocol version [ DONE ]
Setting up ssh keys [ DONE ]
Preparing servers [ DONE ]
Pre installing Puppet and discovering hosts' details [ DONE ]
Preparing pre-install entries [ DONE ]
Setting up CACERT [ DONE ]
Preparing AMQP entries [ DONE ]
部署完成之后,仿照上面在线部署,生成对应的 br - ex 网桥配置文件。
至此,OpenStack 的部署已经完成。可根据控制台提示的消息,登录 Dashboard 实现对 OpenStack 各种资源的管理。
通过 Dashboard 体验 OpenStack 功能
Horizon 是 OpenStack 的一个组件,同时也是 OpenStack 中 Dashboard(仪表板,即 Web 控制台)的项目名,主要用于 OpenStack 的管理,其底层通过 API 和 OpenStack 其他组件进行通信,为管理员提供 Web 页面,以方便操作管理。
在客户端的浏览器地址栏中输入 http://192.168.9.137/dashboard ,进入 Dashboard 的登录界面,如图 1.1 所示。需要注意的是,如果出现 500 错误页面,这是内部服务器错误,可重新启动服务器解决。
安装 OpenStack 后,在 root 用户的 Home 目录下会生成一个 keystonerc_admin 文件。该文件记录有 keystone(OpenStack 认证组件)认证的环境变量,包括用户名和登录密码。不同机器生成的默认密码是不同的,如下所示。
图片为 OpenStack 的 Dashboard 登录页面截图,显示了浏览器中访问 http://192.168.9.137/dashboard 后的登录界面,有 “openstack” 标志、“登录” 标题,以及用户名、密码输入框和 “进入” 按钮 。
[root@openstack ~]# cat keystonerc_admin
unset OS_SERVICE_TOKEN
export OS_USERNAME=admin
export OS_PASSWORD=81a7af7313ce46d2
export OS_REGION_NAME=RegionOne
export OS_AUTH_URL=http://192.168.9.137:5000/v3
export PS1='[\u@\h \W(keystone_admin)]\$ '
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_IDENTITY_API_VERSION=3
在 Web 控制台中输入用户名和密码登录后,是 Dashboard 的默认界面,如图 1.2 所示。如果登录后为英文界面,可以选择右上角进行语言设置。在用户设置中,选择语言为简体中文。
左边菜单栏主要分为项目、管理员、身份管理三项,下面开始逐个讲解。
项目
项目中主要包含访问 API、计算、卷、网络、对象存储五个分类。
访问 API
显示所有组件的服务端点,比如计算、注册等服务,如图 1.3 所示。
计算类
计算类主要有概况、实例、镜像、密钥对、主机组子类,如图 1.4 所示。
计算类中的子类
各子类功能如下:
- 概况:主要是云计算各资源的使用情况,“of” 后面的数字表示资源的上限限制,默认有一个安全组。
- 实例:所有创建过的云主机会在实例中显示,也可以新创建云主机。
- 镜像:所有的镜像都会在这显示,可以执行创建镜像和删除镜像等操作。
- 密钥对:可以创建密钥对通过远程免密码对云主机进行管理。
- 主机组:依据相关的配置策略针对用户创建的虚拟主机进行管理,主要是约束虚拟主机与虚拟主机在物理主机上部署关系。
卷类
- 云主机所用到的存储卷,可以创建卷和快照,
各子类功能如下:
- 卷:卷是可被连接到实例的块设备。
- 快照:为一个卷创建一个快照。
- 组:卷组提供了一种同时为多个卷创建快照的机制以确保数据一致性。一个卷组可以支持多种卷类型,但它包括的卷必须托管于同一个存储后端。
- 组快照:针对组,作统一快照。
网络类
网络类主要包含网络拓扑、网络、路由、安全组、浮动 IP、中继子类,
- 各子类功能如下:
- 网络拓扑:显示当前网络的拓扑结构,包含网络、路由器以及接口。
- 网络:显示已经创建的云主机网络,也可以新建网络或者编辑现有网络。默认就有一个公用的网络,子网为 172.24.4.0/24。
- 路由:用于将云主机的私有地址通过路由的方式转发到其他私有网络,或通过 NAT 转发到外部网络,实现网络通信。默认为空。
- 安全组:类似于防火墙的功能,可以通过安全组设置入口和出口规则,用于控制进出云主机的网络流量。
- 浮动 IP:一般用于外部网络访问云主机,类似于 NAT 目标地址转换。
- 中继:将父端口与子端口进行连接。
对象存储类
对象存储类主要包含容器子类,如图 1.7 所示。
图 1.7 对象存储类中的子类
容器表示存储数据的地方,和 Windows 的文件夹、Linux 的目录类似。
管理员
“管理员” 和 “项目” 选项卡具有相似的功能,但是权限不同。“管理员” 选项卡操作权限更高,但是仅限管理员用户操作。
概况
“管理员” 选项卡里面包含了很多功能。其中 “概况” 列出了不同项目各种资源的使用情况,如图 1.8 所示。
计算类
“管理员” 选项卡内的计算类拥有比 “项目” 的计算类选项卡内更多、更丰富的功能。拥有对系统资源更高的权限,有些操作只能在 “管理员” 选项卡的计算类内完成。具体的功能如图 1.9 所示。
每个子类对应的功能如下:
- 虚拟机管理器:当前所有虚拟机在 CPU、内存和磁盘三方面的的使用情况。
- 主机聚合:通过将主机组合到一起来把可用区域划分成逻辑单元。
- 实例:列出已经存在的所有云主机,不包括创建实例选项。
- 实例类型:创建云主机的规格,比如 CPU 数量、内存容量、硬盘容量。默认会提供部分实例类型,也可以根据需求进行自定义。
- 镜像:列出所有的镜像,可以执行创建镜像和删除镜像等操作。
卷类
卷应用到 OpenStack 的数据存储。“管理员” 选项卡下的 “卷” 比 “项目” 下的 “卷” 多了两个功能,分别是 “卷类型” 和 “组类型”,如图 1.10 所示。
每个子类对应的功能如下:
- 卷:不同于 “项目” 中的 “卷”,管理员选项卡下不能创建 “卷”,适用于对 “卷” 的各种管理操作。
- 快照:为卷创建的快照,可进行 “删除卷快照” 和 “更新元数据” 等操作。
- 卷类型:在 OpenStack 中创建卷时,选择一个类型或者标签,被称为卷类型。针对这个卷,卷类型通常是指后端存储驱动程序的一组指标。
- 组:卷组提供了一种同时为多个卷创建快照的机制以确保数据一致性。一个卷组可以支持多种卷类型,但它包括的卷必须托管于同一个存储后端。
- 组快照:针对组,作的统一快照。
- 组类型:组类型是在 OpenStack 创建组的时候可以指定的一个类型或标签。它通常映射到这个组所使用的存储后端驱动器的性能指标集合。
网络类
“管理员” 选项卡内的网络类基本功能和 “项目” 相比,多了 “RBAC 策略”,少了 “安全组”,
每个子类对应的功能如下:
- 网络:显示已经创建的云主机网络,也可以新建网络或者编辑现有网络。默认就有一个公用的网络,其子网为 172.24.4.0/24。
- 路由:用于将云主机的私有地址通过路由的方式转发到其他私有网络,或通过 NAT 转发到外部网络,实现网络通信。默认为空。
- 浮动 IP:是一些可以从外部访问的 IP 列表,通常从 ISP 那里买来的。浮动 IP 缺省不会自动赋给实例,用户需要手动从地址池里抓取然后赋给实例。
- 中继:将父端口与子端口进行连接。
- RBAC 策略:基于角色的访问控制(RBAC)策略框架允许运营商和用户授予对特定项目的资源访问权。
系统类
系统类是 “管理员” 选项内独有的,它包含:“默认值”,“元数据定义” 和 “系统信息” 三个子类。、
每个子类对应的功能如下:
- 默认值:也可以称作 “限制值”,通常包括三个方面的配额值,分别是 “计算配额”、“卷配额” 和 “网络配额”。
- 元数据定义:通常用来定义命名空间,在导入命名空间时,只支持裸 JSON 格式。系统管理员在导入时可使用 glance-manage 命令实现。
- 系统信息:列举了 “服务”、“计算服务”、“块存储服务” 和 “网络代理” 四个方面的相关信息。
身份管理
身份管理主要有项目、用户、组、角色等分类,如图 1.13 所示。
系统类是 “管理员” 选项内独有的,它包含:“默认值”,“元数据定义” 和 “系统信息” 三个子类。图
每个子类对应的功能如下:
- 默认值:也可以称作 “限制值”,通常包括三个方面的配额值,分别是 “计算配额”、“卷配额” 和 “网络配额”。
- 元数据定义:通常用来定义命名空间,在导入命名空间时,只支持裸 JSON 格式。系统管理员在导入时可使用 glance-manage 命令实现。
- 系统信息:列举了 “服务”、“计算服务”、“块存储服务” 和 “网络代理” 四个方面的相关信息。
身份管理
身份管理主要有项目、用户、组、角色等分类,如图 1.13 所示。
- 项目:显示当前所有的项目,即租户。
- 用户:显示当前所有的用户。
- 组:显示当前所有的组。
- 角色:显示当前所有的角色。
- 应用程序凭证:应用程序凭据提供了一种在不共享用户密码身份验证的情况下将用户授权委派给应用程序的方法。
创建云主机
了解了控制台的基本功能之后,开始尝试通过 OpenStack 创建一台云主机。
一台云主机成功创建或启动需要依赖 OpenStack 中的各种虚拟资源,如 CPU、内存、硬盘等。如果需要云主机连接外部网络,还需要网络、路由器等资源。如果需要外部网络访问云主机,那么还需要配置浮动 IP。因此,在创建云主机之前,首先要保证所需的资源已经配置完成。
本章实验中,使用默认的实例类型 m1.tiny(1CPU、512MB 内存、1GB 根分区磁盘),新创建网络 private,并通过路由器 my_route 将虚拟机所在的 private 网络路由(同时执行 NAT 转换)到外部网络 public,创建云主机并使其可以访问外部网络。
在实验过程中,创建了云主机之后,如果某页面无法打开,可观察虚拟机内存使用情况,必要时增加些内存,再继续进行实验。
创建网络
管理员成功登录 Dashboard 后,执行以下操作可以创建一个自定义的网络。
1、在控制台中依次单击 “项目”→“网络”→“网络” 按钮。在右边区域默认存在公有网络 public
2、单击右上角 “+ 创建网络” 按钮,在弹出的创建网络界面中,输入网络名称为 “private”,保持默认的复选框状态,单击 “下一步” 按钮,如图 1.15 所示。
图片为 OpenStack Dashboard 中项目 - 网络 - 网络页面截图,展示默认存在的公有网络 public 信息,包含名称、已连接的子网等,蓝色框标注 “默认存在公有网络 public” 。
3、 在子网信息页面,输入子网名称、网络地址等参数,网关 IP 字段如果保持为空,表示网关是使用该网络的第一个地址,即 x.x.x.1 为网关地址。如果不希望该网络中的虚拟机通过该网络访问其他网络,可勾选 “禁用网关”,单击 “下一步” 按钮。
4、完成镜像的创建后,下面开始创建云主机。依次单击 “项目”→“计算”→“实例” 按
钮,在右边区域中没有任何实例存在。创建云主机需要单击右上角 “创建实例” 按钮,
5、在弹出的创建实例中的 “详情” 页面,填写实例名称为 “test”,其他字段保持默认设置,并单击 “下一项” 按钮,
6、操作步骤相关:在创建云主机流程的 “源” 页面操作,选择源为 “镜像” ,填写标签大小,选可用镜像 “cirros01” 并点其右边上箭头,之后点 “下一步” ,
7、在 “实例类型” 页面,选择资源占用最少的实例类型,单击页面下方名称为 “m1.tiny” 的实例类型右边的上箭头 ,完成后单击 “下一项” 按钮。
8、在 “网络” 页面中,选择云主机连接的私有网络,单击之前创建的名称为 “private” 网络右边的箭头,保证 private 网络置于可分配,如图 1.33 所示。后续的步骤保持默认即可,最后直接单击 “创建实例” 按钮创建云主机。
9、在弹出的实例列表面页中,可以看到已创建的云主机。创建实例有一个过程,需要执行块设备映射等操作,主要看硬件和网络的性能,可能需要等待几秒或者十几秒钟,最后看到成功运行。
管理云主机并测试连通性
1、云主机启动成功后,单击云主机 test 中 “创建快照” 按钮右边的下拉菜单,并选择 “控制台” 按钮,如图 1.35 所示。
2、在弹出的控制台页面中,单击 “点击此处只显示控制台” 超链接,进入云主机的控制台页面,如图 1.36 所示。如果控制台页显示黑屏,同时按下 “Ctrl+Alt” 按钮即可。
3、根据控制台提示信息,输入登录用户名:cirros,密码:gocubsgo。如果进入 $ 提示符的 shell 终端,说明已经成功登录,
4、在云主机控制台中运行 ifconfig 命令,从命令输出结果中可以看到,云主机已经通过 private 网络中的 DHCP 自动获取到 IP 地址:192.168.100.200
5、在云主机上测试连接 baidu.com 和 Windows 本机 IP 的连通性,如图 1.39 所示。
$ ping -c 1 baidu.com
PING baidu.com (123.125.115.110): 56 data bytes
64 bytes from 123.125.115.110: seq=0 ttl=143 time=27.730 ms
--- baidu.com ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 27.730/27.730/27.730 ms
$ ping -c 1 192.168.9.232
PING 192.168.9.232 (192.168.9.232): 56 data bytes
64 bytes from 192.168.9.232: seq=0 ttl=126 time=3.041 ms
--- 192.168.9.232 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 3.041/3.041/3.041 ms
注意:如果 ping 外网不通,请检查 ifcfg-br-ex 配置文件并查看宿主机 br-ex 网卡是否启动。如果没有启动,需要执行以下命令:
[root@openstack ~]# ifconfig br-ex 172.24.4.1 netmask 255.255.255.0 up
再次测试,如果还是 ping 外网不通,检查下 Linux 虚拟机是否开启了路由转发。若没开启,可执行如下命令开启。
[root@localhost ~]# vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@localhost ~]# sysctl -p
至此,已经基本完成 OpenStack 入门体验。但在实际生产环境中,无论是搭建部署还是运维操作都要更加复杂,需要多加练习基本操作。
主要实体是关于 OpenStack 入门体验的总结,提及实际生产环境中搭建部署、运维操作更复杂,需多练习基本操作 。