云计算基础之云计算概念
云计算基础
主机资源使用方式在云计算出现之前,常用的主机资源使用方式有: IDC托管、IDC租用、自己购买、虚拟机、...
传统的资源管理方式
资源方面:
- 初始投入/后期维护成本高,后期资源闲置浪费
人力方面:
- 纯手工操作,自动化能力差 技术水平限制,资源分配不合理
最终效果:
- 资源利用率低
虚拟化是什么?
- 就是本来没有,但是通过某种特殊的手段,让你以为有,而且确信不已,这些手段就是虚拟化技术
虚拟化的目的:
在时间上和空间上突破我们工作的限制,提升工作效率。
-
时间上:多种工作在一时间段内同时进行
-
空间上:在一台物理主机上,虚拟出来多台主机,多台主机共同做一件事情。
为什么要云计算?
对提供商而言:
资源方面:海量资源动态管理,灵活的调配,达到资源高效率使用 人力方面:技术团队高效使用
对客户而言:
使用方式多:网络访问无处不在 成本投入低:按需使用的自助服务,资源可以弹性伸缩
云计算的历史
1961年 "云"概念由计算机科学家John McCarthy提出
1990年 各大厂商开始普及并且验证了现代云计算基础的核心概念:功能服务
2006年 "云计算"出现在商业领域,Google提出"云计算"概念
2009年 美日韩将其纳入政府议程 2010年 中国将其纳入战略性产业,云计算开始在中国进入迅速发展期
2013年 政府工信部发布基于云计算的政务平台设计指南
2015年 云计算脱离争论不休和宣扬阶段,开始进入落地实施阶段
基本概念
云计算概念
云计算是一种模型,可以实现随时随地、便捷的、按需地从可配置计算资源共享池中获取所需的资源(网络、 服务器、存储、应用程序及服务),资源客户快速的供给和释放,使管理的工作量和服务提供者的介入降低至最少 。 -- 2011.9 NIST(美国国家标准与技术研究院)对云计算的修订版定义。
什么是云计算
Management 是 云计算实现的一种 方式,因为包含众多组件,所以也有人称之 为Cloud OS
从表现形式上来讲:
底层由物理硬件构建出一个环境,在这个环境上运行一个操作系统,对终端用户而言,当我们需要用到一个操 作系统或应用实现特殊功能时,它只需要向CloudOS提出申请而就能够立即申请获取一个对应的请求环境,这个环 境我们可以随时终止,开启等功能。
对于用户而言,无需关心它所需要的计算能力从哪里来,有别于传统使用计算机操作系统的状况(看得见、摸 得着) 虚拟机资源总容量,不能超过物理资源的容量大小
从本质上来讲:
-
云计算是一种资源交付的模式。它的特点是:基于网络、按需付费、弹性拓展。
-
云服务提供商基于有效的网络通信对所有资源进行统一管理,客户对使用的计算资源按需付费,计算资源使用
过程中支持弹性拓展,客户只需投入很少的管理工作就可以高效率的使用计算资源。
Private:传统/私有方式
-
优点:所有事情都亲自做,可控
-
缺点:用户成本比较高,要求自身技术水平高
-
典型软件:传统物理主机
Iaas:基础设施即服务
-
优点:底层硬件到操作系统,都不需要用户操心,省事,可以集中精力做业务项目。
-
缺点:服务商提供的东西,非自己自由定制,所以不可控
- 典型软件:OpenStack,CloudStack
PaaS:平台即服务
-
优点:我不会运维,我只会开发,底层到运行环境,都不需要用户操心,省事,可以集中精力做应用项目
-
缺点:服务商提供的东西,定制太强,不灵活,只适用于特殊的应用项目,
-
典型软件:Docker、Rocket、Openshift...
SaaS:软件、应用即服务
-
优点:所有东西都由服务商提供,自己只需要花钱使用就行了,对于广大(大中小)企业来说,SaaS是采用先 进技术实施信息化的最好途径。比如说,买企业邮箱,买财务软件云
-
缺点:对客户来说,所有东西都不可控,安全不安全,看情况。
企业云使用现状
-
弱水三千,只取一瓢,所以有眼光的和实力专一的人,做中间某一应用为"特殊服务",通过应用软件许可证费 、软件维护费以及技术支持费等方式技术变现,实现价值。
-
常见的应用服务有:DBaaS、FWaaS、LBaaS、XaaS...
-
现在创业公司,如果没有拿得出手的XaaS的话,你都不好意思说你是创业的,拉投资都拉不过来。这种模式 是很重要的。
-
举例:各种运维平台、日志管理平台、监控平台、财务平台。。。
-
所以说:"一切皆服务" 才是云计算的最终目标,再次验证了云计算不是一种技术手段,而是资源使用模式的 变革。
云供应商基本情况:
-
亚马逊:国外企业,支持分级别的资源使用
-
阿里云:国内企业,支持天级别的资源使用
-
青 云:国内企业,支持分级别的资源使用
-
腾讯云、华为云。。。
-
目前他们提供的云主机,一般只支持容量扩充,不支持缩小,因为没有必要。
常见种类
这一节我们从云计算分类、衍生云类型、使用现状三个方面来学习。 云计算分类
公有云:普遍性
-
用户按需使用,成本低廉,管理方面。
-
用户的数据保存在公有云的提供商那里,从技术上来讲,数据安全是没有办法保证的,这能从业务层面上来看待
- 比如:银行不用公有云,竞争对手的云服务战略合作伙伴
-
举例:亚马逊、阿里云、openstack。。。
私有云:专用性
-
所有资源都自己提供,安全有保障
-
技术/人力/业务成本高昂,资源利用效率低。
-
举例:vmware、公司云。。。
混合云:协调性
-
核心业务用私有云,临时需求/轻量级业务需求使用公有云
-
成本的最优使用效率
衍生云类型:
出现原因:自己搞私有云成本太高,公有云又有安全风险,所以基于公有云衍生出来一系列的云
"托管云":
- IDC机房自己做一个私有云,我按需可以租给你,当然我还支持扩展,设备你不需要买,你可以自己管,也可 以让我代管,设备你有使用权,但是产权是我的。
问题:
-
万一"一女两嫁",同一个机器,你租给了多家,安全没有保障怎么办?就出现了"专用云"
"专用云":
- 你租用的物理主机,保证只有你一个人在用
"行业云":
-
比如说银行不敢用公有云,那么某银行自己建立一个云,然后咱们同一行业的,你即想省钱又想保证安全,那 么你来使用我的行业云。
-
"政务云"、"金融云"、"游戏云"
各云模型使用现状
选用的标准:根据业务特点,成本承受能力,业务故障承受能力,技术能力,综合确定 选用哪种?
-
有实力的:自己搞一套云,富裕的话,共享一点
-
实力稍欠缺:核心自己搞一套云,其他的功能用公有云,作为补充,减轻成本
-
小微企业:由于自身特性,选择比较喜欢的云环境
基本架构
云计算基本架构
根据我们对kvm虚拟机的理解,创建虚拟机需要获取各种物理资源及其映像文件,最重要的就是映像文件。那 么在云计算基本架构中,各种资源我们好获取,重要的是VM实例的磁盘映像文件,因为该文件包含了VM实例的规 格以及各种配置信息。
为了保证用户定制的vm实例能够运行,指定主机提供VM实例所需的CPU和内存及网络资源,为了避免延迟,一 个携带操作系统的映像文件一般会在指定主机的本地磁盘空间里面。但是我们生产中一般不能确定VM实例被指定的 具体主机,所以我们一般会单独找个空间存储该映像文件,
为了资源的高使用效率,映像文件一般不包括存储功能,而是找一个专用的存储资源,按需分配存储空间,既 然是永久存储,那么磁盘/网络io就是一个性能挑战,所以也用分布式存储来解决它。
所以: 资源的计算、网络、存储是非常重要的
2) 销毁后怎么重新建?
VM实例销毁后,各种资源已各归各位,如果再重新创建规格一样的VM实例,怎么重建呢? VM实例创建后,会生成各种各样的配置信息,如果重建或者再来一个同规格的VM实例,那么他们用到的配置 信息都是一样的,所以我们需要专门找一个数据库来存放这些配置信息。数据库在整个过程中会有如下操作: 创建虚拟机实例时候,配置信息的检索 销毁虚拟机实例时候,配置信息的更新 虚拟机实例资源变更时候,配置信息的更新 ... 所以:数据库很重要,引申-数据的缓存也很重要
3) 怎么批量创建VM实例?
如果批量创建多个VM实例,是同时创建还是按顺序创建呢? 为了避免同时创建多个VM实例时候,给用户和各种资源带来的压力,我们应该按照创建请求的顺序,一个一个 的创建,而满足顺序的功能的软件,这就可以用异步协作的消息队列。 所以:消息队列很重要
通过上面的案例场景分析:
- 在云计算场景中,至少有三大支撑性服务:数据库、缓存、消息队列,三大主要功能:计算、网络、存储
虚拟化 VS 云计算
虚拟化:
虚拟化是一种技术,它的目的在于提高资源的使用率,并将底层硬件和上层的应用软件进行隔离,使得上层软 件及应用计算变得更加弹性可控。最终达到有限成本的高价值。 默认情况下,虚拟化技术默认并不对外,将底层资源抽象为上层应用软件服务,一个没有被服务化的虚拟化环 境只能被称为"资源池",只有内部管理人员才可以操作。
云计算:
它是以虚拟化技术为核心技术和基础,面向服务架构(SOA)的一种实现,将虚拟化环境"资源池"隐藏起来,将 其上层应用软件形成丰富的云管理接口,达到所有人自由使用所有资源的一种现象,他是一种资源使用模式的变革 。 所以: 虚拟化是一种技术,云计算是资源交付模式,云计算不等于虚拟化。 云计算是基于虚拟化技术的一种资源交付使用模式。
OpenStack简介
学习目标:
-
了解 openstack的定义和特点
-
说出 openstack的核心服务
-
说出 openstack的完美组件及其作用
-
了解 openstack学习环境及其特点
OpenStack简介
这一节,我们从历史、简介、核心服务、发行版本、使用简介五个方面来学习 Openstack历史
2010年的时候,云计算的老大是AWS,老二是Rackspace,老二打不过老大,所以就和NASA拉帮结派,Rac kspace拿出自己的对象存储产品项目swift,NASA拿出自己的云计算项目nova,2010年7月份将它们开源,项 目命名为OpenStack。
2012年9月,在OpenStack的6版本,Nova中的两个子项目独立出来,成立了Neutron和Cinder项目,自此 ,OpenStack的关键项目(Nova+Neutron+Cinder)就稳定了。
2016年OpenStack基本上就成了开源云计算领域的行业标准了。
OpenStack官方简介
官方地址:
- https://www.openstack.org
官方文档地址:
- https://docs.openstack.org
发行版本介绍:
- https://releases.openstack.org/index.html
OpenStack是一个正在开发中的云管理平台的"大"项目,覆盖了网络、虚拟化、操作系统、服务器等各个方面
OpenStack核心服务
三个核心服务:
- compute、networking、storage
OpenStack官方项目,基本上每半年更新一次版本,迭代周期太短。所以,企业如果要使用OpenStack的话 ,因为原生的openstack满足不了公司的业务需求,我们必须有能力(特别是二次研发)跟得上OpenStack的发展 ,成本也能承受得起,最主要的是承受得起对客户的承诺(我们提供的服务,满足您日益增长的需求)
openstack经过漫长的8年发展,它逐渐的走向了成熟。
openstack使用简介
OpenStack基于python语言开发,是一个组件非常多且复杂的技术项目,任何一个地方都有可能出问题, 使用和维护OpenStack是需要相当强的技术实力:包括运维能力、系统建构能力、二次开发能力。
一般的小型企业(服务器30-50台左右):
- 使用OpenStack在技术和成本上是一个巨大的挑战,基本上是没有必要的 如果要用虚拟化的话,ovirt(kvm虚拟机批量管理工具)即可,一两台主机搞OpenStack,吃饱了撑的 。
中大型企业(物理结点在200+左右):
- 对业务vm实例需要灵活部署运行的话,这种场景才有可能用到OpenStack
架构设计
概念图:
组件介绍
这一节,我们从组件简介、组件介绍两个方面来学习。
官方资料
-
https://www.openstack.org/software/project-navigator
-
https://docs.openstack.org/pike/projects.
-
html https://docs.openstack.org/pike/configuration/
组件简介
- https://releases.openstack.org/pike/index.html
大概目前是61个左右,一部分是基础项目,是属于OpenStack管理的项目,和用户没太多直接关系。P版中和 真正和用户有关的项目大概有36多个,能投入生产也就11个左右,最小化安装也就5-6个。
openstack团队根据组建项目的成熟及重要程度,将其分解成核心项目、孵化项目,以及支持项目和相关项 目。每个项目都有自己的委员会和项目技术主管,而且每个项目都不是一成不变的,孵化项目可以根据发展的成熟 度和重要性,转变为核心项目。
Openstack的组件:
完美组件:
-
Cinder:为VMs提供持久的块存储能力,支持多种存储方式,工作中ceph用的比较多
-
Glance:用于存储和检索磁盘映像文件,支持多种存储方式
-
Heat:openstack的任务编排工具
-
Horizon:openstack的web可视化界面
-
Keystone;为Openstack中的所有服务提供了认证、授权以及端点编录服务员
-
Nova:管理VM的所有操作
-
Netron:为Openstack提供网络的功能;插件化设计,支持众多流行的网络管理插件
-
swift;分布式存储,基于RESTful的API实现非结构化数据对象的存储及检索,工作一般用ceph 成熟组件:
-
Trove:提供数据库即服务的功能
-
sahara:在OpenStack中提供大数据服务,生产可用
-
Octavia:openstack中的负载均衡项目,生产可用。
-
IRonic,物理裸机管理,目前是非常好用。
实验组件:
- Ceilometer,用于实现监控和计量服务的实现,缺乏后续发展
实验环境
这一节,我们从学习环境、主机环境两方面来学习。
官方环境介绍:
- https://docs.openstack.org/install-guide/overview.html#example-architecture
学习环境简介
openstack的学习环境主要有三种模式:单节点、双节点、三节点
单节点部署:
- 所有组件都部署在一台主机上,没有工作意义,仅供学习使用。
两节点部署:
- 由控制节点和计算节点组成,网络功能有限
三节点部署:
- 由控制节点,计算节点和网络节点组成,网络功能有限 我们实验使用两节点环境
网络环境:
- 通过上图可看到,不管是单/双节点或多节点,其内部的网络是复杂的,如果有条件的话,实验环境采用 多网卡,如果采用单网卡,一定要注意网卡的"混杂模式",即所有类型网络数据均可通过,不做限制。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理