目录
四. 通过 Dashboard 体验OpenStack 功能
一. 云计算概述
1. 什么是云计算
云计算(cloud computing)是一种基于网络的超级计算模式,基于用户的不同需求,提供所需的资源,包括计算资源、存储资源、网络资源等。云计算服务运行在若干台高性能物理服务器之上,提供每秒 10 万亿次的运算能力,可以用于模拟核爆炸、预测气候变化以及市场发展趋势。
云计算有广义和狭义之分。
- 狭义的云计算是指通过网络按需向用户提供 I 基础设施,包括硬件、平台和软件,提供资源的网络被称为“云”。在使用者看来,“云”中的资源是无限大的,无论需要多少资源,云都可以提供。而在云端,所有的资源都可以通过横向进行扩展,如同使用水电煤气一样。以用电为例,如果用户自行发电,那么用户需要维护一台发电机,定期加油,出现问题需要维修。而如果使用公共电网,用户不需要知道发电厂在哪里、怎么发电等问题,只需要按需付费使用就可以,多用多付,少用少付。在用户看来,电的资源是无限的。
- 广义的云计算是指服务的交付和使用模式,通过网络以按需、易扩展的方式获得所需的服务。这种服务可以是IT 和软件、互联网相关的,也可以是任意其他的服务。
云计算是一种模型,提供无论在何时何地都可以便捷获取所需资源的模型,并能够让用户根据需要快速创建应用,并且在不需要时进行资源释放。
现在云计算技术已经日渐成熟,很多企业已经拥有自己的私有云,而掌握这种技术的人才也更为抢手。目前,云计算使用最广泛的是开源项目 OpenStack。经过多个版本的开发更新,现在已经到丅版。作为云计算项目之一的 OpenStack 也受到各个企业的青睐,成为大家搭建私有云的首选。
2. 云计算的服务模型
云计算模型中有 laaS (Infrastructure as aService,基础架构即服务)、PaaS(PlatformasaService,平台即服务)、SaaS(Software asaService,软件即服务)三种基本服务模型。
2.1 laaS
laaS 提供最底层的IT 基础设施服务,包括处理能力、存储空间、网络资源等。用户可以从中获取硬件或者虚拟硬件资源(包括裸机或者虚拟机),之后可以给申请到的资源安装操作系统和其他应用程序。一般面向的对象是I管理人员。
2.PaaS
PaaS 是把已经安装好开发环境的系统平台作为一种服务通过互联网提供给用户。用户可以在上面安装其他应用程序,但不能修改已经安装好的操作系统和运行环境。一般面向的对象是开发人员,需要了解平台提供环境下的应用开发和部署。
3.SaaS
SaaS 可直接通过互联网为用户提供软件和应用程序等服务。用户可以通过租赁的方式获取安装在厂商或者服务供应商那里的软件。一般面向的对象是普通用户,最常见的模式是提供给用户一组账号和密码。
二. OpenStack 概述
1.OpenStack 起源
OpenStack 是 Rackspace(一家美国的云计算厂商)和美国国家航空航天局(National Aeronautics and Space Administration,简称NASA)在 2010年7月共同发起的项目。由 Rackspace 贡献存储源码(Swift)、NASA 贡献计算源码(Nova)。
2.什么是 OpenStack
OpenStack是一个通过数据中心控制计算资源、存储资源和网络资源的云平台。同时它又是一款开源软件,以 Apache 许可证授权的自由软件和开放源代码项目,支持所有类型的云环境。OpenStack 的目标是提供简单实施、可扩展以及丰富功能集的云产品,来自全世界的云计算专家共同维护该云项目。OpenStack通过多种补充服务提供了laaS解决方案,每一种服务均提供了相应的应用程序接口(Application Programming Interface,简称 API),以促进各组件之间的整合。
OpenStack 被用来提供公有云以及私有云的建设以及管理。作为一个开源项目,其社区规模涵盖 130 家企业以及 1350 位开发人员。这些机构与个人都将 OpenStack 作为laaS资源的通用前端。
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 在控制性、兼容性、可扩展性、灵活性方面具备有优势,它可能成为云计算领域的行业标准。
- 控制性:完全开源的平台,模块化的设计,提供相应的 API接口,方便与第三方技术集成,从而满足自身业务需求。
- 兼容性:OpenStack兼容其他公有云,方便用户进行数据迁移
- 可扩展性:Openstack采用模块化的设计,支持主流的Linux 发行版本,可以通过横向扩展,增加节点、添加资源。
- 灵活性:用户可以根据自己的需要建立基础设施,也可以轻松地为自己的群集增加规模。
- Openstack 项目采用 Apache2 许可,意味着第三方厂家可以重新发布源代码。
- 行业标准:众多I 领军企业都加入到 OpenStack 项目,意味着 OpenStack 在未来可能形成云计算行业标准。
三. OpenStack一键部署
使用 packstack 工具实现一键部署 OpenStack。通过该安装工具,只需简单运行一条命令,即可快速部署 OpenStack,省去繁琐的安装步骤,直接体验 OpenStack的管理及使用。
1. 环境介绍
需要提前部署一台新安装操作系统的主机,要求能访问互联网,主机的系统只需采用最小化方式安装。若通过 VMware 等虚拟机软件实现,网络采用桥接模式。
使用操作系统为 CentOS 7.3 的主机。
安装部署 OpenStack 环境的硬件设备最低配置要求。
类型 | 最低配置要求 |
CPU | 支持 Intel 64 或 AMD64 CPU 扩展, 并启用了 AMD-V 或 Intel VT 硬件虚拟化支持的 64 位 x86 处理器,逻辑 CPU 个数为4核 |
内存 | 8GB |
磁盘空间 | 30GB |
案例环境
主机名 | IP 地址/掩码 | 角色 |
openstack | ens33:192.168.10.200/24 | 安装所有 Openstack 组件及需要的环境 |
2. 安装前操作
所需虚拟机可以通过 VMware 等软件实现。虚拟机需要配置静态 IP 地址、网关及 DNS 参数,并测试网络连通性(具体过程略)。不过在配置 IP 地址的时候不要有“DOMAIN=x.x.x.x”这一行,因为这会影响 nova 配置文件内 host 的配置项,从而导致可用域不可用,无法创建虚拟机。后面离线部署也要注意此问题。
最小安装虚拟机
修改network 更新源仓库 关闭防火墙和网卡网络管理器
vi /etc/sysconfig/network-scripts/ifcfg-ens33 //修改ip等配置UUID删除
BOOTPROTO=static
IPADDR=192.168.10.101
NETMASK=255.255.255.0
GATEWAY=192.168.10.254
DNS1=114.114.114.114
DNS2=8.8.8.8
ONBOOT=yes
systemctl restart network
设置阿里的yum仓库
rm -rf /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum update
yum -y install bzip2 vim net-tools wget psmisc lsof lrzsz
关闭虚拟机 最少四核处理器 8G内存
setenforce 0
systemctl stop firewalld
systemctl disable firewalld
vim /etc/selinux/config
selinux=disabled
systemctl stop NetworkManager
修改主机名
hostnamectl set-hostname openstack
bash
开启路由转发
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
3. 安装openstack
有两种方法
第一种
在文件末尾添加
安装完后看到succesfully
第二种(这里的ip地址是通过它是获取KVM/QEMU相关软件包)
cd /etc/yum.repos.d
rm -rf *
vim CentOS-Base.repo
[bash]
name=base
baseurl=ftp://192.168.2.149/repo/yum-base
gpgcheck=0
enabled=1
vim train.repo
[train]
name=train
baseurl=ftp://192.168.2.149/repo/yum-train
gpgcheck-0
enabled=1
[kvm]
name=kvm
baseutl=ftp://192.168.2.149/repo/yum-qemu
gpgcheck=0
enabled=1
yum clean all
yum makeche
yum -y install openstack-packstack
packstack --allinone
4. 添加虚拟网桥
记用户名和密码
四. 通过 Dashboard 体验OpenStack 功能
Horizon 是 OpenStack 的一个组件,同时也是OpenStack 中 Dashboard(仪表板,即 Web 控制台)的项目名,主要用于 OpenStack 的管理,其底层通过 API 和OpenStack 其他组件进行通信,为管理员提供Web 页面,以方便操作管理。
在客户端的浏览器地址栏中输入 http:/192.168.10.200,进入Dashboard 的登录界面
安装 OpenStack 后,在 root 用户的 Home 目录下会生成一个 keystonerc admin文件。该文件记录有 keystone(OpenStack认证组件)认证的环境变量,包括用户名和登录密码。不同机器生成的默认密码是不同的
1. 项目
项目中主要包含访问API、计算、卷、网络、对象存储五个分类
(1) 访问API
显示所有组件的服务端点,比如计算、注册等服务
(2) 计算类
计算机主要有概况、实例、镜像、密钥对、主机组子类
- 概况:主要是云计算各资源的使用情况,“of”后面的数字表示资源的上限限制,默认有一个安全组。
- 实例:所有创建过的云主机会在实例中显示,也可以新创建云主机。
- 镜像:所有的镜像都会在这显示,可以执行创建镜像和删除镜像等操作。
- 密钥对:可以创建密钥对通过远程免密码对云主机进行管理。
- 主机组:依据相关的配置策略针对用户创建的虚拟主机进行管理,主要是约束虚拟主机与虚拟主机在物理主机上部署关系。
(3) 卷类
云主机所用到的存储卷,可以创建卷和快照
- 卷:卷是可被连接到实例的块设备。
- 快照:为一个卷创建一个快照。
- 组:卷组提供了一种同时为多个卷创建快照的机制以确保数据一致性。一个卷组可以支持多种卷类型,但它包括的卷必须托管于同一个存储后端。
- 组快照:针对组,作统一快照。
(4) 网络类
网络类主要包含网络拓扑、网络、路由、安全组、浮动 IP、中继子类
- 网络拓扑:显示当前网络的拓扑结构,包含网络、路由器以及接口。网络:显示已经创建的云主机网络,也可以新建网络或者编辑现有网络。默认就有一个公用的网络,子网为 172.24.4.0124。
- 路由:用于将云主机的私有地址通过路由的方式转发到其他私有网络,或通过 NAT转发到外部网络,实现网络通信。默认为空。
- 安全组:类似于防火墙的功能,可以通过安全组设置入口和出口规则,用于控制进出云主机的网络流量。
- 浮动 IP:一般用于外部网络访问云主机,类似于NAT目标地址转换
- 中继:将父端口与子端口进行连接
(5) 对象存储类
对象存储类主要包含容器子类
容器表示存储数据的地方,和Windows的文件夹、linux的目录类似
2. 管理员
"管理员”和“项目”选项卡具有相似的功能,但是权限不同。"管理员”选项卡操作权限更高,但是仅限管理员用户操作。
(1)概况
"管理员"选项卡里面包含了很多功能。其中“概况”列出了不同项目各种资源的使用情况
(2) 计算类
"管理员”选项卡内的计算类拥有比“项目”的计算类选项卡内更多、更丰富的功能。拥有对系统资源更高的权限,有些操作只能在"管理员"选项卡的计算类内完成
- 虚拟机管理器:当前所有虚拟机在CPU、内存和磁盘三方面的的使用情况。
- 主机聚合:通过将主机组合到一起来把可用区域划分成逻辑单元。
- 实例:列出已经存在的所有云主机,不包括创建实例选项。
- 实例类型:创建云主机的规格,比如CPU数量、内存容量、硬盘容量。默认会提供部分实例类型,也可以根据需求进行自定义。
- 镜像:列出所有的镜像,可以执行创建镜像和删除镜像等操作。
(3)卷类
卷应用到 OpenStack 的数据存储。“管理员”选项卡下的“卷”比“项目”下的“卷”多了两个功能,分别是“卷类型”和“组类型”
- 卷:不同于“项目”中的“卷”,管理员选项卡下不能创建“卷”,适用于对“卷”的各种管理操作。
- 快照:为卷创建的快照,可进行“删除卷快照"和“更新元数据"等操作。
- 卷类型:在 OpenStack中创建卷时,选择一个类型或者标签,被称为卷类型。
- 针对这个卷,卷类型通常是指后端存储驱动程序的一组指标。
- 组:卷组提供了一种同时为多个卷创建快照的机制以确保数据一致性。一个卷组可以支持多种卷类型,但它包括的卷必须托管于同一个存储后端。
- 组快照:针对组,作的统一快照。
- 组类型:组类型是在 OpenStack 创建组的时候可以指定的一个类型或标签。它通常映射到这个组所使用的存储后端驱动器的性能指标集合。
(4) 网络类
“管理员”选项卡内的网络类基本功能和“项目"相比,多了“RBAC 策略",少了“安全组”
- 网络:显示已经创建的云主机网络,也可以新建网络或者编辑现有网络。默认就有一个公用的网络,其子网为172.24.4.0124。
- 路由:用于将云主机的私有地址通过路由的方式转发到其他私有网络,或通过 NAT转发到外部网络,实现网络通信。默认为空。
- 浮动 IP:是一些可以从外部访问的IP列表,通常从ISP那里买来的。浮动IP 缺省不会自动赋给实例,用户需要手动从地址池里抓取然后赋给实例。
- 中继:将父端口与子端口进行连接。
- RBAC 策略:基于角色的访问控制(RBAC)策略框架允许运营商和用户授予对特定项目的资源访问权。
(5) 系统类
系统类是管理员选项内独有的,包含默认值、元数据定义和系统信息三个子类
- 默认值:也可以称作“限制值”,通常包括三个方面的配额值,分别是“计算配额”、“卷配额”和“网络配额”。
- 元数据定义:通常用来定义命名空间,在导入命名空间时,只支持裸JSON格式。系统管理员在导入时可使用 glance-manage 命令实现。
- 系统信息:列举了“服务”、“计算服务”、“块存储服务"和“网络代理”四个方面的相关信息。
3.身份管理
身份管理主要有项目、用户、组、角色等分类
- 项目:显示当前所有的项目,即租户
- 用户:显示当前所有的用户。
- 组:显示当前所有的组。
- 角色:显示当前所有的角色。
- 应用程序凭证:应用程序凭据提供了一种在不共享用户密码身份验证的情况下将用户授权委派给应用程序的方法。
五. 配置OpenStack
了解了控制台的基本功能之后,开始尝试通过 OpenStack 创建一台云主机。
一台云主机成功创建或启动需要依赖 OpenStack中的各种虚拟资源,如 CPU、内存、硬盘等。如果需要云主机连接外部网络,还需要网络、路由器等资源。如果需要外部网络访问云主机,那么还需要配置浮动IP。因此,在创建云主机之前,首先要保证所需的资源已经配置完成。
使用默认的实例类型 m1.tiny(1CPU、512MB 内存、1GB 根分区磁盘),新创建网络 private,并通过路由器 my_route 将虚拟机所在的 private 网络路由(同时执行NAT转换)到外部网络public,创建云主机并使其可以访问外部网络。
在实验过程中,创建了云主机之后,如果某页面无法打开,可观察虚拟机内存使用情况,必要时增加些内存,再继续进行实验。
1. 创建网络
管理员成功登录 Dashboard 后,执行操作可以创建一个自定义的网络
①在控制台中依次单击“计算”→“网络”→“网络”按钮。在右边区域默认存在公有网络 public,可以删除重新建一个 记得删除的时候一定要先删除管理员里面的网络-->找到路由,先删除路由-->再删除网络
②单击右上角“+创建网络”按钮,在弹出的创建网络界面中,输入网络名称为"private”,保持默认的复选框状态,单击“下一步”按钮
③ 在子网信息页面,输入子网名称、网络地址等参数,网关 IP 字段如果保持为空,表示网关是使用该网络的第一个地址,即x.x.x.1为网关地址。如果不希望该网络中的虚拟机通过该网络访问其他网络,可勾选“禁用网关",单击“下一步"按钮
④在子网详情页面中,可以配置 DHCP,向该网络中的云主机自动分配 IP 地址。如需配置 DHCP,保持“激活 DHCP”为勾选状态,分配地址池栏中,输入需要分配 IP地址的范围,首地址和末地址以逗号分割,DNS服务器中输入需要分配的 DNS地址,这通常是网络中真实的 DNS 服务器地址。单击“创建"按钮
⑤完成网络创建操作后,在网络列表页面中会显示已创建成功的网络
2. 创建路由
创建路由的目的是为了云主机所在的私有网络和外部网络所在的公有网络之间实现进行信息的转发,让云主机可以访问外部网络。
①在控制台中依次单击“项目”→“网络”→“路由”按钮
②单击右上角的“+新建路由”按钮,在弹出的新建路由页面,填写路由名称my_route,外部网络选择默认的公有网络 public,复选框保持默认,完成后单击“新建路由”按钮
③在路由列表页面可以看到之前创建的路由器(虚拟路由器),如图 1.21 所示新的路由器创建完成后默认存在一个外部接口,并关联到外部网络中。除此之外,还需要增加一个接口并关联到内部网络 private,从而实现两个网络之间转发数据。
④ 在图 1.21 中,单击右边区域的路由器名称“my_route”超链接,进入路由器详细信息页面。在弹出的路由器详细信息页面中,单击“接口"标签
⑤单击“+增加接口”按钮,在弹出的增加接口页面,选择子网为之前创建的 private 私有网络,|P 地址栏可以留空,默认为 private 网络的网关地址(192.168.10.254)。完成后单击“提交"按钮
⑥完成后单击“提交"按钮之后,即可返回路由配置页面,可以看到创建成功的接口
⑦完成创建网络和创建路由之后,再次查看网络拓扑。
依次单击“项目”→“网络”→“网络拓扑”按钮,在右边的网络拓扑区域已经多了一个私有网络,并且私有网络和公有网络之间通过路由器连接
3. 创建云主机
完成网络和路由部分的配置之后,开始创建第一台云主机。
①核实镜像的大小,依次单击“项目”→“计算”→“镜像”按钮,可以看到 cirrors 镜像的大小仅为 273 字节,如果使用此镜像创建云主机,则会报错,所以首先要上传制作正确的镜像。
②点击右侧的“+创建镜像”,在弹出的页面内填写镜像信息。镜像名称填写“centos01”,镜像源通过“浏览"的方式选择到 CentOS-7-x86_64-Minimal-1810.ios,镜 像 格式选择“QCOW2",将镜像的可见性选为"公有”,最后点击创建镜像。
③镜像创建完成后,大小为 15M 左右,远大于 273K
④完成镜像的创建后,下面开始创建云主机。依次单击“项目”→“计算”→“实例”按钮,在右边区域中没有任何实例存在。创建云主机需要单击右上角“创建实例”按钮,
⑤在弹出的创建实例中的“详情"页面,填写实例名称为"test",其他字段保持默认设置,并单击“下一项”按钮
⑥在“源"页面,选择源一栏中通过下拉菜单选择“镜像”,填写好卷大小,并单击页面下方列出的可用镜像“centos01"右边的上箭头,完成后单击“下一步”按钮。
⑦在“实例类型"页面,选择资源占用最少的实例类型,单击页面下方名称为“m1.tiny"的实例类型右边的上箭头,完成后单击“下一项"按钮
⑧在“网络"页面中,选择云主机连接的私有网络。单击之前创建的名称为“private网络右边的箭头,保证 private 网络置于可分配,最后直接单击“创建实例"按钮创建云主机。
⑨在弹出的实例列表页面中,可以看到已创建的云主机。创建实例有一个过程,需要执行块设备映射等操作,主要看硬件和网络的性能,可能需要等待几秒或者十几秒钟,最后看到成功运行
4. 管理云主机并测试连通性
①云主机启动成功后,单击云主机test 中"创建快照"按钮右边的下拉菜单,并选择“控制台"按钮,
②在弹出的控制台页面中,单击“点击此处只显示控制台"超链接,进入云主机的控制台页面,如果控制台页显示黑屏,同时按下"Ctrl+Alt”按钮即可。
③根据控制台提示信息,输入登录用户名:cirros,密码:gocubsg0。如果进入$提示符的 shell 终端,说明已经成功登录
④在云主机控制台中运行 ifconfig 命令,从命令输出结果中可以看到,云主机已经通过 private 网络中的 DHCP 自动获取到 IP 地址 192.168.100.201
⑤在云主机上测试连接 baidu.com 和 Windows 本机 IP 的连通性
注意:如果 ping 外网不通,请检査 ifcfg-br-ex 配置文件并査看宿主机 br-ex 网卡是否启动。如果没有启动,需要执行以下命令:
root@openstack ~]# ifconfig br-ex 192.168.10.200 netmask 255.255.255.0 up
再次测试,如果还是 ping 外网不通,检査下 Linux 虚拟机是否开启了路由转发。