云计算:拼的就是运维!

云计算的IaaS、PaaS、SaaS*后那个S都是Service。就是说,无论你云计算长成什么样,都得要向用户提供“服务”而不仅仅是软硬件和各种资源。

云计算的技术难点 640?wx_fmt=png

到今天,云计算的工业实现已经不太难了。现在有开源软件KVM和Xen,这两个东西基本把虚拟化搞定;而OpenStack则把管理、控制系统搞定,也很成熟。PaaS也有相应的开源,比如OpenShift,而Java里也有N多的中间件框架和技术。另外分布式文件系统GFS/TFS,分布式计算系统Hadoop/Hbase等等,分布式的东西都不神秘了。技术的实现在以前可能是问题,现在不是了。

对于云计算工程方面,现在*难的是运维。管100台、1万台还是100万台机器,那是完全不同的。机器少你可以用人管理,机器多是不可能靠人的。运维系统不属于功能性的东西,用户看不见,所以这是被大家严重低估的东西。只要你做大了,就必然要在运维系统上做文章。数据中心/云计算拼的就是运维能力。

为什么我说运维比较复杂,原因有这么几个。

一方面,云计算要用廉价设备取代那些昂贵的解决方案。所谓互联网的文化就是屌丝文化,屌丝就是便宜,互联网就是要用便宜的东西搭建出高质量的东西,硬件和资源一定不会走高端路线——比如EMC、IBM小型机、SGI超级计算机等等,你如果用它去搭建云计算,成本太贵。用廉价的解决方案代替昂贵的解决方案是整个计算机发展史中到今天唯一不变的事情。所以如果你要让夏利车跑出奔驰车的感觉,你需要自己动手做很多事,搭建一个智能的系统。用廉价的东西做出高质量的东西,运维好廉价的设备其实是云计算工程里*大的挑战。

另一方面,因为你机器多了,然后你用的又不是昂贵的硬件,所以故障就变成了常态,硬盘、主板、网络天天坏。所以,没什么好想的,运维就必须要跟上。云计算的目标是在故障成为常态的情况下保证高可用——也就是我们所说的,你服务的可用性是3个9、4个9还是5个9。

*后,这一大堆机器和设备都放在一起,你的安全就是一个挑战,一方面是Security,另一方面是Safety,保证数十台数百台的设备的安全还好说,但是对于数万数十万台的设计,就没有那么简单了。

面对这样的难题,人是无法搞得定的,你只能依靠技术来管理和运维整个平台。比如必须有监控系统。这跟操作系统一样,对资源的管理,对网络流量、CPU利用率、进程、内存等等的状态肯定要全部收集的。收集整个集群各种节点的状态,是必然每个云计算都有的,都是大同小异的。

然后,你还要找到可用性更好的节点,这需要有一些故障自检的功能。比如阿里云就遇到过磁盘用到一定时候就会莫名其妙的不稳定,有些磁盘的I/O会变慢。变慢的原因有可是硬盘不行了,于是硬盘控制器可能因为CRC校验出错需要要多读几次,这就好比TCP的包传过来,数据出错了,需要重新传。在这种硬盘处理半死不活的状态时,你肯定是需要一个自动检测或自动发现的程序去监控这种事情,当这个磁盘可能不行了,标记成坏磁盘,别用它,到别的磁盘上读复本去。我们要有故障自动检测、预测的措施,才能驱动故障,而不是被动响应故障,用户体验才会好。换句话说,我们需要自动化的、主动的运维。

为了数据的高可用性,你只能使用数据冗余,写多份到不同的节点——工业界标准写三份是安全。然而,你做了冗余,又有数据一致性问题。为了解决冗余带来的一致性问题,才有了paxos的投票玩法,大家投票这个能不能改,于是你就需要一个强大的控制系统来控制这些东西。

另外,公有云人来人往,里面的资源和服务今天用明天不用,有分配有释放,有冻结,你还要搞一个资源管理系统来管理这些资源的生命状态。还有权限管理,就像AWS的IAM一样,如果没有像AWS的IAM权限管理系统,AWS可能会不会像今天这样有很多大的公司来用。企业级的云平台,你需要有企业级的运维和管理能力。

云计算的门槛 640?wx_fmt=png

为啥云计算有这么多开源的东西,却不是人人都能做?

一方面,这就跟盖楼一样。盖楼的技术没什么难的(当然,盖高楼是很难的),但是你没地你怎么盖?我觉得云计算也一样,带宽的价格贵得就像土地的价格。其实云计算跟房地产一样,要占地、占机房、占带宽。如果能把中国所有的机房、机柜、带宽资源都买了,你就不用做云计算了,卖土地就够了——因为这些是有限的。*简单的例子,IP地址是有限的。你有带宽、有机房,但是如果你没有IP,这就不好玩了。尤其是你要提供CDN服务,这个就更明显,因为有多少物理节点直接决定你的CDN服务质量。

另一方面,正如前面所说的,运维是件很难的事,运维这个事并不是一般人能搞的事。没有足够的场景、经验和时间,这种能力很难出现。

从用户的角度来说呢,云计算是一种服务,你需要对用户企业内的解决方案要有很好的了解,这样才能提高很好的服务。能提供“好服务”的通常都是把自己真正当成用户公司。

卖汽车也是卖服务。造出汽车来,并不代表你搞定这个事了。如果没有公路、没有加油站、没有4s店、没有交通管理、规则等等,你要么用不了,要么就是乱七八糟。不能只让用户在那看着你的汽车好牛啊,但是用户不知道怎么用。所以说,云计算*终旁边必须要有一套服务设施,而这套服务设施也是今天被人低估的。

云计算有两个东西我觉得是被人低估的,一个是运维,一个是那堆服务。做服务的需要有生态环境,有人帮你做。所以做云计算要落地并不简单。

总之,云计算是需要吃自己的狗食才能吃出来的,*不是像手机上的Apps一样,你想一想、试一试就能搞出来的,你首先需要让自己有这样的场景,有这样的经历,你才可能会有这样的经验和能力。

还是那句话,云就是服务,只要提供了好的服务,无论公有还是私有都是会有价值的。

云计算与云存储,具体是什么关系?

现在的IT业界对于云集计算的钟爱超过了以往的任何时候,云计算产业被认为是继大型计算机、个人计算机、互联网之后的 第四次IT产业革命,IT行业进入云时代,对IT界的大小企业来说云计算就是一次炼狱。其实在某种的意义上云计算并不是一项全新的技术,是在信息化积累到一定的程度需要对于IT资源进行有效整合的客观需求催生的,因此在云计算整个的发展过程我们会看到过去很多看见过的技术跟应用模式。

云计算与云存储,具体是什么关系?云计算与云存储,具体是什么关系?

云计算的概念现在已经很明晰,云计算之所以能够在*近几年快速兴起,是因为用户渴望能够充分利用IT资源来给业务提供即时按需的高效服务。云计算具体指的是:狭义云计算指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可是其他服务。

这是云计算的一个核心的概念,其实简单的理解就是将大量用网络连接的计算资源统一管理和调度,构成一个计算资源池向用户按需服务。提供资源的网络被称为“云”。这种“云”服务,我们可以随时的享用,只是这种服务有偿的。

说了这么多的云计算究竟什么是云存储?究竟目前云存储发展到什么程度了?云存储是在云计算(cloud computing)概念上延伸和发展出来的一个新的概念,是指通过集群应用、网格技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统。当云计算系统运算和处理的核心是大量数据的存储和管理时,云计算系统中就需要配置大量的存储设备,那么云计算系统就转变成为一个云存储系统,所以云存储是一个以数据存储和管理为核心的云计算系统。

就如同云状的广域网和互联网一样,云存储对使用者来讲,不是指某一个具体的设备,而是指一个由许许多多个存储设备和服务器所构成的集合体。使用者使用云存储,并不是使用某一个存储设备,而是使用整个云存储系统带来的一种数据访问服务。所以严格来讲,云存储不是存储,而是一种服务。

从两者的关系来看,云存储和云计算之间的关系还是很好理解的,云存储和云计算相比较,可以认为是云存储配置了大容量存储空间的一个云计算系统。

未来云计算的应用会更加细致的深入到我们日常的生活中去,未来基于云计算的云存储会更加的深入到目前的移动互联行业,而我们现在的智能有手机在未来将有一个具有大容量云端存储,正如前面所说的,云存储不是实物,是服务,未来市场潜力巨大。

传统运维和云运维区别比较不同观点想法

有人说在云计算工程领域,*难的部分是运维,因为管100台、1万台或是100万台机器,是完全不同的概念,你想机器少可以人管,机器多了还能靠人么,当然不能了。再则,运维系统不属于功能性的东西,常常因为用户看不见而被严重的低估。在8月份的“云计算运维的那些坑儿”那期在线培训中,VisualOps CTO王旭也谈过云计算运维的相关问题。但这里说的机房运维只是云计算运维的一个部分,事实上,随着云平台被越来越多的企业被认可和使用,越来越多的用户开始在云平台上部署自己的应用,如何在云平台上进行自动化运维也就被越来越多的企业所关注的难题。

云计算时代的运维和传统的运维到底有哪些不同?亚马逊AWS中国云解决方案架构师王毅表示传统层面的运维人员,接触的都是硬件,如服务器、设备和风火水电,但是在云时代,运维人员已经无法见到物理的任何设备。所以从这个角度看来,云计算时代的运维的手段和运维的目的都和传统的运维都是不一样的,因为运维人员不需要维护物理硬件的稳定和可靠性。

当然,上帝在开了一扇门的同时想必也是会合上一扇窗户。既然运维人员不再需要被束缚于物理硬件的稳定和可靠性,那新的问题就来了。云计算时代,也给用户带来了新的挑战。

在亚马逊AWS中国云解决方案架构师王毅看来,云计算带来的不同于传统运维的应用层面的三个挑战:

应用如何在云平台上实现应用的快速部署,快速更新,实时监控。云计算时代要求运维人员能够自动化地部署应用程序和所有支持的软件和软件包,然后通过生命周期阶段操作维护和管理应用程序,如自动扩展事件和进行软件更新等一系列的操作。如何快速创建和复制资源模板。有序地对资源模版进行资源配置和更新;如何在云端更加轻松的部署、配置和管理应用。如何利用工具轻松地在云中快速部署和管理应用程序,同时可以自动处理容量预配置、负载均衡、Auto Scaling和应用程序状况监控,这是对运维人员的新要求。面对这些挑战和变化,大部分运维人员开始了转型之路以应对时代的变化。谈到运维人员转型的建议,王毅认为传统的运维更多的是与物理设备打交道,很少接触操作系统甚至是应用程序的层面。所以他建议运维人员在云平台阶段应该更多介入软件部分,而且需要有代码基础。因为在云时代,infrastructure as code,所有对物理设备的操作都变成了代码。

有人说在云计算工程领域,*难的部分是运维,因为管100台、1万台或是100万台机器,是完全不同的概念,你想机器少可以人管,机器多了还能靠人么,当然不能了。再则,运维系统不属于功能性的东西,常常因为用户看不见而被严重的低估。在8月份的“云计算运维的那些坑儿”那期在线培训中,VisualOps CTO王旭也谈过云计算运维的相关问题。但这里说的机房运维只是云计算运维的一个部分,事实上,随着云平台被越来越多的企业被认可和使用,越来越多的用户开始在云平台上部署自己的应用,如何在云平台上进行自动化运维也就被越来越多的企业所关注的难题。

云计算时代的运维和传统的运维到底有哪些不同?亚马逊AWS中国云解决方案架构师王毅表示传统层面的运维人员,接触的都是硬件,如服务器、设备和风火水电,但是在云时代,运维人员已经无法见到物理的任何设备。所以从这个角度看来,云计算时代的运维的手段和运维的目的都和传统的运维都是不一样的,因为运维人员不需要维护物理硬件的稳定和可靠性。

当然,上帝在开了一扇门的同时想必也是会合上一扇窗户。既然运维人员不再需要被束缚于物理硬件的稳定和可靠性,那新的问题就来了。云计算时代,也给用户带来了新的挑战。

在亚马逊AWS中国云解决方案架构师王毅看来,云计算带来的不同于传统运维的应用层面的三个挑战:应用 如何在云平台上实现应用的快速部署,快速更新,实时监控。云计算时代要求运维人员能够自动化地部署应用程序和所有支持的软件和软件包,然后通过生命周期阶段操作维护和管理应用程序,如自动扩展事件和进行软件更新等一系列的操作。如何快速创建和复制资源模板。有序地对资源模版进行资源配置和更新;如何在云端更加轻松的部署、配置和管理应用。如何利用工具轻松地在云中快速部署和管理应用程序,同时可以自动处理容量预配置、负载均衡、Auto Scaling和应用程序状况监控,这是对运维人员的新要求。面对这些挑战和变化,大部分运维人员开始了转型之路以应对时代的变化。谈到运维人员转型的建议,王毅认为传统的运维更多的是与物理设备打交道,很少接触操作系统甚至是应用程序的层面。所以他建议运维人员在云平台阶段应该更多介入软件部分,而且需要有代码基础。因为在云时代,infrastructure as code,所有对物理设备的操作都变成了代码。

正如Joyent(公共云平台)的系统工程主管Ben Rockwood*近解释的那样:“客户可以随意启动应用程序,而我们可能视之为滥用。”曾有一回,由于客户帐户出现了貌似违规的活动,Joyent正打算关闭一个客户应用程序,但该客户的开发人员在*后一刻介入了。‘这些开发人员告诉我们,他们的内部IT人员很差劲,于是他们用私人信用卡启动了一个大项目。’”

由于众多用户竭力要求更快速、更频繁地部署,而且需要配置数量更多的资源,云计算为开发人员提供了一种诱人的机会,可以避开公司的IT运维部门。正如GigaOm网站的Barb Darrow引用Gartner的*近报告:“IT人员过去手握数据王国的钥匙,也就是说控制着哪些应用程序和数据在哪里运行,在哪些设备上运行。现在这一切都发生了变化――变化很大,这归因于IT消费化和这种计算能力的出现:即内部开发人员可以在亚马逊网络服务平台上启用计算能力,用小额现金支付,不需要经过IT部门的批准。”

云计算给IT运维带来新机会

由于全球经济形势依然不明朗,IT开支同样变得更加保守。云计算带来了潜在的竞争优势。云计算为各种各样的IT部门带来了机会,可以降低与内部部署型IT基础设施(软硬件)有关的风险。云提供商提供的解决方案通常提供按需计算资源、系统自动化部署及扩展,以及按使用量付费的定价模式。充分利用公共云计算提供商的共享式计算资源(软硬件),让许多公司得以节省IT基础设施成本。

Gartner副总裁兼研究员David Cearley说:“云计算是过去这两年席卷市场的一大技术潮流。它为一种新的IT方法创造了条件,这种新方法让个人和公司都可以选择如何获得或交付IT服务,不大着重传统软硬件许可证模式的限制。云计算对IT的方方面面以及用户访问应用程序、信息和业务服务的方式带来了相当大的潜在影响。”

而在传统环境下,IT运维部门重视稳定性和可靠性,保持数据中心现状,云计算则给IT运维小组指明了一个全新的方向。

为云时代重塑IT运维

IT运维团队需要转变,成为更具创新性的IT团队。出于如上所述的竞争原因和技术原因,通过IT部门分配各项资源再也行不通了。现在,业务部门需要开始对IT资产掌握更大的控制权。正如Susan Cramm指出:“关键在于实现转变,从IT服务交付给业务部门的模式,变成IT服务通过业务部门来交付的模式。”

云端需要IT运维

虽然对开发人员来说云计算潜力巨大,但这种影响具有的广度和深度并不确定,还需要IT运维团队来考察。配置和交付IT服务的速度将是云计算下一个时代的关键;服务的配置和交付一定要迅速,同时又不能扩大整个IT部门的规模。

这就意味着IT运维团队需要大变样,重新定义对云的做法,因为这将影响到有关人员、流程和工具。James Urquhart解释:“就在不久前,IT部门还在遵循以服务器为中心的运维模式;而云计算是一种以应用程序为中心的运维模式。”

IT运维OUT了,现在流行云运维

眼下IT运维领导需要改变做法。这意味着“少花钱多办事”,减少财务投入和组织变化,并作为一家小规模、迭代、灵活的组织来运行。云运维以应用程序为中心,这种特性将运维重心由基础设施转向应用程序。enStratus产品战略副总裁兼GigaOm云计算栏目的特约撰稿人James Urquhart解释:“如果你专注于在是否由你控制是未知数的环境下运行应用程序,就会专注于如何确保代码顺利运行,确保数据可用,确保配置切实可行,确保策略得到执行。还有,由于你唯一能控制的就是代码、数据、配置和策略,就得开始着眼于如何将性能和存活能力做入到应用程序本身当中。”

结合开发和运维的开发运维(DevOps)理念在云端会被放大,为开发和运维的工作方式提供一种更丰富的方法。云还重新组织了软件团队的传统结构,因而促进了这种关系。

部署向来是IT运维团队的一项任务;对许多企业组织来说,只有IT部门才可以在生产环境实施变化。而现在由于云计算的自我配置功能,部署任务可能交给使用基础设施即服务(IaaS)的开发团队。不过,IaaS也要求IT运维团队开发新的工具,实现部署自动化,这在功能复杂性和广度方面提高了标准。成功部署到云端需要开发和运维两边都要有相应的技能和知识。

云运维应对云计算今天面临的挑战

由于*近媒体大肆报道微软Azure和亚马逊网络服务故障,有人对公共云提出了担心,因而不敢依赖公共云。不过如果选择多家提供商,那样只会增添复杂性,而且难以跟踪了解多个云平台上的配置。Switch公司的数据中心技术执行副总裁Mark Thiele指出:“把所有鸡蛋都放在一只篮子里存在固有的风险,不管那只篮子做工有多精致或营销有多到位。任何单一技术平台都有这种风险,即某一个平台特有的问题可能会给整体带来不利影响。”

在云计算时代,IT环境变得越来越复杂,仅仅想在某一个时候了解IT环境里面发生了什么情况就是一大难题。Mike Vizard在ITBusinessEdge写博文道:“IT基础设施很快就会跨越公共云和私有云这两种计算环境。在另一个*端,敏捷开发的兴起意味着,一批新的应用程序及相关升级会变得具有持续性。当然,问题在于,不仅每次更新改变了应用程序的参数,应用程序的工作负载还会日益从一个虚拟机转移到另一个虚拟机。”

管理多个云

IT运维团队需要运用新的管理和监控技术来提供实时洞察力,深入了解部署到多个云平台上和内部部署型基础设施上的应用程序和服务的配置情况。这可以更严格地控制公共云平台(实际上就是外部IT基础设施)。“这类技术可以借助单一的统一视图,深入了解企业内外的IT基础设施,从而简化整体IT监控任务。智能化分析多个云平台上的变化,应该是这类监控技术的一个关键属性,以便高效地支持云的动态性。”

云运维将确保稳定性和性能

基于云的基础设施即IaaS取代不了IT运维。我们仍需要部署、监控、故障恢复、性能管理、操作系统维护、系统配置及更多操作,这些是IT运维团队从事的关键任务。开发团队简单地“换成”IaaS方法后,甭指望这些任务由云提供商来处理。敏捷开发面临的可扩展性和更大规模由开发运维和云(即云运维)来处理比较好。云运维让你可以提高服务器与管理员之比。这意味着,配置服务器不再是一个复杂而耗时的过程,而是可以像实际软件那样来配置。如果你的整个基础设施是虚拟化设施,由代码来控制,那么代码就可以知道其领域内出现的任何问题。

顺利采用新技术和新平台的能力至关重要,而彻底改造后的IT运维起到了关键作用。务必要考虑在没有落实治理和监管等机制的云环境下怎么会出岔子,以便帮助将应用程序从测试环境迁移到生产环境。所有云都需要一套强大的管理工具、更新颖的敏捷流程,以及准备好应对挑战以帮助实现部署自动化和管理部署的人员。

免责声明

本文内容来云头条,由捷云信通整理发布,主要目的在于分享信息,版权归原作者所有,内容仅供参考,如有侵犯您的权益或版权请及时告知,我们将在24小时内进行删除。

关于捷云
捷云信通依托阿里云以及自身私有云技术研发和在医疗行业宝贵经验积累,专注互联网云计算的技术创新,打造未来云计算全行业的新体验,努力成为中国一流的云计算(公有云,私有云,混合云)服务商。

1、对于传统企业内网运维和互联网运维,哪些技术和素质是两个运维团队都所必须具有的?
结实的技术基础,良好的日志检查、信息检控、巡检习惯,超强的责任心和处理问题的能力,跟得上行业技术更新、发展这对每个团队都是一样的。

2、企业内网运维和互联网运维人员,在面对新技术(硬件设备和软件技术)方面,有何区别,为什么?
面对新技术的学习我认为都是一样的,但是企业内的运维更看重成熟的、稳定性强、商业化程度高的技术,一般不会成为吃螃蟹的人,安全稳定是*位的;而互联网运维正相反,要时刻紧跟新技术,应用新技术,绿色、节能、高效、可用率*大化是优先的。

3、如何看待企业内网运维和互联网运维的区别,在云计算大潮下,他们真的会走到一起么?
会走到一起的.

自动化运维到来,运维工程师将何去何从?

互联网的应用,*大地方便了我们的生活,通过PC端,手机端等进行购物、订餐等早已不是什么稀奇事,然而在我们享受着这一便利的同时有没有想过是什么换来了我们如此的便利?在这背后是一家又一家的互联网公司提供的各种服务,我们在使用每个服务的时候都会去访问互联网公司的服务器,而为了正常访问,运维工程师需要很多人工操作,但面对海量爆发的访问,利用传统的运维技术应对也已经略显吃力。当然除了这些传统的运维技术,我们也并不是没有其他的应对方式。

我们可以用open_stack来完成虚拟化,用nagios,cacti,Ganglia等来进行监控,用puppet来进行批量操作,但当运用了这么多的软件,作为一个运维你能管理多少服务器?你招来的运维需要多长的时间来适应你各种软件?这都是互联网公司要进行考虑的问题。现在又出现一个*火的自动化运维语言的Python,那么究竟自动化运维和自动化运维语言Python给我们带来了什么呢?

既然说到Python,首先我们要对它有一定的了解,那么问题来了:

我们运用 Python 到底要完成什么工作呢?

针对我们的问题众网友、各路大神对此也给出了很好的解释。网友hx30067988说:“我们运用Python*终的目的是要实现自动化,Python是实现自动化的工具,我们通过Python将固定套路的工作流程通过Python编程进行封装,在通过Python组织和调用,实现机器的智能管理。简而言之就是把你工作的流程动作抽象成代码,让机器替你完成要做的工作,仅此而已。当然用python能完成的工作很多,比如自动化的工具,比如统计分析等等,python的魅力不单单在于他能很好的快速的开发工具,还在于他在数学建模中的优越性,毕竟python是数学建模工具之一,能简单通过数学建模实现高精度的数学统计分析。统计分析生成报告也是运维的工作之一。”

网友xkf01也表示:“python是一门黑客和geek很偏好的语言,只要你想基本上能做出任何应用软件。Google的好多应用都是基于python的,国内的豆瓣网好像就是纯pytyon开发的 。当然,感觉更偏向于写一些辅助工作和生活的小工具,要写很多方面集成的大产品,估计需要掌握的水平很高才行。”通过众网友的回答我想各位也对其有了一些初步的了解,看来诸位要想真正的熟练掌握还是要下一番功夫的。

那么在传统的运维技术已略显吃力的情况下,自动化运维是否能够取代现在的传统运维呢?

网友j_cle表示:“自动化运维是以后数据中心发展的大势,对于小的公司和团队效果不甚明显,但是对于规模庞大的公司来说如何有效的管理数千台上万台的服务器和网络设备,是一件很麻烦的事情,所以自动化运维在大的公司来讲,效果是非常显著的,但是前提是必须要做好自动化的部署工作。”

网友gary721400也表示:“ 这个问题,我认为要分两个方面来说:①对于大型企业,特别是互联网公司,这个是一定的,而且是一个必然的趋势。好像听说facebook的服务器,就几个人在维护,试想成千上万的服务器,如果单凭人为操作,非累到吐血不可;② 对于中小型企业,可能这个问题还不太明显;因为服务器可能就几台,人为或者自动的优势可能不太明显。”确实对此问题要视情况而定,各企业需根据企业规模的大小和自身的需求来判断是否需要自动化运维。

但是小编认为,就目前技术来讲,自动化运维想要完全取代传统运维时机并不成熟,网友lei8792yong说:“ 这里不能说*对取代传统运维,而是相辅相成的。只是大部分重复的工作,需要依靠自动化运维,少量而复杂的工作,还得靠传统运维。”

自动化运维和传统的运维相比,自动化运维的成本,分界岭又在哪里呢?

网友liuadam表示:“主要的分界岭在于:建立自动化运维管理平台。运维自动化管理建设的要先建立运维的自动化监控和管理平台。建立自动化运维管理平台就需要投入大量的人力资源成本,硬件设备成本。”

网友gary721400回应称:“这个和传统运维比较,还是有优势的;对公司来说,可能不需要专职的运维了,大大节省了人力成本;使用python语音来运维,能使用大量的第三方库文件,并且对C++等都有很好的连结性,对运维工程师来说,代码的量也不会太大,即使有人员替换,也能很好的衔接!”看来相对比来说成本方面自动化运维有利有弊,节省了人力的投入,但相对增加了技术资金的投入。

写在*后

很明显,自动化运维的出现会为运维工程师减轻相当一部分的负担。表面上看是有利于运维工程师的工作,但自动化运维的出现人力上的需求势必会大大减少,部分运维工程师可能会面临失业的危机,所以我想运维工程师的未来还是掌握在自己手中的,及时掌握*新技术,完善自己将会有更加广阔的空间,反之终将被运维行业淘汰,当然这只是本人的个人观点,到底自动化运维的发展究竟会怎样,让我们一起拭目以待吧!

————————————————

原文链接:https://blog.csdn.net/u010098331/article/details/52246255

什么是云计算?运维与云计算之间存在什么样的关系?

云计算商业模式就是要实现IT即服务,无论是对外还是在企业内部,IT自服务的需求越来越明显。另一方面,超大规模的数据中心急需一个有效的挂历方式来降低运营成本。

在云计算技术体系架构中,运维管理提供IaaS层、PaaS层、SaaS层资源的全生命周期的运维管理,实现物理资源、虚拟资源的统一管理,提供资源管理、统计、监控调度、服务掌控等端到端的综合管理能力。云运维管理与当前传统IT运维管理的不同表现为:集中化和资源池化。

云运维管理需要尽量实现自动化和流程化,避免在管理和运维中因为人工操作带来的不确定性问题。同时,云运维管理需要针对不同的用户提供个性化的试图,帮助管理和维护人员查看,定位和解决问题。

云运维管理和运维人员面向的是所有的云资源,要完成对不同资源的分配、调度和监控。同时,应能够向用户展示虚拟资源和物理资源的关系和拓扑结构。云运维管理的目标是适应上述的变化,改进运维的方式和流程来实现云资源的运行维护管理。

云计算运维管理应提供如下功能:

1自服务门户

自服务门户将支撑基础设施资源、平台资源和应用资源以服务的方式交互给用户使用,提供基础设施资源、平台资源和应用资源服务的检索、资源使用情况统计等自服务功能,需要根据不同的用户提供不同的展示功能,并有效隔离多用户的数据。

2身份与访问管理

身份与访问管理提供身份的访问管理,只有授权的用户才能访问相应的功能和数据,对资源服务提出使用申请。

3服务目录管理

建立基础设施资源、平台资源和应用资源的逻辑视图,形成云计算及服务目录,供服务消费者与管理者查询。服务目录应定义服务的类型、基本信息、能力数据、配额和权限,提供服务信息的注册、配置、发布、注销、变更、查询等管理功能。

4服务规则管理

服务规则管理定义了资源的调度、运行顺序逻辑。

5资源调度管理

资源调度管理通过查询服务目录,判断当前资源状态,并且执行自动的工作流来分配及部署资源,按照既定的适用规则,实现实时响应服务请求,根据用户需求实现资源的自动化生成、分配、回收和迁移,用以支持用户对资源的弹性需求。

6资源监控管理

资源监控管理实时监控、捕获资源的部署状态、使用和运行指标、各类告警信息。

7服务合规审计

服务合规审计对资源服务的合规性进行规范和控制,结合权限、配额对服务的资源使用情况进行运行审计。

8服务运营监控

服务运营监控将各类监控数据汇总至服务监控及运营引擎进行处理,通过在服务策略及工作请求间进行权衡进而生成变更请求,部分标准变更需求别转送到资源供应管理进行进一步的处理。

9服务计量管理

服务计量管理按照资源的实际使用情况进行服务质量审核,并规定服务计量信息,以便于在服务使用者和服务提供者之间进行核算。

第十,。

10服务质量管理

服务质量管理遵循SLA要求,按照资源的实际使用情况而进行服务质量审核与管理,如果服务质量没有达到预先约定的SLA要求,自动化地进行动态资源调配,或者给出资源调配建议由管理者进行资料的调派,以满足SLA的要求。

11服务交付管理

服务交付管理包括交付请求管理、服务模板管理、交付实施管理,实现服务交付请求的全流程管理,以及自动化实施的整体交付过程。

12报表管理

报表管理对于云计算运维管理的各类运行时和周期性统计报表提供支持。

13系统管理

系统管理云计算运维管理自身的各项管理,包括账号管理、参数管理、权限管理、策略管理等。

144A管理

4A管理由云计算运维管理自身的4A管理需求支持。

15管理集成

管理集成负责与IaaS层、PaaS层、SaaS层的接口实现,为服务的交付、监控提供支持。

16管理门户

管理门户面向管理维护人员,将服务、资源的各项管理功能构成一个统一的工作台,来实现管理维护人员的配置、监控、统计等功能需要。

云管理的*终目标是实现IT能力的服务化供应,并实现云计算的各种特性:资源共享、自动化、按使用付费、自服务、可扩展等。

怎么学习云计算?云计算运维和传统运维有何区别?

由于全球经济形势依然不明朗,IT开支同样变得更加保守。云计算带来了潜在的竞争优势。云计算为各种各样的IT部门带来了机会,可以降低与内部部署型IT基础设施(软硬件)有关的风险。学习云计算就业方向多,运维是其中比较重要地岗位之一。有人好奇云计算运维工程师和传统运维有什么区别?

 

%title插图%num

 

云计算带来的不同于传统运维的应用层面的挑战:

应用如何在云平台上实现应用的快速部署,快速更新,实时监控。云计算时代要求运维人员能够自动化地部署应用程序和所有支持的软件和软件包,然后通过生命周期阶段操作维护和管理应用程序,如自动扩展事件和进行软件更新等一系列的操作。

如何快速创建和复制资源模板,有序地对资源模版进行资源配置和更新;如何在云端更加轻松的部署、配置和管理应用。如何利用工具轻松地在云中快速部署和管理应用程序,同时可以自动处理容量预配置、负载均衡、Auto Scaling和应用程序状况监控,这是对运维人员的新要求。

面对这些挑战和变化,大部分运维人员开始了转型之路以应对时代的变化。谈到运维人员转型的建议,王毅认为传统的运维更多的是与物理设备打交道,很少接触操作系统甚至是应用程序的层面。所以他建议运维人员在云平台阶段应该更多介入软件部分,而且需要有代码基础。因为在云时代,infrastructure as code,所有对物理设备的操作都变成了代码。

 

%title插图%num

 

云计算运维工程师需要考虑两个问题:

1、应用如何在云平台上实现应用的快速部署,快速更新,实时监控。云计算时代要求运维人员能够自动化地部署应用程序和所有支持的软件和软件包,然后通过生命周期阶段操作维护和管理应用程序,如自动扩展事件和进行软件更新等一系列的操作。

2、如何在云端更加轻松的部署、配置和管理应用。如何利用工具轻松地在云中快速部署和管理应用程序,同时可以自动处理容量预配置、负载均衡、Auto Scaling和应用程序状况监控,这是对运维人员的新要求。

传统层面的运维人员,接触的都是硬件,如服务器、设备和风火水电,但是在云时代,运维人员已经无法见到物理的任何设备。

 

%title插图%num

 

云计算运维岗位涉及到云计算平台能否顺利、平稳地运行,因此运维工程师需要掌握的知识结构也相对比较丰富,既涉及到传统的网络运维知识,还涉及到虚拟化、管控、存储、安全等相关知识。另外,运维工程师还需要具备一定的程序设计能力,以便于完成大规模的自动化服务部署,这对于运维工程师也提出了较高的要求。

SAP 云平台的一些有用链接 – 保证持续更新

Console Client(only valid for Neo)

  1. help

SAP Cloud Platform console client for the Neo environment enables development, deployment and configuration of an application outside the Eclipse IDE as well as continuous integration and automation tasks. The tool is part of the SAP Cloud Platform SDK for Neo environment. You can find it in the tools folder of your SDK location.

就是指这个文件夹下的这些工具:

Supported Java API

  1. help – still for Neo

When you develop applications that run on SAP Cloud Platform, you can rely on certain Java EE standard APIs. These APIs are provided with the runtime of the platform. They are based on standards and are backward compatible as defined in the Java EE specifications.

Cloud Foundry is an engaging open-source platform-as-a-service creating a buzz in the tech world

要在 SCP 上展示 Fiori 应用程序,需要启用 Portal 服务,是指 Cloud 版本的 Fiori Launchpad的界面,用于在云端一站式显示各种 Fiori 或者 SAP UI5 类型的 APP。这和以前推出的 SAP Enterprise Portal 完全不是同一个事物。

SAP HANA Enterprise Cloud: It’s a private managed cloud solution, so in some ways, it’s similar to hosting.

常用链接

Linux 无法本地登录解决方法 报错/lib/security/pam_limits.so

前一段时间,因工作需要在物理机上装了一个Centos6.5,但是,用了一段时间,发现再登录时,无论如何也登不进去了,并且也不提示用户名或者密码错误。我一度以为是在profile以及.bashrc或者.bash_profile里设置了logout命令,于是乎进入单用户模式,各种查看,也没有发现logout的命令。于是,盯着屏幕瞅了一会儿,发现输入正确的用户名和密码以后,会闪一下,但是,特别快,不多瞅几次,无法识别。经过一番细瞅,发现是:Module is unkown,太好了,找解决问题的方法,有提示信息就解决了一半了。

于是,找度娘:

热心网友提供的解决问题的方法是这样的:

1、进入单用户模式

2、查看/var/log/secure文件,日志如下:

Mar 14 11:05:06 testOpenfire login: PAM unable to dlopen(/lib/security/pam_limits.so): /lib/security/pam_limits.so: cannot open shared object file: No such file or directory
Mar 14 11:05:06 testOpenfire login: PAM adding faulty module: /lib/security/pam_limits.so
Mar 14 11:05:10 testOpenfire login: pam_limits(login:session): unknown limit type ‘herd’
Mar 14 11:05:10 testOpenfire login: pam_unix(login:session): session opened for user root by LOGIN(uid=0)
Mar 14 11:05:10 testOpenfire login: Module is unknown
Mar 14 11:05:21 testOpenfire login: PAM unable to dlopen(/lib/security/pam_limits.so): /lib/security/pam_limits.so: cannot open shared object file: No such file or directory

意思是PAM unable to dlopen /lib/security/pam_limits.so这个文件,于是乎去/lib/security/下查看下有没有pam_limits.so这个文件,果然没有。

3、在/etc/pam.d/login里,里面的配置信息如下:

auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth       include      system-auth
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
session    optional     pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      system-auth
-session   optional     pam_ck_connector.so
session required /lib/security/pam_limits.so
~
~

经网友指点,将*后一行注释掉或者是改为(搜了下,64位系统在lib64目录下):/lib64/security/pam_limits.so,保存后,重启系统。

4、用原来的用户名和密码登录,完美登录!!

据说,用SSH登录是没有问题的,但是,我的机器IP已经变了,只能登录本机,所以,必须要解决这个问题。但是,我之前用的时候,感觉没有动过这块儿,不知道为啥突然就不能用了。好在问题解决了。真是完美!!

云计算的那些事

云计算的核心思想,是将大量用网络连接的计算资源统一管理和调度,构成一个计算资源池向用户按需服务。

狭义云计算指 IT 基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。

云计算的特点:

(1)计算资源集成提高设备计算能力。

(2)分布式数据中心保证系统容灾能力。

(3)软硬件相互隔离减少设备依赖性。

(4)平台模块化设计体现高可扩展性。

(5)虚拟资源池为用户提供弹性服务。

(6)按需付费降低使用成本。

3、云计算的类型
软件即服务 软件即服务(Software-as-a-Service, SaaS)是基于互联网提供软件服务的软件应用模式。

平台即服务

平台即服务(Platform-as-a-Service, PaaS)是把服务器平台或者开发环境作为一种服务提供的商业模式,如将软件研发的平台作为一种服务,以 SaaS 的模式提交给用户。

基础设施即服务

基础设施即服务(Infrastructure as a Service, IaaS)是指消费者通过 Internet 可以从完善的计算机基础设施获得服务。

4、应用
云安全

“云安全”通过网状的大量客户端对网络中软件行为的异常监测,获取互联网中木马、恶意程序的*新信息,推送到 Server 端进行自动分析和处理,再把病毒和木马的解决方案分发到每一个客户端。

云存储 应用云存储是在云计算概念上延伸和发展出来的一个新的概念,是指通过集群应用、网格技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统。

云存储

当云计算系统运算和处理的核心是大量数据的存储和管理时,云计算系统中就需要配置大量的存储设备,那么云计算系统就转变成为一个云存储系统,所以云存储是一个以数据存储和管理为核心的云计算系统。

云呼叫 应用云呼叫中心是基于云计算技术而搭建的呼叫中心系统,企业无须购买任何软、硬件系统,只需具备人员、场地等基本条件,就可以快速拥有属于自己的呼叫中心,软硬件平台、通信资源、日常维护与服务由服务器商提供。

云会议

应用云会议是基于云计算技术的一种高效、便捷、低成本的会议形式。它是视频会议与云计算的完美结合,带来了*便捷的远程会议体验。

打不开HTTPS网页的解决方案 解决打不开HTTPS 打不开安全网页 无法打开HTTPS 修复打开HTTPS

现象:
当您尝试访问Https打头的网页时,出现错误。

原因:

计算机中的一些设置阻碍了浏览器打开Https网页。

解决方案:

请您尝试打开:
[Internet选项],在“高级”选项卡中的列表中选择上[使用SSL2.0]和[使用SSL3.0]。

然后打开[开始]-[运行],输入“services.msc”,将列表中“HTTPFilter”服务设置为“启用”,状态为“自动”。

如果安装防火墙的话,请打开防火墙,将里面端口限制中允许TCP443端口。

如果上述设置正确后,还是不行,那看下面的*招了,百发百中哦(我的使用此法已解决)

*步:
单击“开始→运行”,输入“cmd”后回车打开命令提示符窗口,
运行“net start cryptsvc” 命令,接下来使用regsvr32命令依次注册
regsvr32 softpub.dll
regsvr32 wintrust.dll
regsvr32 initpki.dll
regsvr32 dssenh.dll
regsvr32 rsaenh.dll
regsvr32 gpkcsp.dll
regsvr32 sccbase.dll
regsvr32 slbcsp.dll
regsvr32 cryptdlg.dll

其中 regsvr32 initpki.dll 可能不会马上就好 ,请稍微等待一下

如果要在已安装 Windows XP Service Pack 2 (SP2) 的系统内修复 Winsock,在命令提示字符中输入 netsh winsock reset,然后按下 ENTER。执行这个命令后,重新启动计算机即可,没有安装SP2的朋友就没有那么幸运了,修复winsock要复杂些..

善意提醒:如果已经中招,而自己的系统还没打上SP2补丁,*好趁此机会重装系统,升级到SP2,安全系数要高得多。不想装SP2,也不想重装系统的朋友,往下看吧!

不带 Service Pack 2 的 Windows XP 说明
要在未安装 Windows XP SP2 的情况下修复 Winsock,请删除已损坏的注册表项,然后重新安装 TCP/IP 协议。
步骤 1:删除已损坏的注册表项
警告:如果使用注册表编辑器或其他方法错误地修改了注册表,则可能导致严重问题。这些问题可能需要重新安装操作系统才能解决。Microsoft 不能保证您可以解决这些问题。修改注册表需要您自担风险。

有关如何备份注册表的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
322756 (http://support.microsoft.com/kb/322756/) 如何在 Windows XP 和 Windows Server 2003 中备份、编辑和还原注册表
1.      单击“开始”,然后单击“运行”。
2.      在“打开”框中,键入 regedit,然后单击“确定”。
3.      在注册表编辑器中,找到下列项,右键单击各项,然后单击“删除”:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock2
4.      在系统提示您确认删除时,单击“是”。
注意:删除 Winsock 项后,请重新启动计算机。这样做可以让 Windows XP 操作系统为这两个项创建新的 shell 条目。如果在删除 Winsock 项后没有重新启动计算机,则下一步无法正常进行。
步骤 2:安装 TCP/IP
1.      右键单击网络连接,然后单击“属性”。
2.      单击“安装”。
3.      单击“协议”,然后单击“添加”。
4.      单击“从磁盘安装”。
5.      键入 C:\Windows\inf,然后单击“确定”。
6.      在可用协议列表中,单击“Internet 协议(TCP/IP)”,然后单击“确定”。
7.      重新启动计算机。

如果你很不辛的话,那你死马当活马,就换不使用IE内核的其它的浏览器,如:oprea, friebox。

九个问题从入门到熟悉HTTPS

女朋友也是软件工程专业,因为快要毕业了,*近一边做毕设一边学习编程。前两天她问我 HTTPS 的问题,本来想直接扔一篇网上的教程给她。后来想了一下,那些文章大多直接介绍概念, 对新手不太友好,于是我干脆亲自给她解释一下,顺便整理了一份问答录。

Q1: 什么是 HTTPS?

BS: HTTPS 是安全的 HTTP

HTTP 协议中的内容都是明文传输,HTTPS 的目的是将这些内容加密,确保信息传输安全。*后一个字母 S 指的是 SSL/TLS 协议,它位于 HTTP 协议与 TCP/IP 协议中间。

Q2: 你说的信息传输安全是什么意思

BS: 信息传输的安全有三个方面:

  1. 客户端和服务器直接的通信只有自己能看懂,即使第三方拿到数据也看不懂这些信息的真实含义。
  2. 第三方虽然看不懂数据,但可以 XJB 改,因此客户端和服务器必须有能力判断数据是否被修改过。
  3. 客户端必须避免中间人攻击,即除了真正的服务器,任何第三方都无法冒充服务器。

很遗憾的是,目前的 HTTP 协议还不满足上述三条要求中的任何一条。

Q3: 这么多要求,一个一个去满足是不是很累?

BS: 不累,第三个要求可以不用管

是的,我没开玩笑,你可以暂时别管第三个要求,因为它实际上隶属于*个需求。我们都知道加密需要密码,密码不是天下掉下来,也得需要双方经过通信才能协商出来。所以一个设计良好的加密机制必然会防止第三者的干扰和伪造。等搞明白了加密的具体原理,我们自然可以检验是否满足:“任何第三者无法冒充服务器”这一要求。

Q4: 那怎么加密信息呢

BS: 使用对称加密技术

对称加密可以理解为对原始数据的可逆变换。比如 Hello 可以变换成 Ifmmp,规则就是每个字母变成它在字母表上的后一个字母,这里的秘钥就是 1,另一方拿到 Ifmmp 就可以还原成原来的信息 Hello 了。

引入对称加密后,HTTPS 的握手流程就会多了两步,用来传递对称加密的秘钥:

  1. 客户端: 你好,我需要发起一个 HTTPS 请求
  2. 服务器: 好的,你的秘钥是 1

提到了对称加密,那么自然还有非对称加密。它的思想很简单,计算两个质数的乘积很容易,但反过来分解成两个质数的乘积就很难,要经过*为复杂的运算。非对称加密有两个秘钥,一个是公钥,一个是私钥。公钥加密的内容只有私钥可以解密,私钥加密的内容只有公钥可以解密。一般我们把服务器自己留着,不对外公布的密钥称为私钥,所有人都可以获取的称为公钥

使用对称加密一般要比非对称加密快得多,对服务器的运算压力也小得多。

Q5: 对称秘钥如何传输

服务器直接返回明文的对称加密密钥是不是不安全。如果有监听者拿到这个密钥,不就知道客户端和服务器后续的通信内容了么?

BS: 利用非对称加密

是这样,所以不能明文传递对称秘钥,而且也不能用一个新的对称加密算法来加密原来的对称秘钥,否则新的对称秘钥同样无法传输,这就是鸡生蛋、蛋生鸡的悖论。

这里我们引入非对称加密的方式,非对称加密的特性决定了服务器用私钥加密的内容并不是真正的加密,因为公钥所有人都有,所以服务器的密文能被所有人解析。但私钥只掌握在服务器手上,这就带来了两个巨大的优势:

  1. 服务器下发的内容不可能被伪造,因为别人都没有私钥,所以无法加密。强行加密的后果是客户端用公钥无法解开。
  2. 任何人用公钥加密的内容都是*对安全的,因为私钥只有服务器有,也就是只有真正的服务器可以看到被加密的原文。

所以传输对称秘钥的问题就迎刃而解了: 秘钥不是由服务器下发,而是由客户端生成并且主动告诉服务器。

所以当引入非对称加密后,HTTPS 的握手流程依然是两步,不过细节略有变化:

  1. 客户端: 你好,我需要发起一个 HTTPS 请求,这是我的 (用公钥加密后的) 秘钥。
  2. 服务器: 好的,我知道你的秘钥了,后续就用它传输。

Q5: 那公钥怎么传输

你好像还是没有解决鸡生蛋,蛋生鸡的问题。你说客户端发送请求时要用公钥加密对称秘钥,那公钥怎么传输呢?

BS: 对公钥加密就行了。。。

每一个使用 HTTPS 的服务器都必须去专门的证书机构注册一个证书,证书中存储了用权威机构私钥加密的公钥。这样客户端用权威机构的公钥解密就可以了。

现在 HTTPS 协议的握手阶段变成了四步:

  1. 客户端: 你好,我要发起一个 HTTPS 请求,请给我公钥
  2. 服务器: 好的,这是我的证书,里面有加密后的公钥
  3. 客户端: 解密成功以后告诉服务器: 这是我的 (用公钥加密后的) 对称秘钥。
  4. 服务器: 好的,我知道你的秘钥了,后续就用它传输。

Q6: 你在逗我么。。。。

那权威机构的公钥又怎么传输?

BS: 存在电脑里

这个公钥不用传输,会直接内置在各大操作系统(或者浏览器)的出厂设置里。之所以不把每个服务器的公钥内置在电脑里,一方面是因为服务器太多,存不过来。另一方面操作系统也不信任你,凭什么你说你这个就是百度/淘宝的证书呢?

所以各个公司要先去权威机构认证,申请证书,然后操作系统只会存储权威机构的公钥。因为权威机构数量有限,所以操作系统厂商相对来说容易管理。如果这个权威机构不够权威,XJB 发证书,就会取消他的资格,比如可怜的沃通。。。。

Q7: 怎么知道证书有没有被篡改?

你说服务器*次会返回证书,也就是加密以后的公钥,那我怎么知道这个证书是可靠的?

BS: 将信息 hash 值随着信息一起传递

我们都知道哈希算法的特点,它可以压缩数据,如果从函数角度来看,不管多复杂的数据(定义域可以非常大)经过哈希算法都会得到一个值,而且这个值处在某个特定(远小于定义域的范围)值域内。相同数据的哈希结果一定相同,不相同数据的哈希结果一般不同,不过也有小概率会重复,这叫哈希冲突。

为了确保原始证书没有被篡改,我们可以在传递证书的同时传递证书的哈希值。由于第三者无法解析数据,只能 XJB 改,那么修改后的数据在解密后,就不可能通过哈希。

比如说公钥就是之前的例子 Hello,我们假设哈希算法是获取字符串的*后一个字符,那么 Hello 的哈希值就是 o,所以加密字符串是 Ifmmpp。虽然公钥已知,每个人都可以解密,解密完也可以篡改,但是因为没有私钥, 所以无法正确的加密。所以它再返回给客户端的数据是无效数据,用公钥解析后会得到乱码。即使攻击者通过多次尝试碰巧能够解析,也无法通过哈希校验。

Q8: 这样可以防止第三方冒充服务器么

BS: 也许可以

首先真正的服务器下发的内容,无法被别人篡改。他们有权威机构的公钥,所以可以解密,但是因为没有私钥,所以解密以后的信息无法加密。没有加密或者错误加密的信息被客户端用公钥解密以后,必然无法通过哈希校验。

但是,如果你一开始请求的就不是真的服务器,而是一个攻击者,此时的他完全有机会进行中间人攻击。我们知道*次握手的时候服务器会下发用于证明自己身份的证书,这个证书会用预设在设备上的公钥来解密。所以要么是经过认证的证书用权威机构的私钥加密,再用权威机构解密,要么是用非权威机构的私钥加密,然后找不到公钥解密。

所以如果不小心安装过非权威机构的根证书,比如黑客提供的恶意证书,这时候设备上就多了一个预设的公钥,那么用恶意私钥加密的证书就能被正常解析出来。所以千万不要随便装根证书,这等于是为那些恶意证书留了一扇门。

当然,凡是都有两面性。我们知道 Charles 可以调试 HTTPS 通信,它的原理就是需要用户安装 Charles 的根证书,然后我们的请求会被代理到 Charles 服务器,它下发的 Charles 证书才能被正确解析。另一方面,Charles 会作为客户端,从真正的服务器哪里拿到正确的 https 证书并用于后续通信。幸好 Charles 不是流氓软件,或者它的私钥一旦泄露,对用户都会造成很大的影响。

我可以举一个例子,证书有多个种类,*贵的叫 EV (Extended Validation),它需要公司营业执照等多个文件才能申请人工审核,好处也很明显,可以在浏览器地址栏左侧准确显示公司名称,比如 Bitbucket 的官网:

EV 证书左侧的名字

这是客户端直连时候的正常现象。但如果你用 Charles 代理,客户端拿到的是 Charles 证书,所以会变成:

代理模式下无法显示

Q9: HTTPS 握手会影响性能么

TCP 有三次握手,再加上 HTTPS 的四次握手,会不会影响性能?

BS: 影响肯定有,但是可以接受

首先,HTTPS 肯定会更慢一点,时间主要花费在两组 SSL 之间的耗时和证书的读取验证上,对称算法的加解密时间几乎可以忽略不计。

而且如果不是首次握手,后续的请求并不需要完整的握手过程。客户端可以把上次的加密情况直接发送给服务器从而快速恢复,具体细节可以参考 图解SSL/TLS协议

除此以外,SSL 握手的时间并不是只能用来传递加密信息,还可以承担起客户端和服务器沟通 HTTP2 兼容情况的任务。因此从 HTTPS 切换到 HTTP2.0 不会有任何性能上的开销,反倒是得益于 HTTP2.0 的多路复用等技术,后续可以节约大量时间。

如果把 HTTPS2.0 当做目标,那么 HTTPS 的性能损耗就更小了,远远比不上它带来的安全性提升。

结语

相信以上九个问题足够帮助新人了解 HTTPS 了,但这只是基本概念,关于 HTTPS 的使用(比如 iOS 上的一些具体问题)还需要不断尝试和研究。

文章*后打一个求职广告,长期有效,女朋友今年毕业,考研 380+,简历戳这里,计算机基础还算扎实,但项目经验偏少,可以实习 6 个月以上。北京地区如果有想要招实习生的公司,欢迎联系我,方向不限,前后端皆可培养,iOS 更好(我自己教)。