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 界面为例进行讲解:
前置条件
- 已登录到 OpenStack 管理界面
-
使用分配的管理员或用户账户登录 Horizon(OpenStack Web 界面)。
-
确保有以下资源可用:
- 镜像(Image):虚拟机所需的操作系统镜像。
- 网络(Network):虚拟机需要连接的网络。
- 安全组(Security Group):为虚拟机设置防火墙规则。
- Key Pair(密钥对):用于 SSH 登录虚拟机的认证。
详细步骤
1. 进入“实例”页面
- 在 Horizon 界面,选择左侧导航栏的 "Project"(项目) > "Compute"(计算) > "Instances"(实例)。
2. 启动实例
- 点击右上角的 "Launch Instance"(启动实例)。
3. 配置实例参数
-
Instance Name(实例名称)
- 输入虚拟机的名称(例如:
test-vm
)。
- 输入虚拟机的名称(例如:
-
Source(源)
- 选择镜像类型:
- "Image":基于已有镜像创建实例。
- 或 "Volume":从已有卷启动实例。
- 选择对应的镜像文件(如
Ubuntu 20.04
或CentOS 7
)。
-
Flavor(规格)
- 选择计算资源规格(CPU、内存大小)。如
m1.small
。
- 选择计算资源规格(CPU、内存大小)。如
-
Networks(网络)
- 从可用网络中选择至少一个连接到虚拟机的网络。
-
Security Groups(安全组)
- 默认使用 "default" 安全组,或者选择允许 SSH 和 ICMP 的安全组规则。
-
Key Pair(密钥对)
- 如果没有现成的密钥对,可以提前创建一个,或者直接在创建时选择导入的密钥对。
4. 高级选项(可选)
- Boot from Volume(从卷启动):如果需要通过云盘启动虚拟机,可以指定相关参数。
- Post-Creation Script(启动后脚本):可以输入用户数据(例如云初始化脚本)。
5. 启动虚拟机
- 确认设置后,点击 "Launch Instance"(启动实例)。
6. 查看实例状态
- 回到实例页面,检查虚拟机状态是否为 Active。
- 状态为 Active 表示虚拟机创建成功。
通过命令行(CLI)创建虚拟机
-
确保已安装并配置 OpenStack CLI 工具(使用
openstack.rc
文件进行身份认证)。
source openstack.rc
-
查看可用资源
- 镜像:
openstack image list
- 网络:
openstack network list
- 规格:
openstack flavor list
-
安全组:
openstack security group list
-
创建实例
使用以下命令创建虚拟机: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"
- 检查实例状态
openstack server list
- 状态显示为 ACTIVE 即为创建成功。