OpenStack 从入门到实战(一)

文章目录

OpenStack 从入门到实战(一)

引言

OpenStack 作为开源的企业级云计算管理平台,能实现虚拟机、存储、网络等资源的集中化调度与管理,广泛应用于私有云、公有云部署。本文基于 Victoria 版本,精简实验手册的核心步骤,聚焦认证、镜像、计算、存储、网络、编排六大核心模块,用清晰的结构和关键操作,帮你快速上手 OpenStack 部署与运维~

一、OpenStack 核心亮点

  • 开源免费:基于 Apache 许可证,可自由定制扩展。
  • 模块化架构:拆分为认证(Keystone)、计算(Nova)、镜像(Glance)、存储(Cinder)、网络(Neutron)等组件,灵活部署。
  • 多租户支持:通过项目、角色、用户的权限隔离,适配多团队协作。
  • 跨平台兼容:支持 KVM、Xen 等虚拟化技术,兼容多种操作系统镜像。
  • 自动化编排:通过 Heat 模板实现资源一键部署,适配 DevOps 流程。

二、环境规划(核心节点)

节点名称 IP 地址 核心角色 关键软件
controller 192.168.108.10 控制节点 Keystone、Glance、Nova、Neutron、Heat
compute 192.168.108.11 计算节点 Nova 计算服务、Neutron 代理
cinder 192.168.108.12 存储节点 Cinder 块存储服务
客户端 192.168.108.1 管理终端 OpenStack CLI、浏览器(Dashboard 访问)

基础依赖:CentOS 7.9、Python 2.7+/3.6+、JDK 1.8、MariaDB(数据库)

三、核心模块实战(精简操作)

1. 认证管理(Keystone)

核心是 "用户 - 角色 - 项目" 的权限模型,控制资源访问范围。

关键操作(Dashboard + CLI)
  • 创建项目(资源隔离单元):

    • Dashboard:管理员 → 身份管理 → 项目 → 创建项目(名称 + 域)。
    • CLI:openstack project create --domain default Project_web
  • 创建用户 + 角色绑定

    • CLI:

      复制代码
      openstack user create --domain default --password huawei User_web
      
      openstack role add --project Project_web --user User_web _member_

      (member为默认普通角色)

  • 核心概念

    • 角色:定义权限集合(如 admin 全权限、member 普通权限)。
    • 项目:隔离资源(如虚拟机、网络仅所属项目可见)。

2. 镜像管理(Glance)

镜像是虚拟机的模板,支持 QCOW2、VMDK 等格式,推荐使用轻量的 Cirros 镜像测试。

核心操作
  • 下载镜像wget http://download.cirros-cloud.net/0.5.2/cirros-0.5.2-x86_64-disk.img

  • 创建镜像

    • CLI:openstack image create --disk-format qcow2 --container-format bare --file cirros-0.5.2-x86_64-disk.img --public Img_web
    • 关键参数:--public 设为公共镜像,所有项目可用;--private 仅当前项目可用。
  • 镜像共享

    • CLI:

      复制代码
      openstack image set --shared Img_web

      (共享给其他项目)

      复制代码
      openstack image add project Img_web Project_web

      (指定项目可见)

3. 计算管理(Nova)

负责虚拟机实例的生命周期管理,包括创建、启动、快照、删除等。

核心操作
  • 创建实例规格 (虚拟机配置):
    • CLI:openstack flavor create --vcpus 1 --ram 128 --disk 1 Flavor_web(1vCPU+128M 内存 + 1G 磁盘)
  • 创建虚拟机实例
    • CLI:openstack server create --image Img_web --flavor Flavor_web --network shared --key-name KeyPair_web Instance_web_01
    • 关键参数:--network 指定网络,--key-name 绑定密钥对(用于 SSH 登录)。
  • 实例生命周期管理
    • 启动 / 关闭:openstack server start/stop Instance_web_01
    • 快照:openstack server image create --name Instance_Snap Instance_web_01
    • 删除:openstack server delete Instance_web_01

4. 存储管理(Cinder)

提供块存储服务(卷),可挂载到虚拟机实例,实现数据持久化。

核心操作
  • 创建卷 (基于镜像):
    • CLI:openstack volume create --image Img_web --size 1 --type VolumeType_web Volume_web_01
    • 说明:卷大小单位为 GB,--type 指定存储类型(如 SSD、SATA)。
  • 挂载 / 卸载卷
    • 挂载:openstack server add volume Instance_web_01 Volume_web_01
    • 卸载:openstack server remove volume Instance_web_01 Volume_web_01
  • 卷快照openstack volume snapshot create --volume Volume_web_01 Volume_Snap_web

5. 网络管理(Neutron)

OpenStack 网络核心是 "网络 - 子网 - 路由器" 模型,需重点掌握浮动 IP 和安全组配置。

核心操作
  • 创建网络 + 子网

    • CLI:

      复制代码
      openstack network create --share Network_web

      (--share 设为共享网络)

      复制代码
      openstack subnet create --network Network_web --subnet-range 192.168.1.0/24 --gateway 192.168.1.1 Subnet_web
  • 创建路由器(跨网络通信)

    • CLI:

      复制代码
      openstack router create Router_web
      
      openstack router add subnet Router_web Subnet_web

      (关联子网)

      复制代码
      openstack router set --external-gateway External Router_web

      (绑定外部网络,实现外网访问)

  • 浮动 IP(外部访问实例)

    • 分配:openstack floating ip create External
    • 绑定:openstack server add floating ip Instance_web_01 192.168.108.120
  • 安全组(端口放行)

    • 创建安全组:openstack security group create SG_web
    • 放行 SSH(22 端口):openstack security group rule create --protocol tcp --dst-port 22 --remote-ip 0.0.0.0/0 SG_web
    • 放行 ICMP(ping):openstack security group rule create --protocol icmp --remote-ip 0.0.0.0/0 SG_web
    • 绑定实例:openstack server add security group Instance_web_01 SG_web

6. 编排管理(Heat)

通过 HOT(Heat Orchestration Template)模板实现资源自动化部署,适合批量创建实例、网络等。

基础使用
  • 编写简单 HOT 模板(demo-template.yaml)

yaml

yaml 复制代码
heat_template_version: 2015-10-15
parameters:
  NetID:
    type: string
    description: 网络ID
resources:
  server:
    type: OS::Nova::Server
    properties:
      image: Img_web
      flavor: Flavor_web
      key_name: KeyPair_web
      networks:
        - network: {get_param: NetID}
outputs:
  instance_ip:
    description: 实例IP
    value: {get_attr: [server, first_address]}
  • 创建堆栈(部署资源)
    • CLI:openstack stack create -t demo-template.yaml --parameter "NetID=网络ID" Stack_demo
    • 查看结果:openstack stack output show --all Stack_demo
  • 删除堆栈openstack stack delete Stack_demo(会自动删除关联的实例、网络等资源)

四、核心总结

OpenStack 的核心是 "模块化 + 资源编排":

  1. 权限模型:用户→角色→项目的三层隔离。
  2. 网络配置:网络 + 子网 + 路由器实现通信,浮动 IP + 安全组实现外网访问。
  3. 资源生命周期:实例、卷、镜像的创建与关联。
  4. 自动化:通过 Heat 模板简化批量部署。
相关推荐
oMcLin4 天前
如何在 Ubuntu 22.04 LTS 上部署并优化 OpenStack 云计算平台,实现多租户虚拟化与弹性伸缩?
ubuntu·云计算·openstack
last demo6 天前
openstack基础
linux·运维·openstack
Font Tian12 天前
【云计算2025年度总结】汇总和反思
容器·云计算·k8s·openstack·虚拟化
G_H_S_3_15 天前
【网络运维】OpenStack镜像管理:Glance篇
linux·运维·openstack
无泪无花月隐星沉16 天前
续写云计算的前世今生
kubernetes·云计算·openstack
iconball18 天前
个人用云计算学习笔记 --26 OpenStack 核心服务
运维·笔记·学习·云计算·openstack
神秘面具男0319 天前
OpenStack 核心组件管理
openstack
G_H_S_3_19 天前
【网络运维】OpenStack 块存储与对象存储:Cinder 与 Swift 篇
linux·运维·网络·openstack
2301_8000509919 天前
OpenStack 管理
运维·openstack
阎*水19 天前
OpenStack 核心知识点总结
openstack