1、官方文档
OpenStack Installation Guidehttps://docs.openstack.org/install-guide/
本次安装是在Ubuntu 22.04上进行,基本按照OpenStack Installation Guide顺序执行,主要内容包括:
- 环境安装 (已完成)
- OpenStack服务安装
- keyston安装(已完成)
- glance安装 (已完成)
- placement安装(已完成)
- nova安装(本篇文档安装)◄──
- 启动一个实例
参考OpenStack Yoga版最小化部署(Minimal deployment for Yoga),顺序安装必须的核心服务,本次安装nova服务。
2、概述(Overview)
2.1 OpenStack是一个开源的云计算平台
OpenStack 是一个开源的云计算平台,它允许企业和服务提供商构建自己的私有云或公有云环境:
开源: OpenStack 是由社区驱动的,它的代码和设计是公开的,任何人都可以查看、修改和使用。
云计算平台: 它提供了一套工具和服务,使得用户能够在虚拟化环境中创建、管理和部署应用程序。
支持所有类型的云环境: OpenStack 设计灵活,可以适应不同的云部署模型,包括私有云、公有云和混合云。
简单实施: OpenStack 的目标之一是让云服务的搭建和使用尽可能简单,减少复杂性。
大规模可扩展性: 它能够支持从小型开发环境到大规模生产环境的扩展,满足不同规模的需求。
丰富的功能集: OpenStack 提供了一套完整的服务,包括计算、网络、存储等,以满足各种云应用的需求。
全球云计算专家的贡献: 来自世界各地的云技术专家参与到 OpenStack 的开发和改进中,确保平台的先进性和适用性。
总的来说,OpenStack 是一个由社区驱动的、灵活的、功能丰富的云计算平台,它允许用户根据自己的需求构建和扩展云服务。
2.2 OpenStack提供IaaS解决方案
OpenStack 提供的 Infrastructure-as-a-Service (IaaS) 解决方案,可以通过以下方面来理解:
IaaS(基础设施即服务): 这是一种云计算模型,其中提供商为用户提供虚拟化的计算资源,如服务器、存储和网络资源。用户可以按需使用这些资源,而不需要自己拥有和维护物理硬件。
多种互补服务: OpenStack 不是一个单一的服务,而是由多个不同的服务组成,每个服务负责云计算基础设施的不同方面。例如,Nova 负责计算服务,Swift 负责对象存储服务,Cinder 负责块存储服务,Neutron 负责网络服务等。
应用程序编程接口(API): 每个 OpenStack 服务都提供了 API,这些 API 允许用户以编程方式访问和控制服务。这意味着用户可以通过编写代码来自动化资源的创建、配置和管理。
集成和自动化: 提供 API 的目的是为了促进不同服务之间的集成和自动化。用户和开发者可以利用这些 API 来构建自己的应用程序,实现对云资源的高级管理和编排。
灵活性和扩展性: 通过 API,OpenStack 允许用户根据自己的需求定制和扩展云服务。用户可以开发自定义的解决方案,以满足特定的业务需求。
社区驱动的创新: OpenStack 的 API 和服务设计允许社区成员贡献新的想法和功能,推动平台的持续发展和创新。
总的来说,OpenStack 通过提供 IaaS 解决方案和开放的 API,使用户能够灵活地构建和管理云计算基础设施,实现资源的自动化和集成。
2.3 OpenStack安装环境说明
《OpenStack Installation Guide》OpenStack安装指南提供了一个功能性测试架构,适合 OpenStack 新用户,指导如何逐步部署 OpenStack 的主要服务。该指南并非面向生产环境的安装,而是旨在建立一个最小化的概念验证(POC)环境,以便学习 OpenStack 相关知识。
2.4 将来的生产环境部署建议
在熟悉了 OpenStack 服务的基本安装、配置、操作和故障排除之后,向使用生产架构部署迈进的一些建议步骤:
确定并实施必要的核心和可选服务:这意味着你需要根据你的性能和冗余需求来决定哪些 OpenStack 服务是必需的,哪些是可选的。核心服务是运行 OpenStack 云所必需的,而可选服务可以根据特定需求添加。
满足性能和冗余要求:在生产环境中,你需要确保系统能够处理预期的工作负载,并且在一个组件失败时,系统仍然可以继续运行。这通常涉及到使用多个节点和数据副本来实现高可用性。
增强安全性:在生产环境中,安全性至关重要。这包括使用防火墙来控制进出流量,使用加密来保护数据传输和存储,以及实施服务策略来确保只有授权用户才能访问资源。
使用部署工具自动化部署和管理:在生产环境中,手动部署和管理 OpenStack 服务可能会非常耗时且容易出错。使用自动化工具,如 Ansible、Chef、Puppet 或 Salt,可以帮助你自动化部署流程,确保一致性,并简化日常管理任务。
生产架构:与概念验证或测试环境不同,生产架构需要考虑更多的因素,如扩展性、安全性、监控和维护。这意味着你的部署计划应该包括对这些方面的详细考虑。
总的来说,这些步骤强调了在将 OpenStack 服务从学习阶段转移到生产部署时,需要考虑的关键方面,包括服务的选择、性能和冗余、安全性以及自动化部署和管理。
3、计算服务概述(Compute Service Overview)
3.1 主要特性
OpenStack Compute(通常称为Nova)在云计算系统中的作用和特性,以及它与其他OpenStack组件的交互描述如下:
OpenStack Compute:是OpenStack项目的一部分,用于托管和管理云计算系统。它是一个开源的云计算平台,允许用户在云环境中创建和管理虚拟机实例。
Infrastructure-as-a-Service (IaaS):OpenStack Compute 是基础设施即服务(Infrastructure-as-a-Service,简称 IaaS)系统的重要组成部分。基础设施即服务,是一种云计算服务模型,用户可以租用计算资源,如虚拟机、存储和网络资源,而无需购买和维护物理硬件。
Python实现:OpenStack Compute的主要模块是用Python编程语言编写的。
与OpenStack Identity交互:用于身份验证和授权,确保只有授权用户可以访问和管理云资源。
与OpenStack Placement交互:用于跟踪和选择库存资源,帮助确定在何处启动新实例以优化资源利用。
与OpenStack Image服务交互:用于管理和访问磁盘和服务器镜像,这些镜像用于启动新的虚拟机实例。
与OpenStack Dashboard交互:提供用户和管理员界面,允许用户通过一个图形界面管理和监控他们的云资源。
项目和用户限制:镜像访问受到项目和用户的限制,意味着不同项目或用户组可能只能访问特定的镜像。
配额限制:每个项目都有配额限制,例如实例的数量,这有助于控制资源使用和成本。
水平扩展:OpenStack Compute可以在标准硬件上水平扩展,意味着可以通过增加更多的节点来增加计算能力。
下载镜像启动实例:OpenStack Compute可以下载所需的镜像文件,并使用这些镜像来启动新的虚拟机实例。
总的来说,OpenStack Compute是一个强大的云管理工具,它通过与其他OpenStack服务的紧密集成,提供了一个全面的IaaS解决方案。
3.2 主要组件
OpenStack Compute的不同组件及其功能介绍如下:
nova-api 服务:
- 接受并响应来自终端用户(end user)的compute API调用。
- 支持OpenStack计算API。
- 执行一些策略,并启动大多数编排活动,如运行实例。
nova-api-metadata 服务:
- 接受来自实例的元数据请求。
- 更多信息请参考元数据服务。
nova-compute 服务:
- 一个工作守护进程,通过虚拟化API(hypervisor API)创建和终止虚拟机实例。
- 例如使用libvirt与KVM或QEMU,或VMwareAPI与VMware。
- 处理过程相当复杂,基本上守护进程接受队列中的操作,并执行一系列系统命令,如启动KVM实例并更新其在数据库中的状态。
nova-scheduler 服务:
- 从队列中获取虚拟机实例请求,并决定在哪个计算服务器主机上运行。
nova-conductor 模块:
- 在nova-compute服务和数据库之间进行交互的中介。
- 消除了nova-compute服务对云数据库的直接访问。
- nova-conductor模块可以水平扩展。但是,不要在运行nova-compute服务的节点上部署它。
- 更多信息,请查看配置选项中的conductor部分。
nova-novncproxy 守护进程:
- 提供通过VNC连接访问运行实例的代理。
- 支持基于浏览器的novnc客户端。
nova-spicehtml5proxy 守护进程:
- 提供通过SPICE连接访问运行实例的代理。
- 支持基于浏览器的HTML5客户端。
- SPICE(Simple Protocol for Independent Computing Environments)是一种开源的远程桌面协议,用于连接虚拟机或远程桌面环境。它允许用户通过浏览器或专用客户端软件安全地访问和管理他们的虚拟桌面或虚拟机。在OpenStack环境中,SPICE可以用来提供对虚拟机实例的图形界面访问,使得用户能够像操作本地计算机一样操作云中的虚拟机。这在需要进行图形界面操作或配置虚拟机时非常有用。
队列:
- 守护进程之间传递消息的中心枢纽。
- 通常使用RabbitMQ实现,但还有其他选项可用。
SQL数据库:
- 存储云基础设施的大部分构建时和运行时状态(build-time and run-time states),包括:
- 可用的实例类型
- 使用中的实例
- 可用的网络
- 项目
- 理论上,OpenStack Compute可以支持SQLAlchemy支持的任何数据库。
- 常见的数据库有SQLite3(用于测试和开发工作)、MySQL、MariaDB和PostgreSQL。
- 存储云基础设施的大部分构建时和运行时状态(build-time and run-time states),包括:
OpenStack Compute的这些组件共同工作,以提供强大的云计算服务!
4、 本次安装环境介绍
《OpenStack Yoga版安装笔记(二)》中已详细描述了本次安装的环境,以下将再次进行说明:
4.1 controller node
控制节点已经安装身份服务(keystone)、镜像服务(glance)、放置服务(placement)。它还包括支持服务,如SQL数据库、消息队列、缓存(memcached)和网络时间协议(NTP)。
本次将安装计算服务(nova)的管理功能(management portions of Compute)。
将controller node虚机快照转到以下位置,然后开机:
开机后,检查controller node配置状态:
root@controller:~# chronyc sources MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* 120.25.115.20 2 7 124 301 -5955us[-7265us] +/- 33ms root@controller:~# cat /etc/netplan/00-installer-config.yaml # This is the network config written by 'subiquity' network: ethernets: ens33: addresses: - 10.0.20.11/24 nameservers: addresses: - 10.0.20.2 search: [] routes: - to: default via: 10.0.20.2 ens34: dhcp4: false version: 2 root@controller:~# cat /etc/hosts 127.0.0.1 localhost # 127.0.1.1 os-1 # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 10.0.20.11 controller 10.0.20.12 compute1 root@controller:~#
4.2 compute node
在《OpenStack Yoga版安装笔记(二)》,计算节点已经完成网卡ens33 ip地址配置、hosts文件配置、NTP配置。
计算节点运行计算服务的虚拟化部分,负责操作实例(instance)。(The compute node runs the hypervisor portion of Compute that operates instances. By default, Compute uses the kernel-based VM (KVM) hypervisor. )。默认情况下,计算服务使用基于内核的虚拟机(KVM)虚拟化技术。
将compute node虚机快照转到以下位置,然后开机:
开机后,检查compute node配置状态:
root@compute1:~# chronyc sources MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* controller 3 6 377 35 +501us[ +710us] +/- 36ms root@compute1:~# cat /etc/netplan/00-installer-config.yaml # This is the network config written by 'subiquity' network: ethernets: ens32: addresses: - 10.0.20.12/24 nameservers: addresses: - 10.0.20.2 search: [] routes: - to: default via: 10.0.20.2 ens33: dhcp4: false version: 2 root@compute1:~# cat /etc/hosts 127.0.0.1 localhost # 127.0.1.1 os-2 # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 10.0.20.11 controller 10.0.20.12 compute1 root@compute1:~# ping controller PING controller (10.0.20.11) 56(84) bytes of data. 64 bytes from controller (10.0.20.11): icmp_seq=1 ttl=64 time=0.254 ms 64 bytes from controller (10.0.20.11): icmp_seq=2 ttl=64 time=0.372 ms 64 bytes from controller (10.0.20.11): icmp_seq=3 ttl=64 time=0.412 ms ^C --- controller ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2029ms rtt min/avg/max/mdev = 0.254/0.346/0.412/0.067 ms root@compute1:~# ping www.sina.com.cn PING ww1.sinaimg.cn.w.alikunlun.com (180.163.145.206) 56(84) bytes of data. 64 bytes from 180.163.145.206 (180.163.145.206): icmp_seq=1 ttl=128 time=57.6 ms 64 bytes from 180.163.145.206 (180.163.145.206): icmp_seq=2 ttl=128 time=42.0 ms ^C --- ww1.sinaimg.cn.w.alikunlun.com ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1002ms rtt min/avg/max/mdev = 41.951/49.792/57.633/7.841 ms root@compute1:~#
(待续)