什么是云计算
“云计算”这个词,相信大家都非常熟悉了。
作为IT行业的热门技术,它频繁出现在各大媒体的新闻报道中。BAT这样的互联网企业,也经常把它挂在嘴边。
相信很多人都想学习云计算,跟上技术潮流。如果对云计算有一定了解的话,应该会或多或少地听到这些名词——OpenStack、Hypervisor、KVM、Docker、K8S…
这些名词,全部都属于云计算的范畴。
对于自学的初学者来说,想要理解这些名词的具体含义,还有它们之间的关系,并不是一件容易的事情。
虽然互联网上有很多的资料,但是杂乱无章、晦涩难懂,对新人很不友好,容易让人晕头转向,甚至打退堂鼓。
再后来,单机性能越来越强,就有了服务器(Server)。人们发现,可以把一些服务器集中起来,放在机房里,然后让用户通过网络,去访问和使用机房里的计算机资源。
再再后来,小型网络变成了大型网络,就有了互联网(Internet)。小型机房变成了大型机房,就有了IDC(Internet Data Center,互联网数据中心)。
当越来越多的计算机资源和应用服务(Application,例如看网页,下电影)被集中起来,就变成了——“云计算(Cloud Computing)”。无数的大型机房,就成了“云端”。
我们把计算机资源,放在云端。这个计算机资源,实际上,分为好几种层次:
第一层次,是最底层的硬件资源,主要包括CPU(计算资源),硬盘(存储资源),还有网卡(网络资源)等。
第二层次,要高级一些,我不打算直接使用CPU、硬盘、网卡,我希望你把操作系统(例如Windows、Linux)装好,把数据库软件装好,我再来使用。
第三层次,更高级一些,你不但要装好操作系统这些基本的,还要把具体的应用软件装好,例如FTP服务端软件、在线视频服务端软件等,我可以直接使用服务。
就是大家经常听到的IaaS、Paas、SaaS。
目前主流的云计算服务提供商,例如亚马逊AWS、腾讯云、阿里云、华为云,说白了,都是为大家提供以上三个层次的云资源。你想要什么,它们就提供什么。
这么多样化多层次的云计算服务,阿里、华为们又是怎么提供的呢?
难道说,人工安排?——
如果你要八核CPU、16GB内存、500GB硬盘的服务器,阿里临时安排工程师帮你组装?如果你要装CentOS 7(一种类Linux操作系统),MySQL 5.5.60(一种数据库系统),阿里也临时让工程师帮你安装配置?
这显然是不可能的,耗不起人力,也等不起时间。
于是,就有了各种软件和平台,负责对资源进行调用和管理。
什么是虚拟化
如果要对物理资源进行管理,第一步,就是“虚拟化”。
虚拟化是云计算的基础。简单来说,虚拟化就是在一台物理服务器上,运行多台“虚拟服务器”。这种虚拟服务器,也叫虚拟机(VM,Virtual Machine)。
从表面来看,这些虚拟机都是独立的服务器,但实际上,它们共享物理服务器的CPU、内存、硬件、网卡等资源。
物理机,通常称为“宿主机(Host)”。虚拟机,则称为“客户机(Guest)”。
谁来完成物理资源虚拟化的工作呢?
像VMware、KVM、Xen、Virtual Box,都属于Hypervisor。
VMware大家应该很熟悉,就是VMware Workstation。学习Linux的话,很多人都是在windows系统下安装WMware,然后创建Linux虚拟机。
但是,真正厉害的,是 KVM(kernel-based virtual machine,基于Linux内核的虚拟机)。它是目前最热门最受追捧的虚拟化方案。
KVM这样的Hypervisor软件,实际上是提供了一种虚拟化能力,模拟CPU的运行,更为底层。但是它的用户交互并不良好,不方便使用。
于是,为了更好地管理虚拟机,就需要OpenStack这样的云管理平台。
关于OpenStack。它有点像个商店,负责管理商品(计算资源、存储资源、网络资源等),卖给用户,但它本身不制造商品(不具备虚拟化能力),它的商品,来自于KVM。当然,如果不用KVM,也可以用Xen等其它hypervisor。
OpenStack的管理界面,比命令行好多了吧?
容器 VS 虚拟机
上面所说的几个概念,包括VM、KVM、OpenStack等,都主要属于IaaS(基础设施即服务)。
根据前文所说的虚拟化方式,人们在使用一段时间后发现,它存在一些问题:
不同的用户,有时候只是希望运行各自的一些简单程序,跑一个小进程。为了不相互影响,就要建立虚拟机。如果建虚拟机,显然浪费就会有点大,而且操作也比较复杂,花费时间也会比较长。
而且,有的时候,想要迁移自己的服务程序,就要迁移整个虚拟机。显然,迁移过程也会很复杂。
有没有办法更灵活快速一些呢?
有,这就引入了“容器(Container)”。
那么,容器、Docker、K8S,又是什么呢?
容器也是虚拟化,但是属于“轻量级”的虚拟化。它的目的和虚拟机一样,都是为了创造“隔离环境”。但是,它又和虚拟机有很大的不同——虚拟机是操作系统级别的资源隔离,而容器本质上是进程级的资源隔离。
而大家常听说的Docker,就是创建容器的工具,是应用容器引擎。
Docker的中文意思,就是码头工人。而它的LOGO,就是一只鲸鱼背着很多货柜箱。
相比于传统的虚拟机,Docker的优势很明显,它启动时间很快,是秒级,而且对资源的利用率很高(一台主机可以同时运行几千个Docker容器)。此外,它占的空间很小,虚拟机一般要几GB到几十GB,而容器只需要MB级甚至KB级。
除了Docker对容器进行创建之外,我们还需要一个工具,对容器进行编排。
这个工具,就是K8S。
K8S,就是Kubernetes,中文意思是舵手或导航员。Kubernetes这个单词很长,所以大家把中间8个字母缩写成8,就成了K8S。
K8S是一个容器集群管理系统,主要职责是容器编排(Container Orchestration)——启动容器,自动化部署、扩展和管理容器应用,还有回收容器。
简单来说,K8S有点像容器的保姆。它负责管理容器在哪个机器上运行,监控容器是否存在问题,控制容器和外界的通信,等等。
通过左边这张K8S系统结构图,就能够看出K8S和容器之间的关系。
除了K8S之外,还有很多种容器管理平台,例如Compose,Marathon,Swarm,Mesos等。
Docker和K8S,关注的不再是基础设施和物理资源,而是应用层,所以,就属于PaaS。
公有云、私有云、混合云
• 概念
公有云通常指第三⽅提供商为⽤户提供的能够使⽤的云,公有云⼀般可通过Internet 使⽤,可能是免费或成本低廉的,公有云的核⼼属性是共享资源服务。这种云有许多实例,可在当今整个开放的公有⽹络中提供服务。
• 举例
公有云服务提供商有Amazon、Google和微软,以及国内的阿⾥云、腾讯云等。
• 优点
公有云的优势是成本低,扩展性⾮常好,作为⼀个⽀撑平台,能够整合上游的服务(如增值业务,⼴告)提供者和下游最终⽤户,打造新的价值链和⽣态系统。它使客户能够访问和共享基本的计算机基础设施,其中包括硬件、存储和带宽等资源。
• 缺点
◦ 对于云端的资源缺乏控制、保密数据的安全性、⽹络性能和匹配性差等问题
将现有业务迁移到公有云中,可将物理服务器从机房中解放出来,节省设备和空间。
无需投入服务器和存储等硬件
标准化的操作页面,不需要IT运维人员掌握专业技能,降低学习成本
不需要专门投入人力对云端设备进行维护,降低用人成本
不需要额外建设网络
支持虚拟机存储快照功能
支持故障转移与负载均衡
支持多种网络线路,保证网络稳定
支持虚拟/专用网络设置
支持API接口,以便和其他系统对接,方便管理
• 概念
私有云(Private Clouds)是为一个客户单独使用而构建的,因而提供对数据、安全性和服务质量的最有效控制。该公司拥有基础设施,并可以控制在此基础设施上部署应用程序的方式。私有云可部署在企业数据中心的防火墙内,也可以将它们部署在一个安全的主机托管场所,私有云的核心属性是专有资源。
• 优点
私有云服务通常来说安全性⾼,服务稳定,管理⽅便。因为单个公司是唯⼀可以访问它的指定实体,这也使组织更容易定制其资源以满⾜特定的IT要求。
• 缺点
建⽴成本较⾼,共享性低,私有云的⾼度安全性使得从远程位置访问变得较困难。
灵活性好,可支持现有不同软硬件配置的服务器
可扩展性好,随时可以添加或删除硬件节点
可靠性高,支持在线故障迁移、负载均衡、存储高可靠,不会因为硬件故障、满载而造成业务系统中断或失去响应
适用性广,云平台即能作为私有云在内部进行使用,又能作为公有云对外运营,不仅要最大化利用硬件资源,也可以让硬件资源产生附加价值
安全性高,支持通讯加密、分区部署,可抵御一般性网络攻击
支持计划任务,可将常用管理操作定时完成,减少维护人员工作量
支持多租户管理方式,可基于用户、角色的功能权限进行控制
支持资源生命周期管理,资源超过其使用期限后自动释放,杜绝浪费
如考虑后续转化为公有云运营,须支持多种计费模式和支付功能
对比
张三⾃⼰在家做饭吃,这是私有云,厨房就是⾃建机房。
李四天天在饭店吃,这是公有云,饭店就是云数据中⼼。
然后王五⽐较⽜叉,在饭店有个固定包间,不对外开放,这是托管型私有云(有的⼚商将其定义为专有云)。
包间就好⽐云数据中⼼的托管服务器。
某⼀天张三家来了⼗来个客⼈,这是业务突增,家⾥没法坐下那么多⼈,要去饭店,这是私有云转公有云。
然后张三爸妈为了省点钱决定留在家⾥吃,张三带着客⼈去饭店吃,这就是混合云。
云产品服务
弹性计算云服务
云网络服务( SDR )
虚拟2层网络
相对于传统的VLAN,为了实现和硬件物理网络解耦,业界引入了Overlay网络的概念,因此,云网络中的L2网络服务除了VLAN,还会有VxLAN、NVGRE、 STT等多种类型的二层网络。
虚拟3层网络服务
实现虚拟路由器功能,
虚拟专用网络服务
VPN
负载均衡服务
把负载均衡作为前端Server入口,自动伸缩的负载单元作为后端Member,通过
后端Member数量的扩减容,实现按负载的自动化伸缩。
虚拟防火墙及安全组隔离服务
主要完成不同安全等级的网络隔离和访问控制功能
存储服务
提供以通用服务器及其硬盘为基础的全分布式平台,具备水平无级扩展、超大容量等特点,并通过瘦分配、跨用户的重复数据删除、数据压缩等大幅降低云存储的设备及运维成本,实现超高性价比存储方案,提升云存储类业务的利润空间
所提供的块存储跨服务器、跨机柜的数据可靠性冗余机制(2份或3份拷贝)可以为存储云功能提供超越PC本地存储的数据可靠性保障,同时基于对象存储的快照机制和异地容灾机制,使得存储云数据在更大灾难发生时也有机会还原为最近一次快照时刻的存储数据内容
桌面云服务
定义:
基于云计算平台的弹性计算、弹性存储、操作运维及业务发放管理系统功能,通过集成桌面云会话控制管理及远程虚拟桌面控制代理等模块,提供针对企业内部应用的呼叫中心桌面云、营业厅终端桌面云、 Office办公桌面云解决方案,以及面向公众网用户的VDI出租业务
优势
数据上移、易于维护、投资低、易扩展
企业私有云
在保障业务运行效率与性能不下降的前提下