云计算(虚拟化)
1.1 云计算
云计算?这个词并不陌生,一句话“将硬件虚拟化,将服务部署在云端”。
用Docker可以更加贴切的形容这一过程。我们以往的软件服务大多数都是搭建在自己的机器上去Run和Test。Docker的一种想法就是将软件服务程序全部部署在云端,这里的软件服务可不仅仅只是你的代码,包括(Tomcat,Linux环境,JRE等等一系列启动这一套服务的环境)。这样做有一个好处就是解决了不同环境版本在不同机器上发生冲突的问题。程序猿A在这样的一个平台上写代码维护代码,而程序猿B要想接手程序猿A的这一套软件服务只需要进入这一“云平台”进行热部署就OK了。极大的减少了硬件的开销以及服务传承的开销。
简单来说,云计算就是计算服务的提供(包括服务器,存储,数据库,网络,软件,分析与智能)通过Internet(云)提供快速创新,弹性资源和规模经济。对于云服务,通常用户只需要使用多少就支付多少,从而帮助降低运营成本(大白话:花钱用别人的平台,搭建自己的服务。)从而帮助降低运营成本,使基础设施更有效地运行,并能根据业务需求的变化调整对服务的使用。
虚拟化是指计算元件在虚拟的基础上而不是真实的基础上运行,是一个为了简化管理,优化资源的解决方案。通过虚拟化技术把一台计算机虚拟为多台逻辑计算机,在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
通过虚拟化技术把一台计算机虚拟为多台逻辑计算机,在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
举个例子:
就像你想在自己的电脑上再装一个Ubuntu。那么Windows和Ubuntu就像两个虚拟服务器共享你电脑的硬件资源但可以相互独立。你只需要将硬盘,CPU等这些硬件资源进行虚拟化使得看起来就像是一台电脑有2个CPU,2个硬盘一样。
1.2 虚拟机、云主机、VPS 三者之间的区别
VPS:
VPS 是Virtual Private Server的英文缩写,即虚拟专用服务器。VPS就是讲一台物理服务器分隔成多个独立的虚拟专享服务器。要实现VPS需要容器技术和虚拟化技术。每台服务器有独立的IP、CPU、内存、磁盘,划分出来的每台服务器就是VPS。用户使用VPS就像是使用一台独立服务器一样,你可以自定义的安装想要的软件。
云主机:
相信你经常会听到阿里云、腾讯云、亚马逊云等热门词,但是这些云是什么意思呢。互联网中的云你可以粗略的理解为集群,一台单独的服务器无法构成云,一台服务器的计算能力始终是有限的,将N多台服务器通过云技术组建成一个集群就可以理论上提供无限大的计算能力。从内部看云主机在使用上和VPS几乎是一样的,从外部来看云主机是更高级是VPS,VPS是在一台服务器,不管怎么扩展都超不过这台服务器的计算能力,然而云主机是一个超大集群服务器分出来的,理论上他的最大计算能力就是整个集群的计算能力,因此云主机相对于VPS而言它的扩展性更好。当然云主机技术相比VPS技术更加的困难。
虚拟机:
虚拟主机也是将一台服务器分隔成若干个虚拟的专享使用空间,然而空间都不能自定义,只能支持特定的功能,并且都使用一个ip,更重要的是各个空间之间是会相互影响的,包括cpu、内存、磁盘这些都是共享的。直观来讲就是一台服务器分隔成多个空间,然后共多用户共同使用服务器资源。
是不是看起来很像?对的本质都是虚拟化只不过虚拟化的程度以及集成的程度不同,就像是一个云集的过程:虚拟机-》VPS-》云主机。
1.3 厂商介绍
接下来说一说虚拟机(主要是存储和计算这一块,其他的服务没怎么用过)吧:
首先我用过的VPS厂商:
大厂:
(国内):阿里云,腾讯云(大厂稳定,高性能负载均衡,高防御。)
插一句如果想要更加好的防御性能可以再去选择CDN防护你的机子。CloudFlare我就觉得不错。基于nginx+lua架构的Web应用防火墙(WAF, Web Application Firewall) 及分布式域名解析服务(Distributed Domain Name Server)等技术,Cloudflare可以帮助受保护站点抵御包括分布式拒绝服务攻击(DDoS, Distributed Denial of Service)在内的大多数网络攻击。
(国外):banwagong,Vultr(计时收费),谷歌云(计时收费) ,vmware。
小厂就不列举了太多了,而且性能真的难看。。。。。
1.4 框架
说完厂商再谈谈框架,现在主流的VPS虚拟框架OpenVZ、KVM、Xen、Hyper-V等。
-
OpenVZ
OpenVZ(简称OVZ)采用SWsoft的Virutozzo虚拟化服务器软件产品的内核,是基于Linux平台的操作系统级服务器虚拟化架构。这个架构直接调用宿主机(俗称:母机)中的内核,模拟生成出子服务器(俗称:VPS,小机),所以,它经过虚拟化后相对于母服务器,性能损失大概只有的1-3%。 当然OpenVZ可以超售,意思味着一台服务器总共16G内存,他可以开出配置为1G内存×17台或以上的子服务器。因为他的虚拟架构关系属于:不是你分配给客户多少资源,就扣除宿主机多少资源;而是客户用多少资源,就扣除宿主机多少资源,所以OpenVZ架构的VPS较为便宜。但由于存在超售因素,如果服务商毫无休止的超售会导致服务器的性能急剧下降。 OpenVZ另一个特点是,它是直接调用宿主机的内核,所以会导致部分软件无法使用,以及部分内核文件是无法修改。 -
KVM
KVM是Linux下的全功能虚拟化架构,基于KVM架构的VPS,默认是没有系统的,可自己上传ISO或调用服务商自带的ISO手动安装系统或使用服务商提供的官方的KVM模板。这个非常适合热爱DIY自己VPS的客户。 由于KVM架构全功能虚拟化架构,甚至拥有独立的BIOS控制,所以对宿主机性能影响较大,所以基于KVM的VPS较贵,但KVM VPS相对其它架构的VPS较为自由。 -
Xen
Xen 由剑桥大学开发,它是基于硬件的完全分割,物理上有多少的资源就只能分配多少资源,因此很难超售。可分为Xen-PV(半虚拟化),和Xen-HVM(全虚拟化)。 Xen是不能超售的,当宿主机只有16G内存以及100G硬盘时,当开Xen架构(任意一个虚拟化)的1G内存、25G硬盘的子机时,会直接占用宿主机1G内存,以及25G硬盘,所以Xen的性能,相比OpenVZ在超售的情况下要好。 Xen-PV:半虚拟化,所以它仅仅适用于linux系列VPS,但它的性能损失比较少,大概相对于宿主机的4%-8%左右。 Xen-HVM:全虚拟化,可以安装Windows或自由挂载ISO文件安装任意系统,由于是全虚拟化,所以性能损失较大,大概相对于宿主机性能损失8%-20%左右。 -
Hyper-V
Hyper-V是微软的一款虚拟化产品,大部分国内的VPS服务商使用这个架构(包括标准互联?),主要是因为其转为Windows定制,管理起来较为方便。目前的Hyper-V也支持Linux,只不过性能损失比较严重。 Hyper-V完美支持Windows系统,包括32位和64位。如果大家选购Hyper-V架构的VPS,强烈建议使用Windows。 Hyper-V目前不能超售内存,但可超售硬盘,硬盘是根据客户使用情况扣除。一般来说,宿主机的硬盘不会100%用完,这点不用担心。
总的来说,Xen和Hyper-V见的比较少,对于OpenVZ、KVM推荐选择KVM虚拟化。(KVM最常用)
1.5 常见技术
负载均衡:一句话“协调服务器各个部件的性能以达到最优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。”
热/冷迁移 :属于故障恢复技术,具体如下:
冷迁移
热迁移
冷迁移说白了就是Ctrcl+c and Ctrcl+v。
热迁移的应用场景主要是:1、硬件或系统的主动升级但又不希望中断虚机上的重要业务 2、某台物理机的负载太重,进行主动的虚拟机迁移
热迁移的好处是对用户业务的非常小,中断时间可到ms级,ping一般中断在2-6个包中断;用户内存数据进行了迁移,对业务应用无感知。坏处是迁移过程不可中断,操作复杂。