zoukankan      html  css  js  c++  java
  • 云计算基础

      云计算的各方面定义很多,基于用户的视角来看,目的就是让使用者在不需了解资源的具体情况下做到按需分配,将计算资源虚拟化为一片云。站在高处看,当前的主流云计算更贴切于云服务,个人认为可理解为早先运营商提供数据中心服务器租用服务的延伸。以前用户租用的是一台台物理服务器,现在租用的是虚拟机,是软件平台甚至是应用程序。公认的三个云计算服务层次是IaaS(Infrastructure as a Service)、PaaS(Platform as a Service)和SaaS(Software as a Service),分别对应硬件资源、平台资源和应用资源。对于用户来说:
    1、当提供商给你的是一套a  个核CPU、b G大小内存的主机、c M带宽网络以及d G大小存储空间,需要你自己去装系统和搞定应用程序,那么这就是IaaS,举例如Amazon EC2;
    2、当提供的是包含基本数据库和中间件程序的一套完整系统,但你还需要根据接口编写自己的应用程序时,那么就是PaaS,举例如Google AppEngine、Microsoft Azure和Amazon
    SimpleDB, SQS;
    3、最傻瓜的方式自然是连应用程序都写好了,例如你只需要告诉服务提供商想要的是个500人的薪酬管理系统,返回的服务就是个HTTPS的地址,设定好帐号密码就可以访问过去直接使用,这就是SaaS了,如Yahoo Hadoop和Cisco Webex: Collaboration SaaS等。

     
     
      集中云最早期的也是目前最大的一个典型实际用户就是Google了  (注意这里说的不是现在Google云服务)。搜索引擎是超级消耗资源的典型应用,从你在网页上一个关键词的搜索点击,到搜索结果的产生,后台是经过了几百上千台服务器的统一计算。
     
      分散云,这块是目前的主流,也是前面提到的云服务的关键底层技术。由于有VMware和Citrix等厂家在大力推广,而且应用内容较集中云更加平民化,随便找台PC或服务器,装几个虚拟机大家都能玩一玩,想干点儿啥都成,也就使其的认知度更加广泛。
      一虚多的最主要目的是为了提高效率,力争让所有的CPU都跑到100%,力争让所有的内存和带宽都占满。以前10台Server干的事,我整两台Server每台跑5个虚拟机VM(Virtual Machine)就搞定了,省电省空间省制冷省网线,总之省钱是第一位的(用高级词儿就是绿色环保)。技术方面从实现方案来看,目前大致可分为三类:
    ·     操作系统虚拟化OS-Level 
    ·     主机虚拟化Hosted(大家应该都在VMware Workstation 上装过虚拟机)
              先说下Hypervisor或叫做Virtual Machine Monitor(VMM),它是管理虚拟机VM的软件平台。Hypervisor就是跑在基础操作系统上的应用软件。Hypervisor构建出一整套虚拟硬件平台(CPU/Memory/Storage/Adapter),上面需要你再去安装新的操作系统和需要的应用软件,这样底层和上层的OS就可以完全无关化,诸如Windows上跑Linux一点儿问题没有。
    ·     裸金属虚拟化Bare-metal
              裸金属虚拟化中Hypervisor直接管理调用硬件资源,不需要底层操作系统,也可以理解为Hypervisor被做成了一个很薄的操作系统。这种方案的性能处于主机虚拟化与操作系统虚拟化之间。代表是VMware ESX Server、Citrix XenServer和Microsoft Hyper-V。

     
      上图描述了三种虚拟化方案的形态区别。当前分散云数据中心服务器虚拟化使用的主要是Bare-Metal方案。分散云给数据中心网络带来了新的挑战,虚拟机之间的数据通信管理需求促使了一系列网络新技术的发展。在最主流的Bare-Metal结构中,由于Hypervisor薄操作系统的引入,性能、管理、安全和可靠性等多维度的考虑,造成VM间网络通信管理发展出不同的技术道路(EVB(Edge Virtual Bridging)与BPE(Bridging Port Extend))。
      分散云除了给网络带来上述的VM通信问题,同样由于其对服务器硬件能力的极端榨取,造成网络中的流量压力增大,与集中云一样存在着带宽扩展的需求。原本一台服务器一个操作系统跑一个应用只需要10M流量带宽就够了,现在装了10个VM跑10个应用,带宽可能就需要100M了。

      
       云计算就是计算虚拟化,而存储虚拟化已经在SAN上实现得很好了,那么数据中心三大件也就剩下网络虚拟化了。那么为什么要搞网络虚拟化呢?还是被计算逼的。云计算多虚一时,所有的服务资源都成为了一个对外的虚拟资源,那么网络不管是从路径提供还是管理维护的角度来说,都得跟着把一堆的机框盒子进行多虚一统一规划。而云计算一虚多的时候,物理服务器都变成了一堆的VM,网络怎么也要想办法搞个一虚多对通路建立和管理更精细化一些不是。 
       
         网络一虚多主要分为两方面:控制平面虚拟化数据平面虚拟化
         控制平面虚拟化:
         控制平面虚拟化是将所有设备的控制平面合而为一,只有一个主体去处理整个虚拟交换机的协议处理,表项同步等工作。从结构上来说,控制平面虚拟化又可以分为纵向与横向虚拟化两种方向。 纵向虚拟化指不同层次设备之间通过虚拟化合多为一,相当于将下游交换机设备作为上游设备的接口扩展而存在,虚拟化后的交换机控制平面和转发平面都在上游设备上,下游设备只有一些简单的同步处理特性,报文转发也都需要上送到上游设备进行。可以理解为集中式转发的虚拟交换机。横向虚拟化多是将同一层次上的同类型交换机设备虚拟合一。控制平面虚拟化从一定意义上来说是真正的虚拟交换机,能够同时解决统一管理与接口扩展的需求。但是有一个很严重的问题制约了其技术的发展。在前面的云计算多虚一的时候也提到过,服务器多虚一技术目前无法做到所有资源的灵活虚拟调配,而只能基于主机级别,当多机运行时,协调者的角色(等同于框式交换机的主控板控制平面)对同一应用来说,只能主备,无法做到负载均衡。网络设备虚拟化也同样如此。总而言之,虚拟交换机支持的物理节点规模永远会受限于此控制节点的处理能力。
         数据平面虚拟化:
         前面说了控制平面虚拟化带来的规模限制问题,而且短时间内也没有办法解决,那么就想个法子躲过去。能不能只做数据平面的虚拟化呢,于是有了TRILL和SPB这里先简单说一下,他们都是用L2 ISIS作为控制协议在所有设备上进行拓扑路径计算,转发的时候会对原始报文进行外层封装,以不同的目的Tag在TRILL/SPB区域内部进行转发。对外界来说,可以认为TRILL/SPB区域网络就是一个大的虚拟交换机,Ethernet报文从入口进去后,完整的从出口吐出来,内部的转发过程对外是不可见且无意义的。
         控制平面虚拟化在二层Ethernet转发时可以有效的扩展规模范围,作为网络节点的N虚一来说,控制平面虚拟化目前N还在个位到十位数上晃悠,数据平面虚拟化的N已经可以轻松达到百位的范畴。但其缺点也很明显,引入了控制协议报文处理,增加了网络的复杂度,同时由于转发时对数据报文多了外层头的封包解包动作,降低了Ethernet的转发效率。
     
         再说网络一虚多,这个可是根源久远,从Ethernet的VLAN到IP的VPN都是大家耳熟能详的成熟技术,FC里面也有对应的VSAN技术。此类技术特点就是给转发报文里面多插入一个Tag,供不同设备统一进行识别,然后对报文进行分类转发。
         SR-IOV 网络一虚多(我主要研究的方向)
         对网络一虚多这里还有个东西要补充一下,就是服务器网卡的IO虚拟化技术。单根虚拟化SR-IOV是由PCI SIG Work Group提出的标准,Intel已经在多款网卡(Intel82599 系列)上提供了对此技术的支持,Cisco也推出了支持IO虚拟化的网卡硬件Palo。Palo网卡同时能够封装VN-Tag(VN的意思都是Virtual Network),用于支撑其FEX+VN-Link技术体系。现阶段Cisco还是以UCS系列刀片服务器集成网卡为主,后续计划向盒式服务器网卡推进,但估计会受到传统服务器和网卡厂商们的联手狙击。
         SR-IOV就是要在物理网卡上建立多个虚拟IO通道,并使其能够直接一一对应到多个VM的虚拟网卡上,用以提高虚拟服务器的转发效率。具体说是对进入服务器的报文,通过网卡的硬件查表取代服务器中间Hypervisor层的VSwitch软件查表进行转发。另外SR-IOV物理网卡理论上加块转发芯片,应该可以支持VM本地交换(其实就是个小交换机啦)。SR(Single Root)里面的Root是指服务器中间的Hypervisor,单根就是说目前一块硬件网卡只能支持一个Hypervisor。有单根就有多根,多根指可以支持多个Hypervisor,但貌似目前单物理服务器里面跑多个Hypervisor还很遥远,所以多根IO虚拟化MR-IOV也是个未来未来时。摘录Cisco胶片对MR-IOV描述如下:(HW为Hardware,PF为Physical Function,VF为Virtual Functions) 。SR-IOV只定义了物理网卡到VM之间的联系,而对外层网络设备来说,如果想识别具体的VM上面的虚拟网卡vNIC,则还要定义一个Tag在物理网卡到接入层交换机之间区分不同vNIC。此时物理网卡提供的就是一个通道作用,可以帮助交换机将虚拟网络接口延伸至服务器内部对应到每个vNIC。
     
  • 相关阅读:
    操作串口通信类(IO.Ports)SerialPort
    TreeView的数据源绑定—采用sqlite作为数据源,实现对treeview控件进行增删改查
    (Easy)打开指定的文件
    TreeView的数据源绑定—采用XML作为数据源,实现对treeview进行增删改查,之后回写XML文档
    linux sort,uniq,cut,wc命令详解
    轻快的VIM(六):恢复
    Python 常用模块大全(整理)
    定位oracle实例的当前跟踪文件名及路径
    查看session io
    查看pga使用
  • 原文地址:https://www.cnblogs.com/zhuyp1015/p/2633287.html
Copyright © 2011-2022 走看看