一、云计算概述
1.1 云计算的定义与本质
云计算(Cloud Computing)是一种基于网络的超级计算模式,它能够根据用户的不同需求,动态提供所需的计算资源、存储资源和网络资源等。这种模式就像我们日常生活中使用水电煤气一样,用户无需关心资源的生产和维护过程,只需按需付费即可。
从狭义上讲,云计算是通过网络按需向用户提供 IT 基础设施,包括硬件、平台和软件,提供资源的网络被称为 "云"。在用户眼中,"云" 中的资源是无限的,并且可以通过横向扩展来满足不断增长的需求。
广义的云计算则是指服务的交付和使用模式,通过网络以按需、易扩展的方式获得所需的服务。这种服务不仅限于 IT 和软件领域,还可以是任意其他类型的服务。
1.2 云计算的三种服务模型
1.2.1 IaaS(基础设施即服务)
IaaS 提供最底层的 IT 基础设施服务,包括计算能力、存储空间、网络资源等。用户可以从中获取硬件或虚拟硬件资源(如裸机或虚拟机),然后在这些资源上安装操作系统和其他应用程序。IaaS 一般面向的是 IT 管理人员,他们需要对基础设施进行配置和管理。
1.2.2 PaaS(平台即服务)
PaaS 把已经安装好开发环境的系统平台作为一种服务通过互联网提供给用户。用户可以在这个平台上安装其他应用程序,但不能修改已经安装好的操作系统和运行环境。PaaS 主要面向开发人员,他们需要了解平台提供环境下的应用开发和部署。
1.2.3 SaaS(软件即服务)
SaaS 可直接通过互联网为用户提供软件和应用程序等服务。用户可以通过租赁的方式获取安装在厂商或服务供应商那里的软件,一般只需一组账号和密码即可使用。SaaS 面向的是普通用户,无需关心软件的安装和维护。
二、OpenStack 概述
2.1 OpenStack 的起源与发展
OpenStack 是由 Rackspace(一家美国的云计算厂商)和美国国家航空航天局(NASA)在 2010 年 7 月共同发起的项目。其中,Rackspace 贡献了存储源码(Swift),NASA 贡献了计算源码(Nova)。经过多年的发展,OpenStack 已经成为云计算领域最受欢迎的开源项目之一,截至目前,其最新版本已更新到 Train 版,并且每半年左右会更新一次版本。
2.2 OpenStack 的定义与功能
OpenStack 是一个通过数据中心控制计算资源、存储资源和网络资源的云平台,同时它也是一款以 Apache 许可证授权的自由软件和开放源代码项目,支持所有类型的云环境。其目标是提供简单实施、可扩展以及功能丰富的云产品,由来自全世界的云计算专家共同维护。
OpenStack 通过多种补充服务提供了 IaaS 解决方案,每一种服务均提供了相应的应用程序接口(API),以促进各组件之间的整合。它被广泛用于公有云以及私有云的建设和管理,其社区规模涵盖了 130 家企业以及 1350 位开发人员,这些机构与个人都将 OpenStack 作为 IaaS 资源的通用前端。
2.3 OpenStack 的核心项目
OpenStack 包含多个核心项目,以下是常见的 8 个核心项目及其功能:
服务 | 项目名称 | 功能描述 |
---|---|---|
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 用户提供记账途径 |
2.4 OpenStack 的优势
OpenStack 在多个方面具备显著优势,使其有可能成为云计算领域的行业标准:
- 控制性:完全开源的平台,模块化的设计,提供相应的 API 接口,方便与第三方技术集成,从而满足自身业务需求。
- 兼容性:OpenStack 兼容其他公有云,方便用户进行数据迁移。
- 可扩展性:采用模块化的设计,支持主流的 Linux 发行版本,可以通过横向扩展,增加节点、添加资源。
- 灵活性:用户可以根据自己的需要建立基础设施,也可以轻松地为自己的群集增加规模。此外,OpenStack 项目采用 Apache 2 许可,意味着第三方厂家可以重新发布源代码。
- 行业标准:众多 IT 领军企业都加入到 OpenStack 项目,这预示着 OpenStack 在未来可能形成云计算行业标准。
三、OpenStack 一键部署
3.1 部署环境准备
3.1.1 硬件要求
安装部署 OpenStack 环境的主机设备最低配置要求如下:
类型 | 最低配置要求 |
---|---|
CPU | 支持 Intel 64 或 AMD 64 CPU 扩展,并启用了 AMD-V 或 Intel VT 硬件虚拟化支持的 64 位 x86 处理器,逻辑 CPU 个数为 4 核 |
内存 | 8GB |
磁盘空间 | 30GB |
网络 | 1 个 1 Gbps 网卡 |
3.1.2 软件环境
本案例使用操作系统为 CentOS 7.3 的主机,需要提前部署一台新安装操作系统的主机,要求能访问互联网,主机的系统采用最小化方式安装。若通过 VMware 等虚拟机软件实现,网络采用桥接模式。
3.2 在线安装前准备工作
3.2.1 准备虚拟机
通过 VMware 等软件创建虚拟机,配置静态 IP 地址、网关及 DNS 参数,并测试网络连通性。需要注意的是,在配置 IP 地址时不要有 "DOMAIN=x.x.X.X" 这一行,因为这会影响 nova 配置文件内 host 的配置项,从而导致可用域不可用,无法创建虚拟机。
3.2.2 修改主机名
使用以下命令修改主机名:
[root@localhost ~]# hostnamectl set-hostname openstack
[root@localhost ~]# bash
[root@openstack ~]#
3.2.3 更新系统并安装常用软件
[root@openstack ~]# yum -y update
[root@openstack ~]# yum -y install vim wget net-tools lrzsz
3.2.4 关闭防火墙并取消开机启动
[root@openstack ~]# systemctl stop firewalld
[root@openstack ~]# systemctl disable firewalld
3.2.5 禁用 NetworkManager
[root@openstack ~]# systemctl stop NetworkManager
[root@openstack ~]# systemctl disable NetworkManager
3.2.6 禁用 Selinux
修改 Selinux 配置文件:
[root@openstack ~]# cat /etc/sysconfig/selinux
# 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
3.2.7 添加 hosts 绑定
[root@openstack ~]# cat /etc/hosts
192.168.9.137 openstack
3.3 使用 packstack 一键在线部署 OpenStack
3.3.1 Train 版 YUM 源安装
最小化安装 CentOS 7.3 并执行 update 升级后,系统会升级到 CentOS 7.7 版本。系统默认提供的 CentOS 官方 YUM 源包含了 Queens、Rocky、Stein、Train 四个 OpenStack 版本,选择安装 Train 版本:
[root@openstack ~]# yum install -y centos-release-openstack-train
安装完成后,在 /etc/yum.repos.d/ 目录下会自动生成 YUM 配置文件。
3.3.2 Packstack 软件包安装
[root@openstack ~]# yum install -y openstack-packstack
3.3.3 Packstack 一键部署 OpenStack
执行以下命令开始部署:
[root@openstack ~]# packstack --allinone
部署过程中会显示一系列安装步骤,当界面中出现 "successfully" 时,说明 OpenStack 安装成功。部署完成后,会生成环境变量文件、日志文件等信息,并提示登录 Dashboard 的方法。
3.4 离线安装前准备工作
如果网络较慢,无法通过 packstack 完成在线安装,可采用离线方式安装。离线安装前的准备工作与在线安装类似,但需要注意以下几点:
虚拟机的磁盘空间要确保大于 30G,以 40G 为宜,因为要存放离线包。
IP 地址配置时不要出现 DOMAIN 配置项。
3.5 使用 packstack 一键离线部署 OpenStack
3.5.1 上传并解压 Train 版离线安装包
[root@openstack ~]# mkdir /data && cd /data
[root@openstack data]# tar zxf openstack.tgz
3.5.2 配置本地 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
在 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
[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
3.5.3 更新 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
3.5.4 安装 openstack-packstack
[root@localhost ~]# yum -y install openstack-packstack
3.5.5 一键部署 OpenStack
[root@openstack ~]# packstack --allinone
部署完成后,仿照在线部署生成 br-ex 网桥配置文件。
四、通过 Dashboard 体验 OpenStack 功能
4.1 Dashboard 简介
Horizon 是 OpenStack 的一个组件,也是 OpenStack 中 Dashboard(仪表板,即 Web 控制台)的项目名,主要用于 OpenStack 的管理,其底层通过 API 和 OpenStack 其他组件进行通信,为管理员提供 Web 页面,方便操作管理。
4.2 登录 Dashboard
在客户端的浏览器地址栏中输入 http://192.168.9.137/dashboard,进入 Dashboard 的登录界面。安装 OpenStack 后,在 root 用户的 Home 目录下会生成一个 keystonerc_admin 文件,该文件记录了 keystone 认证的环境变量,包括用户名和登录密码。
4.3 Dashboard 功能模块
4.3.1 项目模块
项目模块主要包含访问 API、计算、卷、网络、对象存储五个分类:
- 访问 API:显示所有组件的服务端点。
- 计算类:包含概况、实例、镜像、密钥对、主机组等子类,用于管理计算资源和实例。
- 卷类:用于管理云主机的存储卷,可创建卷和快照。
- 网络类:包含网络拓扑、网络、路由、安全组、浮动 IP、中继等子类,用于管理网络资源。
- 对象存储类:主要包含容器子类,用于存储数据。
4.3.2 管理员模块
管理员模块与项目模块功能相似,但权限更高,仅限管理员用户操作,包含概况、计算类、卷类、网络类、系统类等功能。
4.3.3 身份管理模块
身份管理模块主要有项目、用户、组、角色等分类,用于管理用户身份和权限。
五、创建云主机
5.1 创建云主机前的准备
创建云主机需要依赖 OpenStack 中的各种虚拟资源,如 CPU、内存、硬盘等。如果需要云主机连接外部网络,还需要网络、路由器等资源。如果需要外部网络访问云主机,还需要配置浮动 IP。
5.2 创建网络
- 在控制台中依次单击 "项目"→"网络"→"网络" 按钮,点击右上角 "+ 创建网络" 按钮,输入网络名称为 "private",保持默认复选框状态,点击 "下一步"。
- 在子网信息页面,输入子网名称、网络地址等参数,网关 IP 可保持为空或自定义,点击 "下一步"。
- 在子网详情页面,配置 DHCP,输入分配地址池和 DNS 服务器地址,点击 "创建" 按钮。
5.3 创建路由
- 在控制台中依次单击 "项目"→"网络"→"路由" 按钮,点击右上角的 "+ 新建路由" 按钮,填写路由名称 my_route,外部网络选择默认的公有网络 public,点击 "新建路由"。
- 点击路由器名称进入详细信息页面,在 "接口" 标签下点击 "+ 增加接口" 按钮,选择之前创建的 private 私有网络,点击 "提交"。
5.4 创建镜像
- 核实现有镜像大小,若镜像过小需重新上传正确镜像。点击 "项目"→"计算"→"镜像" 按钮,点击 "+ 创建镜像"。
- 在弹出页面填写镜像信息,镜像名称填写 "cirrors01",选择镜像源文件,镜像格式选择 "QCOW2",可见性选为 "公有",点击创建镜像。
5.5 创建云主机
- 点击 "项目"→"计算"→"实例" 按钮,点击右上角 "创建实例" 按钮。
- 在 "详情" 页面填写实例名称为 "test",其他字段保持默认,点击 "下一项"。
- 在 "源" 页面选择镜像 "cirrors01",填写卷大小,点击 "下一步"。
- 在 "实例类型" 页面选择 "m1.tiny"
在 "实例类型" 页面,选择资源占用最少的实例类型,单击页面下方名称为 "m1.tiny" 的实例类型右边的上箭头,完成后单击 "下一项" 按钮。m1.tiny 实例类型的配置为 1CPU、512MB 内存、1GB 根分区磁盘,适合入门测试使用。
在 "网络" 页面中,选择云主机连接的私有网络。单击之前创建的名称为 "private" 网络右边的箭头,保证 private 网络置于可分配状态,后续步骤保持默认,最后直接单击 "创建实例" 按钮。
在弹出的实例列表页面中,可以看到已创建的云主机。创建实例需要执行块设备映射等操作,耗时取决于硬件和网络性能,等待片刻后可看到实例状态变为 "运行中"。
5.6 管理云主机并测试连通性
云主机启动成功后,单击云主机名称右侧的下拉菜单,选择 "控制台" 按钮,进入云主机的控制台页面。若控制台显示黑屏,同时按下 "Ctrl+Alt" 按钮即可。
根据控制台提示信息,输入登录用户名:cirros,密码:gocubsgo。进入 $ 提示符的 shell 终端,说明已成功登录云主机。
在云主机控制台中运行 ifconfig 命令,查看网络配置。可以看到云主机已通过 private 网络中的 DHCP 自动获取到 IP 地址,如 192.168.100.200。
在云主机上测试连接外网和本地主机的连通性:
- 运行
ping -c 1 baidu.com
测试连接百度,查看是否能获取到百度的 IP 地址并返回响应。 - 运行
ping 本地主机IP
测试与本地主机的连通性,确保网络路由正常。
- 运行
若 ping 外网不通,可能是以下原因导致:
- 检查 ifcfg-br-ex 配置文件,查看宿主机 br-ex 网卡是否启动。若未启动,执行命令
[root@openstack ~]# ifconfig br-ex 172.24.4.1 netmask 255.255.255.0 up
启动 br-ex 网卡。 - 检查 Linux 虚拟机是否开启了路由转发。若未开启,执行命令
[root@localhost ~]# vi /etc/sysctl.conf
,将net.ipv4.ip_forward = 0
改为net.ipv4.ip_forward = 1
,保存后执行[root@localhost ~]# sysctl -p
使配置生效。
- 检查 ifcfg-br-ex 配置文件,查看宿主机 br-ex 网卡是否启动。若未启动,执行命令
六、OpenStack 入门总结与实践建议
6.1 入门实践总结
通过本次 OpenStack 入门体验,我们完成了从云计算概念理解、OpenStack 架构认知到实际环境部署和云主机创建的全流程操作。主要内容包括:
云计算的基本概念和三种服务模型(IaaS、PaaS、SaaS),明确了 OpenStack 作为 IaaS 解决方案的定位。
OpenStack 的起源、核心组件及各服务的功能,了解了 Nova、Neutron、Keystone 等核心项目在云平台中的作用。
使用 packstack 工具进行 OpenStack 一键部署,包括在线部署和离线部署两种方式,掌握了部署前的环境准备和具体部署步骤。
通过 Horizon Dashboard 控制台体验 OpenStack 的各项功能,熟悉了项目、管理员、身份管理等模块的操作界面和功能划分。
完成了云主机创建的全流程操作,包括网络配置、路由设置、镜像准备和实例创建,并进行了网络连通性测试。
6.2 生产环境实践建议
虽然本次入门体验完成了 OpenStack 的基本部署和操作,但在实际生产环境中,OpenStack 的搭建和运维要复杂得多,需要注意以下几点:
硬件配置优化:生产环境中应根据业务需求合理配置硬件资源,避免资源瓶颈。计算节点、控制节点和存储节点建议分离部署,以提高系统性能和稳定性。
高可用性设计:生产环境中需考虑组件的高可用性,如数据库、消息队列、API 服务等应采用集群部署,避免单点故障。
网络规划:复杂的网络需求需要更精细的网络规划,包括租户网络隔离、负载均衡、防火墙策略等,确保网络安全和性能。
存储方案:根据业务对存储性能和容量的需求,选择合适的块存储和对象存储后端,如 Ceph、GlusterFS 等,并进行合理的存储资源分配和管理。
监控与告警:部署完善的监控系统,对 OpenStack 各组件的运行状态、资源使用情况进行实时监控,并设置合理的告警阈值,及时发现和解决问题。
安全管理:加强身份认证和授权管理,合理配置安全组规则,定期进行安全漏洞扫描和修复,确保云平台的安全性。
版本选择与升级:根据业务需求和技术支持情况,选择合适的 OpenStack 版本,并制定合理的升级计划,确保系统能够及时获取新功能和安全补丁。