QVM介绍
# 云计算
云计算是一种通过互联网提供计算资源和服务的技术模型。它允许用户通过网络访问和使用计算能力、存储资源和其他服务,而无需拥有和维护实际的物理硬件和基础设施。云计算的核心理念是将计算资源作为一种服务提供,类似于传统公用事业(如电力和水),用户根据需要付费使用。
云计算通常涵盖以下几个关键方面:
- 服务模型:云计算提供不同层次的服务模型,包括基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。每个模型提供不同程度的管理和控制,适用于不同类型的应用和用户需求。
- 资源弹性和扩展性:云计算允许用户根据需求扩展或缩减计算资源。这种弹性使得用户可以根据流量变化自动调整资源,从而更有效地利用资源并避免资源浪费。
- 按需付费:云计算服务通常采用按使用量付费的模式,用户只需支付实际使用的资源和服务。这种模式与传统的购买和维护硬件不同,可以帮助企业降低成本并更好地控制预算。
- 共享资源池:云计算平台通常通过共享资源池来提供服务,多个用户可以共享同一组物理资源。这种共享机制可以提高资源的利用率,但也需要有效的资源隔离和安全措施。
- 虚拟化技术:云计算利用虚拟化技术,将物理硬件分隔成多个虚拟实例,从而使多个用户可以在同一物理硬件上运行不同的应用和工作负载。
云计算在各种领域和规模的组织中广泛应用,从个人用户到大型企业,甚至是科研机构和政府部门。它带来了灵活性、成本效益、快速部署和管理便利等优势,促进了数字化转型和创新。
# 云服务
# 弹性公网IP
弹性公网IP(Elastic Public IP)是一种云计算服务提供商(如AWS、阿里云等)提供的公网IP地址。
特点:
- 动态绑定和解绑:弹性公网IP可以动态地绑定到云服务中的实例或资源上,而不需要手动配置和更改网络设置。这使得你可以方便地将公网IP地址分配给不同的资源,以适应不同的需求。
- 可迁移性:弹性公网IP可以在不同的实例或资源之间进行迁移和转移,而无需更改IP地址。这为资源的弹性部署和管理提供了灵活性和便利性。
- 高可用性:弹性公网IP通常与云服务提供商的高可用性机制结合使用,以确保在故障或维护期间仍然能够提供稳定的公网访问。当发生故障或维护时,弹性公网IP可以自动地转移到备用实例或资源上,以保持持续的网络连接。
- 计费灵活:弹性公网IP的计费通常基于使用时长和带宽消耗,可以根据实际需求进行灵活的付费方式。这使得你可以根据资源的实际使用情况进行成本控制和优化。
案例: 假设你在云平台上运行了一个具有高可用性要求的Web应用程序。为了使该应用程序能够通过公网访问,你需要将公网IP地址分配给应用程序的实例。
在这种情况下,你可以使用弹性公网IP来实现:
- 创建实例:首先,在云平台上创建应用程序的实例,例如一台虚拟机(云服务器)。
- 分配弹性公网IP:然后,从云平台上申请一个弹性公网IP地址,并将其绑定到你的实例上。这样,你的应用程序就可以通过这个公网IP地址进行访问。
- 高可用性保障:如果你的实例发生故障或需要进行维护,你可以通过解绑弹性公网IP,将它重新绑定到备用实例上。这样,在故障期间,你的应用程序仍然可以通过公网IP地址访问,而无需更改访问配置。
- 弹性扩展:如果你的应用程序需要扩展,你可以创建更多的实例,并将弹性公网IP地址动态地绑定到这些新实例上。这样,你可以根据流量需求来调整实例的数量,并通过公网IP地址提供无缝的访问。
# 负载均衡
# vpc
专有网络VPC(Virtual Private Cloud)是您云服务构建的一个隔离的网络环境,专有网络之间逻辑上彻 底隔离。 能够在自己定义的虚拟网络中使用资源。 可以完全掌控自己的虚拟网络,例如选择自己的IP地址范围、划分网段、配置路由表和网关等,从而实现安 全而轻松的资源访问和应用程序访问。
创建示例:
在平台上创建一个vpc:指定vpc名称、IP地址范围和其他参数。例如,创建一个名为"my-vpc"的VPC,IP地址范围为192.168.0.0/16。
在对应的vpc下创建子网:在VPC内创建子网,用于划分不同的网络区域。指定子网的名称、IP地址范围、所属的可用区等。例如,创建一个名为"public-subnet"的子网,IP地址范围为192.168.1.0/24,可用区为us-east-1a。
配置路由表:创建路由表用于定义子网之间的路由规则。将子网与路由表关联,以确定子网的出站流量走向。例如,创建一个名为"public-route-table"的路由表,并将"public-subnet"与该路由表关联
路由表起着重要的作用,用于管理子网之间的网络流量转发。专有网络的路由表决定了数据包在网络中如何传输,即确定了数据包从源子网到目标子网的路径
- 公共子网:创建一个公共子网,其中包含前端Web服务器。该子网与Internet网关相连,使得Web服务器能够接收来自公共Internet的用户请求。
- 私有子网:创建一个私有子网,其中包含应用服务器和数据库服务器。该子网没有直接的Internet连接,只能通过内部网络进行通信。
- 路由表配置:配置路由表,将公共子网的流量指向Internet网关,使得用户可以通过Web服务器访问应用。同时,配置路由表将私有子网的流量指向应用服务器和数据库服务器,使得它们能够进行内部通信。
# 安全组
可以简单的理解为防火墙
安全组是一个逻辑上的分组,为具有相同安全保护需求并相互信任的云服务器、云容器、云数据库等实例提供访问策略。安全组创建后,用户可以在安全组中定义各种访问规则,当实例加入该安全组后,即受到这些访问规则的保护。
安全组规则遵循白名单规则,具体说明如下:
入方向规则:入方向指外部访问安全组内实例的指定端口。当外部请求匹配上安全组中入方向规则的源地址,并且策略为“允许”时,允许该请求进入,其他请求一律拦截。
因此,如果没有特殊需求,您一般不用在入方向配置策略为“拒绝”的规则,因为不匹配“允许”规则的请求均会被拦截。
出方向规则:出方向指安全组内实例访问外部的指定端口。在出方向中配置目的地址匹配所有IP地址的规则,并且策略为“允许”时,允许所有的内部请求出去。
规则类别 | 策略 | 类型 | 协议端口 | 源地址/目的地址 | 描述 |
---|---|---|---|---|---|
入方向规则 | 允许 | IPv4 | TCP:22 | 源地址:0.0.0.0/0 | 针对TCP(IPv4)协议,允许外部所有IP访问安全组内云服务器的SSH(22)端口,用于远程登录Linux云服务器。 |
出方向规则 | 允许 | IPv4 | TCP:80 | 目的地址:10.7.6.51/32 | 针对TCP(IPv4)协议,允许安全组内云服务器可访问外部IP(10.7.6.51)的80端口。 |
# 容灾
# openstack
# 简介
OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目。它不是一个软件,而是由几个主要的组件组合起来完成一些具体的工作。
OpenStack旨在构建一个内核,所有的软件厂商都围绕着它进行工作。OpenStack的许多子项目,对云计算平台中的各种资源(如计算能力、存储、网络)提供敏捷管理。此外,OpenStack也提供对虚拟化技术的支持。帮我们建立自己的IaaS,提供类似Amazon Web Service的服务给用户OpenStack 提供的主要服务包括:
IaaS 是云服务的最底层,主要提供一些基础资源。它与 PaaS 的区别是,用户需要自己控制底层,实现基础设施的使用逻辑
PaaS 提供软件部署平台(runtime),抽象掉了硬件和操作系统细节,可以无缝地扩展(scaling)。开发者只需要关注自己的业务逻辑,不需要关注底层
SaaS 是软件的开发、管理、部署都交给第三方,不需要关心技术问题,可以拿来即用
- Nova:计算服务,用于提供虚拟机和物理主机资源。
- Swift:对象存储服务,用于存储和检索数据。
- Cinder:是存储管理的组件。Cinder存储管理主要是指虚拟机的存储管理。
- Neutron:网络服务,提供网络连接性,包括虚拟网络、路由器、负载均衡器等。【Quantum是网络管理的组件。上面介绍nova的时候,说过网络相关的内容,都会交给Quantum。】
- Glance:虚拟机镜像查找及检索系统,实现虚拟机镜像管理的镜像存储
- Keystone:身份服务,提供认证和授权功能。
- Horizon:为所有OpenStack的服务提供了一个模块化的web-based用户界面。使用这个Web GUI,可以在云上完成大多数的操作,如启动实例,分配IP地址,设置访问控制等。
# openstack与k8s对比
OpenStack和Kubernetes(简称K8s)是两个不同的云计算技术,各自具有不同的功能和定位。以下是OpenStack和Kubernetes之间的主要区别:
- 功能定位:
- OpenStack:OpenStack是一个完整的云计算平台,旨在提供基础设施即服务(Infrastructure as a Service,IaaS)功能,包括计算、网络、存储和身份认证等服务。它专注于提供虚拟化资源和管理能力,用于构建和管理私有云和公有云环境。
- Kubernetes:Kubernetes是一个容器编排平台,旨在简化和自动化容器化应用程序的部署、扩展和管理。它提供了容器编排、服务发现、负载均衡、自动伸缩等功能,用于构建和管理容器化的应用程序。
- 技术领域:
- OpenStack:OpenStack主要关注基础设施层的管理,提供了各种虚拟机实例、网络、存储等资源的管理和分配。
- Kubernetes:Kubernetes主要关注容器编排和管理,提供了容器的自动化部署、伸缩、治理和服务发现等特性。
- 资源抽象:
- OpenStack:OpenStack通过虚拟机实例、卷、网络等资源来进行管理和分配,提供了更传统的虚拟化解决方案。
- Kubernetes:Kubernetes通过容器来进行管理和部署应用程序,充分利用容器化技术的轻量、可移植和可扩展特性。
- 应用场景:
- OpenStack:OpenStack适用于构建和管理大规模的私有云和公有云基础设施,提供多种基础设施服务,如虚拟机、网络、存储等,适用于各种应用场景。
- Kubernetes:Kubernetes适用于容器化应用程序的部署和管理,特别是在微服务架构和容器化部署模式中,支持应用程序的弹性伸缩、容错性和自动化管理。
综上所述,OpenStack和Kubernetes在功能定位、技术领域和应用场景上存在明显的差异。OpenStack专注于提供云基础设施服务,而Kubernetes专注于容器编排和管理。在实际应用中,两者可以结合使用,通过OpenStack提供底层基础设施支持,再使用Kubernetes来管理和运行容器化的应用程序。
# 一些通用平台的解释
可参考:https://www.alibabacloud.com/zh/knowledge/difference-between-iaas-paas-saas (opens new window)
部分来自chatgpt
# Iaas
(Infrastructure as a Service - 基础设施即服务)
在IaaS中,提供的是基础设施层面的服务,包括虚拟化的计算资源(虚拟机、存储、网络等)。用户可以管理操作系统、应用程序和存储,但仍需要自行维护操作系统及上层应用。
优点:用户有更大的灵活性和控制权,适用于需要自定义配置和更高控制的场景,如开发人员或系统管理员。
例子:亚马逊AWS的EC2、谷歌云平台的Compute Engine、阿里云的ECS。
# Paas
(Platform as a Service - 平台即服务)
在PaaS中,除了基础设施,还提供了开发和部署应用程序所需的平台,包括运行时环境、开发工具、数据库管理等。这使开发人员可以专注于应用程序的开发而不必担心底层基础设施。
优点:加速了应用程序的开发和部署过程,减少了基础架构管理的负担。
例子:微软的Azure App Service、Heroku、Google App Engine。
例如提供的kafka云服务。使用者只需要考虑如何使用kafka,而不需要考虑关注kafka的底层。
# SaaS
(Software as a Service - 软件即服务)
在SaaS中,提供的是完整的应用程序,用户可以通过互联网直接访问并使用,而无需安装、配置或维护软件。这些应用程序通常以订阅模式提供。
优点:无需担心应用程序的管理、维护和更新,适用于普通用户和企业用户。
例子:Salesforce、Office 365、Google Workspace(之前的 G Suite)
OpenStack 是一个开源的云计算平台,它提供了一系列的基础设施即服务(IaaS)功能,用于管理和部署虚拟化的计算、存储和网络资源。
# 组件介绍
云平台用户在经过Keystone服务认证授权后,通过Horizon或者Reset API模式创建虚拟机服务,创建过程中包括利用Nova服务创建虚拟机实例,虚拟机实例采用Glance提供镜像服务,然后使用Neutron为新建的虚拟机分配IP地址,并将其纳入虚拟网络中,之后在通过Cinder创建的卷为虚拟机挂载存储块,整个过程都在Ceilometer模块资源的监控下,Cinder产生的卷(Volume) 和Glance提供的镜像(Image)可以通过Swift的对象存储机制进行保存。
# Keystone - 身份识别服务(identy service)
keystone官方文档 (opens new window)
keystone负责对用户进行身份认证,并向被认定为合法的用户发放令牌(token)。用户持keystone发放的令牌访问openstack的其他项目,以使用其提供的服务。而各个组件中内嵌的令牌校验和权限控制机制,将于keystone配合实现对用户身份的识别和权限级别的控制,保证只有恰当的用用户才能能够对恰当的资源实施恰当的操作,以保证对不同用户资源的隔离与保护。
# Glance - 镜像服务(Image service)
通常而言,在虚拟机被创建之后,都需要为其安装一个操作系统,以便用户使用。为此,云计算系统中往往需要预置若干不同种类、不同版本的操作系统镜像,以便用户选用。此外,在一些应用场景下,为进一步方便用户,镜像中还想需要预装一些常用的应用软件,这将进一步增加镜像的种类与数量。为此,云操作系统必须具备镜像管理服务能力。Glance主要负责对系统中提供的各类镜像的元数据进行管理,并提供镜像的创建、删除、查询、上传、下载等能力。但在正常的生产环境下,Glance本身并不直接负责镜像文件的存储,而是负责保管镜像的元数据,本质上是一个管理前端,Glance需要与真正的对象存储后端对接,才能共同提供完整的镜像管理与存储服务能力。
什么是镜像服务?
镜像服务(Image Management Service)提供镜像的生命周期管理能力。 用户可以灵活地使用公共镜像、私有镜像或共享镜像申请弹性云服务器和裸金属服务器。 同时,用户还能通过已有的云服务器或使用外部镜像文件创建私有镜像,实现业务上云或云上迁移。
# Nova - 计算机服务 (Compute)
类似于Amazon的EC2,提供计算资源池的自动化管理服务 切记,Nova不是虚拟机管理软件(Hypervisor)而是处于其上的编排调度可用的计算资源 支持的虚拟机管理软件:KVM,Xen,Vmware,ESXi,Hyper-V等 还对容器技术的支持,比如:Docker,LEC
# Neutron - 网络服务 (networking service)
neutron官方文档 (opens new window)
网络服务,是任意云操作系统IaaS层能力的关键组成部分。只有基于稳定、易用、高性能的云上虚拟网络,用户才能将云计算系统提供的各类资源和服务能力连接成真正满足需求的应用系统,以解决自身的实际业务需求。Neutron及其自身孵化出来的一系列子项目,共为用户提供了从Layer2 到 Layer 7上不同层次的多种网络服务功能,包括Layer2组网(network、subnet、port)、Layer3组网、内网DHCP管理、Internet浮动IP管理、内网防火墙、负载均衡、VPN、LB等。
用户可以利用它管理虚拟网络资源和IP地址 用户可以通过门户面板,命令行和应用编程接口来创建、查看、修改和删除自己的网络,子网,端口,防火墙规则和路由器 Neutron 包含插件、代理和驱动器的模块化架构,可以提供增强的网络功能,比如:Linux bridge,Open vSwitch,LoadBalance等
# Cinder - 块存储服务(block storage service)
在典型的、基于KVM虚拟化技术的openstack部署方案下,Nova创建的虚拟机默认使用各个计算节点的本地文件系统作为数据存储。这种数据存储的生命周期与虚拟机本身的生命周期相同,即当需虚拟机被删除时,数据存储也随之被删除。如果用户希望获得生命周期独立于虚拟机自身的、能持久存在的块存储介质,则需要使用Cinder提供的块存储服务。cinder负责将不同的后端存储设备或软件定义存储集群提供的存储能力,统一抽象为块存储资源池,然后根据不同需求划分为大小各异的卷,分配给用户使用。
# Swift - 对象存储服务 (object storage service)
类似于Amazon的S3,提供安全的、持久的和高可扩展性的云存储 用户可以创建账户、容器和对象(如各种类型的文件) 在swift后端,每个文件跨数据中心多个服务器的磁盘存储,并实现了文件复制功能
对象存储服务是云计算领域中一种常见的数据存储服务,通常与存储单文件数据量较大,访问不甚频繁、对数据访问延迟要求不高、对数据存储较为敏感的场景。Swift本身实现了完整的对象存储系统功能,甚至可以独立于openstack,被单独作为一个对象存储系统加以应用。在openstack中,Swift也可以作为Glance的后端存储,负责存储镜像文件。
# Ceilometer - 计量服务 (Telemetry)
ceilometer官方文档 (opens new window)
Ceilometer中有五个重要组件和一个Message Bus组成 Ceilometer-agent-compute:收集计算节点上信息的代理,运行在计算节点上,是计算节点上数据收集的代理 Ceilometer-agent-central:运行在控制节点上,轮询服务的非持续化数据 Ceilometer-collector:运行在一个或多个控制节点上,监听信息总线Message Bus,将收到的消息以及相关数据写入到数据库中。 Storage:数据存储,支持MongDB、MySQL等,用于存储收集到的样本数据 API server:运行在控制节点上,提供对数据库数据的访问 Message Bus:计量数据的消息总线,收集数据提供给Ceilometer-collector
# Horizon - 控制面板服务 (Dashboard)
horizon官方文档 (opens new window)
Dashboard为管理员提供了一个图形化的接口。 可以访问和管理基于云计算的资源:计算,存储,网络等。 提供了很高的可扩展性,支持添加第三方的自定义模块,比如:计费、监控和额外的管理工具。 支持其他云计算提供商在Dashboard进行二次开发。
# Heat - 部署编排 (Orchestration)
提供了一种通过模板定义的协同部署方式,实现云基础设施软件运行环境(计算、存储和网络资源)的自动化部署。自Havana版本集成到项目中。
# Trove- 数据库服务(Database Service)
为用户在OpenStack的环境提供可扩展和可靠的关系和非关系数据库引擎服务。自Icehouse版本集成到项目中。
工作流程
Open Stack的各个服务之间通过统一的REST风格的API调用,实现系统的松耦合。它内部组件的工作过程是一个有序的整体。诸如计算资源分配、控制调度、网络通信等都通过AMQP实现。 Open Stack的上层用户是程序员、一般用户和 Horizon界面等模块。这三者都是采用 Open Stack各个组件提供的API接口进行交互,而它们之间则是通过AMQP进行互相调用,它们共同利用底层的虚拟资源为上层用户和程序提供云计算服务。
架构图:
# 什么是openstack api
OpenStack的API是一组用于管理和操作OpenStack云平台资源的接口和协议。OpenStack是一个开源的IaaS(基础设施即服务)平台,它提供了一系列云计算服务,包括计算、存储、网络等,以及相应的API,使用户能够通过编程方式访问和管理这些服务。
OpenStack的API允许用户通过HTTP请求与OpenStack云平台进行交互,以创建、删除、修改和查询虚拟机、存储、网络等资源。这些API是基于RESTful架构设计的,使用常见的HTTP方法(如GET、POST、PUT、DELETE)来执行操作,并返回JSON或XML格式的数据作为响应。
一些常见的OpenStack API包括:
- Nova API(Compute):用于管理虚拟机实例和计算资源,包括创建、删除、启动、停止虚拟机等操作。
- Neutron API(Networking):用于管理网络资源,包括创建、配置虚拟网络、子网、路由等操作。
- Cinder API(Block Storage):用于管理块存储资源,包括创建、附加、分离卷等操作。
- Swift API(Object Storage):用于管理对象存储资源,支持上传、下载、删除对象等操作。
- Keystone API(Identity):用于身份认证和授权,管理用户、项目、角色等身份信息。
- Glance API(Image):用于管理虚拟机镜像,包括上传、下载、删除镜像等操作。
- Heat API(Orchestration):用于编排应用和资源,实现自动化部署和伸缩。
- Horizon API(Dashboard):用于管理和监控OpenStack资源的Web界面API。
通过使用这些API,开发人员可以通过编程方式实现自动化的资源管理、部署和监控。同时,这些API也允许OpenStack与其他系统和服务进行集成,实现更广泛的功能。不同版本的OpenStack可能会有略微不同的API细节,因此在使用特定版本的OpenStack时,需要查阅相应版本的API文档。
学习参考:
https://bbs.huaweicloud.com/blogs/194512
https://blog.csdn.net/m0_49526543/article/details/110955575
https://www.xjimmy.com/study_openstack
CSDN:Open Stack 简介 (opens new window)
Open Stack官方文档 (opens new window)
OpenStack入门科普,看这一篇就够啦! (opens new window)
Open Stack 创建虚拟机 (opens new window)
问题:
- Open Stack 与成熟的Iaas服务有什么区别
- Open Stack与VMware Horizon这个软件有什么联系和区别
如何学习Openstack
学习OpenStack需要一定的计算机和云计算基础,以及逐步深入的学习方法。以下是一个学习OpenStack的指南:
- 建立基础知识:
- 确保你有一定的计算机基础,包括操作系统、网络和虚拟化等概念。
- 了解云计算的基本概念,包括IaaS、PaaS、SaaS等。
- 掌握基本的Linux命令行操作,因为OpenStack通常在Linux环境下部署和管理。
- 阅读官方文档:
- OpenStack有详细的官方文档,包括安装指南、架构指南、API文档等。你可以从官方网站获取这些文档,根据自己的兴趣和需求选择阅读。
- 选择学习路径:
- 选择一个特定的OpenStack项目作为起点,比如Nova(计算服务)、Neutron(网络服务)、Cinder(块存储服务)等。逐步学习和理解该项目的架构和功能。
- 实践部署:
- 在虚拟机或本地环境中尝试部署一个简单的OpenStack实例。这可以帮助你熟悉OpenStack的组件和配置。
- 在线课程和教程:
- 有许多在线课程和教程专门教授OpenStack的概念和实践。你可以在平台如Coursera、edX、Udemy等搜索相关课程。
- 阅读书籍和资料:
- 有一些专门介绍OpenStack的书籍,如《OpenStack in Action》、《Mastering OpenStack》等。这些书籍可以帮助你系统地学习OpenStack。
- 参与社区和论坛:
- 加入OpenStack社区,参与讨论和交流。社区是一个获取实践经验和解决问题的好地方。
- 实际项目经验:
- 尝试在实际项目中应用OpenStack。这可以是自己的个人项目,也可以是参与实际的工作项目。实际操作可以加深你的理解和技能。
- 持续学习和更新:
- 云计算和OpenStack都在不断发展变化,保持学习的状态,关注新版本、新功能和最佳实践。
- 虚拟实验室环境:
- 创建一个虚拟实验室环境,使用虚拟机或者容器,尝试在其中搭建、配置、测试OpenStack,从而进行更深入的学习和实践。
总之,学习OpenStack需要耐心和时间,建议你从基础知识开始,逐步深入,结合实际操作和理论学习,最终建立起扎实的OpenStack技能。
虚拟化技术学习 -> 本地搭建Openstack环境 -> 学习各个组件。
network提供网络服务,提供存储服务,虚拟机需要操作系统,image提供镜像服务,镜像本身存储在对象存储里面,另外,各个组角之间需要通过identity进行鉴权,dashboard通过rest api与各个组件进行交互
![image-20230824161703579](/Users/zhengjian/Library/Application Support/typora-user-images/image-20230824161703579.png)
参考:聊聊虚机、容器、OpenStack、K8s、IaaS、PaaS (opens new window)