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 模板简化批量部署。
相关推荐
小波小波轩然大波13 小时前
openstack总结
windows·php·openstack
阿方索1 天前
OpenStack 实验指导手册
服务器·openstack
Otto_102713 天前
Rocky版本中安装Networking-SFC插件
openstack
询问QQ:1808095115 天前
Simulink微电网分布式储能下垂控制 SOC均衡(三电池组)
openstack
FGGIT16 天前
openEuler集群下OpenStack Keystone认证系统的安装配置、集成与高可用实践
openstack
chian-ocean16 天前
基于openEuler集群的OpenStack云计算平台基础部署实战指南
服务器·云计算·openstack
xy123061 个月前
OpenStack Train 部署实战(一):双节点基础环境搭建
openstack
别多香了1 个月前
OpenStack 核心服务与实操
openstack
哈里谢顿1 个月前
devstack重启恢复方案
openstack