OpenStack 入门体验

发布于:2025-06-20 ⋅ 阅读:(17) ⋅ 点赞:(0)

从概念到实践的完整指南

在云计算技术蓬勃发展的今天,OpenStack 作为开源云计算领域的核心框架,已成为构建私有云和公有云的首选方案。本文将从云计算基础概念入手,通过详细的实验步骤,带领读者完成 OpenStack 的一键部署、控制台功能体验及云主机创建全过程,帮助初学者快速掌握 OpenStack 的核心操作。

一、云计算与 OpenStack 基础概念

1.1 云计算概述

云计算(Cloud Computing)是一种基于网络的超级计算模式,它通过分布式计算和虚拟化技术,将分散的计算资源(如服务器、存储、网络)整合为弹性可扩展的资源池,为用户提供按需分配的 IT 服务。这种模式打破了传统 IT 架构的物理限制,使用户能够像使用水电一样便捷地获取计算资源。

1.1.1 云计算的服务模型

云计算主要分为三种服务模型,每种模型对应不同的用户需求和技术层次:

  • IaaS(基础设施即服务):提供最底层的计算、存储和网络资源,用户可在此基础上部署操作系统和应用程序。典型场景包括虚拟机租赁、块存储服务等,OpenStack 主要实现 IaaS 功能。

  • PaaS(平台即服务):提供预配置的开发和运行环境,用户无需关注底层基础设施,专注于应用开发。例如 Heroku、Google App Engine 等。

  • SaaS(软件即服务):通过网络直接提供软件应用,用户以订阅方式使用。常见案例包括 Office 365、Salesforce 等。

1.1.2 OpenStack 的起源与定位

OpenStack 由 Rackspace 和 NASA 于 2010 年联合发起,是一个以 Apache 许可证授权的开源云计算项目。其目标是提供简单易用、可扩展的云基础设施解决方案,目前已成为全球范围内应用最广泛的 IaaS 开源平台。

OpenStack 采用模块化设计,各组件通过 API 协同工作,支持计算、存储、网络等资源的统一管理。截至最新的 Train 版本,OpenStack 已发展为包含 10 余个核心项目的成熟生态系统,被亚马逊、微软、IBM 等众多企业用于构建私有云或混合云环境。

1.2 OpenStack 核心组件解析

OpenStack 的强大功能源于其模块化的组件架构,每个组件专注于特定功能领域,通过标准化接口实现协同工作。以下是 OpenStack 的八大核心组件:

服务 项目名称 功能描述
计算服务 Nova 负责虚拟机实例的生命周期管理,支持 KVM、VMware 等多种虚拟化技术,实现计算资源的弹性扩展。
网络服务 Neutron 提供虚拟网络配置功能,支持创建租户隔离的网络拓扑,包括子网、路由器、安全组等。
身份认证服务 Keystone 统一管理用户身份、权限和服务目录,实现基于角色的访问控制(RBAC)。
控制面板服务 Horizon 提供 Web 图形化管理界面,简化用户对 OpenStack 资源的操作,无需频繁使用命令行。
镜像服务 Glance 存储和管理虚拟机镜像,支持多种格式(如 QCOW2、RAW),支持镜像的上传、下载和共享。
块存储服务 Cinder 为虚拟机提供持久化块存储设备,支持动态扩展和快照功能,兼容多种存储后端。
对象存储服务 Swift 提供分布式对象存储,支持海量非结构化数据的存储,具备高可用性和无限扩展能力。
计量服务 Ceilometer 收集和监控云资源使用数据,为计费、容量规划提供依据,支持资源使用情况的实时统计。

这些组件通过消息队列(如 RabbitMQ)和数据库(如 MySQL)进行通信,形成一个完整的云计算管理平台。理解各组件的功能定位,是深入掌握 OpenStack 的基础。

二、OpenStack 一键部署实践

2.1 实验环境准备

2.1.1 硬件与软件要求

本次实验采用单机部署模式,建议使用以下配置的物理机或虚拟机:

  • 硬件配置:4 核 CPU、8GB 内存、30GB 以上磁盘空间,1 个 1Gbps 网卡(支持硬件虚拟化)。

  • 软件配置:CentOS 7.3(最小化安装),确保能访问互联网(在线安装)或准备好离线安装包。

2.1.2 环境初始化配置

在部署 OpenStack 前,需对操作系统进行基础配置:

  1. 设置静态 IP 与主机名

bash

# 修改IP配置(以ens33为例)
vi /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

# 设置主机名
hostnamectl set-hostname openstack
bash  # 使主机名立即生效

  1. 关闭防火墙与 SELinux

bash

systemctl stop firewalld
systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0

  1. 禁用 NetworkManager 并配置 hosts

bash

systemctl stop NetworkManager
systemctl disable NetworkManager
echo "192.168.9.137 openstack" >> /etc/hosts

  1. 更新系统并安装常用工具

bash

yum -y update
yum -y install vim wget net-tools lrzsz

2.2 在线一键部署 OpenStack

2.2.1 配置 OpenStack YUM 源

OpenStack 官方提供了稳定的 YUM 源,以 Train 版本为例:

bash

yum install -y centos-release-openstack-train

执行后,系统会在/etc/yum.repos.d/目录下自动生成 OpenStack 相关的 YUM 配置文件。

2.2.2 安装 packstack 部署工具

packstack 是 OpenStack 官方提供的一键部署工具,可自动完成所有组件的安装和配置:

bash

yum install -y openstack-packstack
2.2.3 执行一键部署

使用 packstack 的 - allinone 参数启动单机部署:

bash

packstack --allinone

部署过程中,packstack 会自动完成以下操作(控制台会显示详细进度):

  • 安装 Puppet 并配置各组件的 Puppet 清单
  • 部署 MariaDB 数据库、RabbitMQ 消息队列
  • 配置 Keystone 身份认证、Glance 镜像服务
  • 部署 Nova 计算服务、Neutron 网络服务
  • 配置 Horizon 控制面板

当控制台出现**** Installation completed successfully ****时,说明 OpenStack 已成功部署。部署完成后,系统会生成以下关键信息:

  • Dashboard 访问地址http://192.168.9.137/dashboard
  • 认证信息文件:/root/keystonerc_admin(包含管理员账号密码)
  • 安装日志:/var/tmp/packstack/.../openstack-setup.log
2.2.4 网络配置优化

部署完成后,需要为虚拟网桥 br-ex 配置固定 IP:

bash

# 复制物理网卡配置到br-ex
cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-br-ex

# 修改br-ex配置
vi /etc/sysconfig/network-scripts/ifcfg-br-ex
TYPE=Ethernet
BOOTPROTO=none
NAME=br-ex
DEVICE=br-ex
ONBOOT=yes
IPADDR=172.24.4.1
PREFIX=24

# 重启网络服务
systemctl restart network

2.3 离线一键部署 OpenStack

2.3.1 准备离线安装包

当网络环境受限无法在线安装时,可提前下载离线包并构建本地源:

  1. 下载 OpenStack Train 版本离线包(约 400MB),包含基础包、OpenStack 包等
  2. 解压到 /data 目录:tar zxf openstack.tgz -C /data
2.3.2 配置本地 YUM 源

创建本地源配置文件/etc/yum.repos.d/local.repo

ini

[base]
name=base
baseurl=file:///data/base
gpgcheck=0
enabled=1

[centos-openstack-train]
name=centos-openstack-train
baseurl=file:///data/centos-openstack-train
gpgcheck=0
enabled=1

# 其他仓库配置类似,省略...
2.3.3 生成本地源索引

bash

createrepo /data/base
createrepo /data/centos-openstack-train
# 为所有解压的目录生成索引
yum clean all
yum makecache
2.3.4 执行离线部署

与在线部署步骤相同,使用 packstack --allinone 命令即可,packstack 会自动从本地源获取软件包。部署完成后,同样需要配置 br-ex 网桥 IP。

三、通过 Dashboard 体验 OpenStack 功能

3.1 登录 Dashboard

在浏览器中输入http://192.168.9.137/dashboard,进入登录界面。管理员账号密码存储在/root/keystonerc_admin文件中,内容类似:

bash

export OS_USERNAME=admin
export OS_PASSWORD=81a7af7313ce46d2  # 实际密码以生成的文件为准
export OS_PROJECT_NAME=admin

登录后默认显示英文界面,可通过右上角 "Settings" 切换为中文。

3.2 Dashboard 功能模块解析

3.2.1 "项目" 模块

该模块包含用户可操作的核心资源,按功能分为五大类:

  1. 计算类:管理虚拟机实例、镜像、密钥对

    • 实例:显示所有虚拟机,支持创建、启动、停止等操作
    • 镜像:管理虚拟机模板,支持上传自定义镜像
    • 密钥对:生成 SSH 密钥对,实现无密码登录虚拟机
  2. 网络类:配置虚拟网络拓扑

    • 网络拓扑:图形化显示网络、路由器和接口的连接关系
    • 路由:创建虚拟路由器,实现私有网络与外部网络的通信
    • 安全组:设置防火墙规则,控制虚拟机的网络访问
  3. 卷类:管理块存储资源

    • :创建可附加到虚拟机的块存储设备
    • 快照:为卷创建备份,支持数据恢复
  4. 对象存储类:管理非结构化数据存储

    • 容器:创建存储容器,类似文件系统的目录
3.2.2 "管理员" 模块

拥有更高权限,包含系统级管理功能:

  1. 计算管理:监控虚拟机管理器状态、主机聚合配置
  2. 卷管理:管理卷类型、组类型,查看所有项目的卷资源
  3. 系统管理:配置资源配额、查看系统服务状态
3.2.3 "身份管理" 模块

管理用户、项目和角色:

  1. 项目:创建和管理租户(Project),隔离不同用户的资源
  2. 用户:添加用户并分配到项目
  3. 角色:定义权限集合,可分配给用户

四、创建与管理云主机实战

4.1 准备工作:上传有效镜像

OpenStack 默认提供的 cirros 镜像可能因大小问题无法使用,需上传完整镜像:

  1. 下载 cirros 镜像wget http://download.cirros-cloud.net/0.5.1/cirros-0.5.1-x86_64-disk.img

  2. 创建镜像

    • 在 Dashboard 中进入 "项目"→"计算"→"镜像"
    • 点击 "+ 创建镜像",填写名称 "cirros01",选择镜像文件,格式设为 QCOW2,可见性设为 "公有"

4.2 创建私有网络与路由

4.2.1 创建私有网络 private
  1. 进入 "项目"→"网络"→"网络",点击 "+ 创建网络"
  2. 网络名称设为 "private",勾选 "创建子网"
  3. 子网信息:
    • 子网名称:private_subnet
    • 网络地址:192.168.100.0/24
    • 网关 IP:192.168.100.1
  4. 子网详情:
    • 激活 DHCP,地址池:192.168.100.100-192.168.100.200
    • DNS 服务器:114.114.114.114
4.2.2 创建路由 my_route
  1. 进入 "项目"→"网络"→"路由",点击 "+ 新建路由"
  2. 路由名称:my_route,外部网络选择 "public",勾选 "启用 SNAT"
  3. 添加内部接口:
    • 进入路由详情页,点击 "接口"→"+ 增加接口"
    • 选择子网 "private_subnet",自动获取网关 IP

4.3 创建云主机实例

  1. 进入 "项目"→"计算"→"实例",点击 "+ 创建实例"
  2. 详情页:实例名称 "test",数量 1
  3. 源页:选择镜像 "cirros01",卷大小 1GB
  4. 实例类型页:选择资源最小的 "m1.tiny"(1CPU、512MB 内存、1GB 磁盘)
  5. 网络页:选择私有网络 "private"
  6. 安全组页:使用默认安全组(允许 ICMP 和 SSH)
  7. 密钥对页:可创建新密钥对或跳过
  8. 点击 "创建实例",等待约 10 秒,实例状态变为 "运行中"

4.4 访问与测试云主机

4.4.1 通过控制台访问
  1. 在实例列表中,点击实例名称右侧的下拉菜单,选择 "控制台"
  2. 登录用户名:cirros,密码:gocubsgo
  3. 登录后执行ifconfig,查看 IP 地址(如 192.168.100.172)
4.4.2 网络连通性测试
  1. 测试外网连通性:ping -c 1 baidu.com
  2. 测试宿主机连通性:ping -c 1 192.168.9.137

若 ping 不通,检查以下内容:

  • br-ex 网桥是否启动:ifconfig br-ex
  • 宿主机路由转发是否开启:

    bash

    vi /etc/sysctl.conf
    net.ipv4.ip_forward = 1
    sysctl -p

网站公告

今日签到

点亮在社区的每一天
去签到