跳转至

Openstack

OpenStack 是一个开源的云计算平台,提供了构建和管理私有云和公共云的工具。它是由一系列松耦合的组件组成,每个组件都负责特定的功能模块。以下是 OpenStack 的主要组件及其功能:

1. Compute (Nova)

  • 功能:负责管理和提供虚拟机实例。
  • 作用:核心的计算服务,用于创建、管理、销毁虚拟机实例,也支持裸金属服务器和容器。

2. Storage

#### Object Storage (Swift)
- 功能:提供可扩展的对象存储。
- 作用:用于存储非结构化数据,如备份、归档、媒体文件等。

#### Block Storage (Cinder)
- 功能:提供块存储服务。
- 作用:为虚拟机提供持久存储卷,可以挂载和卸载。

3. Networking (Neutron)

  • 功能:提供网络即服务。
  • 作用:支持虚拟机网络的创建、管理和配置,包括子网、路由器、负载均衡、防火墙等。

4. Identity (Keystone)

  • 功能:身份认证和服务目录。
  • 作用:负责用户认证、授权和服务发现,统一管理用户和 API 的访问权限。

5. Image (Glance)

  • 功能:虚拟机镜像服务。
  • 作用:存储和分发虚拟机镜像,支持多种镜像格式(如 RAW、QCOW2)。

6. Dashboard (Horizon)

  • 功能:Web 界面。
  • 作用:提供图形化用户界面,用于管理 OpenStack 资源。

7. Orchestration (Heat)

  • 功能:自动化资源编排。
  • 作用:通过模板文件来定义云资源,支持自动化部署和管理。

8. Telemetry (Ceilometer)

  • 功能:监控和计量服务。
  • 作用:收集、存储和分析云平台的使用数据,用于计费、性能监控和资源优化。

9. Database (Trove)

  • 功能:数据库即服务。
  • 作用:管理关系型和非关系型数据库实例的生命周期。

10. DNS (Designate)

  • 功能:DNS即服务。
  • 作用:提供域名解析和 DNS 记录管理。

11. Bare Metal (Ironic)

  • 功能:裸金属服务。
  • 作用:提供对裸金属服务器的管理和调度。

12. Messaging (Zaqar)

  • 功能:消息队列服务。
  • 作用:为应用程序提供分布式消息传递能力。

13. Container (Zun/Kuryr)

  • 功能:容器管理服务。
  • 作用:支持容器应用的运行和管理,与 Kubernetes 集成。

14. Key Manager (Barbican)

  • 功能:密钥管理服务。
  • 作用:存储、管理和分发加密密钥和证书。

15. Workflow (Mistral)

  • 功能:工作流服务。
  • 作用:通过定义任务和依赖关系来实现自动化流程。

OpenStack 的模块化设计使得用户可以根据需求选择使用哪些组件。

在 OpenStack 上创建虚拟机需要以下步骤,可以通过 Horizon(Web界面)命令行(CLI) 实现。以下以 Web 界面为例进行讲解:


前置条件

  1. 已登录到 OpenStack 管理界面
  2. 使用分配的管理员或用户账户登录 Horizon(OpenStack Web 界面)。

  3. 确保有以下资源可用

  4. 镜像(Image):虚拟机所需的操作系统镜像。
  5. 网络(Network):虚拟机需要连接的网络。
  6. 安全组(Security Group):为虚拟机设置防火墙规则。
  7. Key Pair(密钥对):用于 SSH 登录虚拟机的认证。

详细步骤

1. 进入“实例”页面

  • 在 Horizon 界面,选择左侧导航栏的 "Project"(项目) > "Compute"(计算) > "Instances"(实例)

2. 启动实例

  • 点击右上角的 "Launch Instance"(启动实例)

3. 配置实例参数

  • Instance Name(实例名称)

    • 输入虚拟机的名称(例如:test-vm)。
  • Source(源)

    • 选择镜像类型:
    • "Image":基于已有镜像创建实例。
    • 或 "Volume":从已有卷启动实例。
    • 选择对应的镜像文件(如 Ubuntu 20.04CentOS 7)。
  • Flavor(规格)

    • 选择计算资源规格(CPU、内存大小)。如 m1.small
  • Networks(网络)

    • 从可用网络中选择至少一个连接到虚拟机的网络。
  • Security Groups(安全组)

    • 默认使用 "default" 安全组,或者选择允许 SSH 和 ICMP 的安全组规则。
  • Key Pair(密钥对)

    • 如果没有现成的密钥对,可以提前创建一个,或者直接在创建时选择导入的密钥对。

4. 高级选项(可选)

  • Boot from Volume(从卷启动):如果需要通过云盘启动虚拟机,可以指定相关参数。
  • Post-Creation Script(启动后脚本):可以输入用户数据(例如云初始化脚本)。

5. 启动虚拟机

  • 确认设置后,点击 "Launch Instance"(启动实例)

6. 查看实例状态

  • 回到实例页面,检查虚拟机状态是否为 Active
  • 状态为 Active 表示虚拟机创建成功。

通过命令行(CLI)创建虚拟机

  1. 确保已安装并配置 OpenStack CLI 工具(使用 openstack.rc 文件进行身份认证)。

    source openstack.rc

  2. 查看可用资源

  3. 镜像:openstack image list
  4. 网络:openstack network list
  5. 规格:openstack flavor list
  6. 安全组:openstack security group list

  7. 创建实例
    使用以下命令创建虚拟机:

    openstack server create \
      --image <镜像名称或ID> \
      --flavor <规格名称> \
      --network <网络名称或ID> \
      --security-group <安全组名称> \
      --key-name <密钥对名称> \
      <虚拟机名称>

示例:

openstack server create \
  --image "Ubuntu-20.04" \
  --flavor "m1.small" \
  --network "private-network" \
  --security-group "default" \
  --key-name "my-key" \
  "test-vm"

  1. 检查实例状态
    openstack server list
  2. 状态显示为 ACTIVE 即为创建成功。