Linux运维课程中实际项目案例分析

以实际项目开发过程教学,让编程学习变得更简单

项目式教学方式分析



       学习软件开发课程,最终的目标就是开发软件项目,基于IT课程的学习特点, 项目式教学才能让学猿更好更全面的掌握技术,也能让学到的技术更实用。 学习猿地采用多个项目贯穿式教学,每个课程关联的技术点很多, 在有限的时间内很难讲解全面,而通过项目植入到课程中,就可以赛选出实际应用的知识点重点讲解。 另外,通过项目功能模块应用的技术反推出来的知识点,能让学猿更容易理解知识点的应用,达到学以致用的目的, 又可以举一反三,可以快速提高。也可以通过项目实战挖掘课程中没有讲到的新知识点, 扩展一下应用的知识面。

       大多数有丰富经验的程序员拥有自己的私人开发库,可以让程序猿在开发新项目时使用大约30%的重用代码来开发软件, 课程中的多个不同类型的项目也可以为学猿积累自己的私人开发代码库。

       另外,教学中的项目应用和实际商业项目还是有一些区别的,首先,并不是项目越大、需求越复杂越好, 因为用大项目教学让学员感觉很混乱,达不到学习的目标,有可能起到反作用。其次,教学项目使用的都是学员比较常见的类型项目,这样的项目需求不需要讲解学猿也很清除业务,能直接联想到开始步骤上, 就可以把精力都放在功能实现上。还有就是在教学项目中不会去实现商业项目中所有的功能, 而是会去简化功能和业务流程, 去除重复的功能模块, 同时也会在项目中应到一些反例代码,为了讲解不同的知识点的应用。 而教学项目和商业项目相同的地方也很多, 比如在软件工程方面的软件开发流程、开发工具使用、代码管理、团队合作,以及与客户沟通等方面是一致的。 当然,教学项目也有一些超过商业项目的地方,例如在具体的一些项目模块基础上,会设想多情况扩展开发下去,为让学员接触到更多的知识点。

       学员在项目阶段学习时,不仅只为实现表面的功能, 一定要做到像素级别的还原, 只有问题考虑周全, 注重每个细节,反复实验, 才能在项目开发课程中得到全面的提高。

项目一 构建CDN分发网络



       Internet的高速发展,给人们的工作和生活带来了极大的便利,对Internet的服务品质和访问速度要求越来越高, 虽然带宽不断增加,用户数量也在不断增加,受Web服务器的负荷和传输距离等因数的影响,响应速度慢还是经常抱怨和困扰。 解决方案就是在网络传输上利用缓存技术使得Web服务数据流能就近访问,是优化网络数据传输非常有效的技术,从而获得高速的体验和品质保证。

项目背景:

       网络缓存技术,其目的就是减少网络中冗余数据的重复传输,使之最小化,将广域传输转为本地或就近访问。互联网上传递的内容, 大部分为重复的Web/FTP数据,Cache服务器及应用Caching技术的网络设备,可大大优化数据链路性能,消除数据峰值访问造成的结点设备阻塞。 Cache服务器具有缓存功能,所以大部分网页对象(Web page object),如html, htm, php等页面文件,gif,tif, png, bmp等图片文件,以及其他格式的文件, 在有效期(TTL)内,对于重复的访问,不必从原始网站重新传送文件实体,只需通过简单的认证(Freshness Validation)- 传送几十字节的Header, 即可将本地的副本直接传送给访问者。由于缓存服务器通常部署在靠近用户端,所以能获得近似局域网的响应速度,并有效减少广域带宽的消耗。 据统计,Internet上超过80%的用户重复访问20%的信息资源,给缓存技术的应用提供了先决的条件。缓存服务器的体系结构与Web服务器不同, 缓存服务器能比Web服务器获得更高的性能,缓存服务器不仅能提高响应速度,节约带宽,对于加速Web服务器,有效减轻源服务器的负荷是非常有效的。   高速缓存服务器(Cache Server)是软硬件高度集成的专业功能服务器,主要做高速缓存加速服务,一般部署在网络边缘。根据加速对象不同,分为客户端加速和服务器加速, 客户端加速Cache部署在网络出口处,把常访问的内容缓存在本地,提高响应速度和节约带宽;服务器加速,Cache部署在服务器前端,作为Web服务器的前置机, 提高Web服务器的性能,加速访问速度。如果多台Cache加速服务器且分布在不同地域,需要通过有效地机制管理Cache网络,引导用户就近访问,全局负载均衡流量,这就是CDN内容传输网络的基本思想。

项目目标:

       目前的CDN服务主要应用于证券、金融保险、ISP、ICP、网上交易、门户网站、大中型公司、网络教学等领域。 另外在行业专网、互联网中都可以用到,甚至可以对局域网进行网络优化。利用CDN,这些网站无需投资昂贵的各类服务器、设立分站点, 特别是流媒体信息的广泛应用、远程教学课件等消耗带宽资源多的媒体信息,应用CDN网络,把内容复制到网络的最边缘,使内容请求点和交付点之间的距离缩至最小, 从而促进Web站点性能的提高,具有重要的意义。CDN网络的建设主要有企业建设的CDN网络,为企业服务;IDC的CDN网络,主要服务于IDC和增值服务;网络运营上主建的CDN网络, 主要提供内容推送服务;CDN网络服务商,专门建设的CDN用于做服务,用户通过与CDN机构进行合作,CDN负责信息传递工作,保证信息正常传输,维护传送网络,而网站只需要内容维护,不再需要考虑流量问题。

工作原理:

       1)、用户向浏览器提供要访问的域名;
  2)、浏览器调用域名解析库对域名进行解析,由于CDN对域名解析过程进行了调整,所以解析函数库一般得到的是该域名对应的CNAME记录,为了得到实际IP地址,浏览器需要再次对获得的CNAME域名进行解析以得到实际的IP地址; 在此过程中,使用的全局负载均衡DNS解析,如根据地理位置信息解析对应的IP地址,使得用户能就近访问。  
 3)、此次解析得到CDN缓存服务器的IP地址,浏览器在得到实际的IP地址以后,向缓存服务器发出访问请求;  
 4)、缓存服务器根据浏览器提供的要访问的域名,通过Cache内部专用DNS解析得到此域名的实际IP地址,再由缓存服务器向此实际IP地址提交访问请求;  
 5)、缓存服务器从实际IP地址得得到内容以后,一方面在本地进行保存,以备以后使用,二方面把获取的数据返回给客户端,完成数据服务过程;  
 6)、客户端得到由缓存服务器返回的数据以后显示出来并完成整个浏览的数据请求过程。
  通过以上的分析我们可以得到,为了实现既要对普通用户透明(即加入缓存以后用户客户端无需进行任何设置,直接使用被加速网站原有的域名即可访问), 又要在为指定的网站提供加速服务的同时降低对ICP的影响,只要修改整个访问过程中的域名解析部分,以实现透明的加速服务,下面是CDN网络实现的具体操作过程。


技术手段:

       实现CDN的主要技术手段是高速缓存、镜像服务器。可工作于DNS解析或HTTP重定向两种方式,通过Cache服务器, 或异地的镜像站点完成内容的传送与同步更新。DNS方式用户位置判断准确率大于85%,HTTP方式准确率为99%以上;一般情况下, 各Cache服务器群的用户访问流入数据量与Cache服务器到原始网站取内容的数据量之比在2:1到3:1之间,即分担50%到70%的到原始网站重复访问数据量(主要是图片,流媒体文件等内容); 对于镜像,除数据同步的流量,其余均在本地完成,不访问原始服务器。   镜像站点(Mirror Site)服务器是我们经常可以看到的,它让内容直截了当地进行分布,适用于静态和准动态的数据同步。但是购买和维护新服务器的费用较高, 另外还必须在各个地区设置镜像服务器,配备专业技术人员进行管理与维护。大型网站在随时更新各地服务器的同时,对带宽的需求也会显著增加,因此一般的互联网公司不会建立太多的镜像服务器。   高速缓存手段的成本较低,适用于静态内容。Internet的统计表明,超过80%的用户经常访问的是20%的网站的内容,在这个规律下,缓存服务器可以处理大部分客户的静态请求, 而原始的WWW服务器只需处理约20%左右的非缓存请求和动态请求,于是大大加快了客户请求的响应时间,并降低了原始WWW服务器的负载。 根据美国IDC公司的调查,作为CDN的一项重要指标 —— 缓存的市场正在以每年近100%的速度增长,全球的营业额在2004年将达到45亿美元。网络流媒体的发展还将剌激这个市场的需求。


网络架构:

       CDN网络架构主要由两大部分,分为中心和边缘两部分,中心指CDN网管中心和DNS重定向解析中心,负责全局负载均衡, 设备系统安装在管理中心机房,边缘主要指异地节点,CDN分发的载体,主要由Cache和负载均衡器等组成。   当用户访问加入CDN服务的网站时,域名解析请求将最终交给全局负载均衡DNS进行处理。全局负载均衡DNS通过一组预先定义好的策略,将当时最接近用户的节点地址提供给用户,使用户能够得到快速的服务。 同时,它还与分布在世界各地的所有CDNC节点保持通信,搜集各节点的通信状态,确保不将用户的请求分配到不可用的CDN节点上,实际上是通过DNS做全局负载均衡。   对于普通的Internet用户来讲,每个CDN节点就相当于一个放置在它周围的WEB。通过全局负载均衡DNS的控制,用户的请求被透明地指向离他最近的节点,节点中CDN服务器会像网站的原始服务器一样, 响应用户的请求。由于它离用户更近,因而响应时间必然更快。   每个CDN节点由两部分组成:负载均衡设备和高速缓存服务器   负载均衡设备负责每个节点中各个Cache的负载均衡,保证节点的工作效率;同时,负载均衡设备还负责收集节点与周围环境的信息,保持与全局负载DNS的通信,实现整个系统的负载均衡。   高速缓存服务器(Cache)负责存储客户网站的大量信息,就像一个靠近用户的网站服务器一样响应本地用户的访问请求。   CDN的管理系统是整个系统能够正常运转的保证。它不仅能对系统中的各个子系统和设备进行实时监控,对各种故障产生相应的告警,还可以实时监测到系统中总的流量和各节点的流量, 并保存在系统的数据库中,使网管人员能够方便地进行进一步分析。通过完善的网管系统,用户可以对系统配置进行修改。   理论上,最简单的CDN网络有一个负责全局负载均衡的DNS和各节点一台Cache,即可运行。DNS支持根据用户源IP地址解析不同的IP,实现就近访问。为了保证高可用性等,需要监视各节点的流量、 健康状况等。一个节点的单台Cache承载数量不够时,才需要多台Cache,多台Cache同时工作,才需要负载均衡器,使Cache群协同工作。



项目二 .MySQL高可用集群



       在许多比较重要的系统中,基本上都是24h*365d不间断运行的。   对于应用程序来讲,可以做haproxy+app 或 nginx+app的集群。好,问题来了,当应用程序的性能调优后,那么瓶颈就卡在数据库上。这个时候,就要对数据库进行优化。   在进行去IOE后,基本上许多的数据库都采用的是开源的mysql数据库。   当并发较高或数据量比较大的时候,数据库的瓶颈就会成为制约应用的关键。此时,我们会通过做mysql主从机读写分离(主节点master负责写, 从节点slave负责读),再对主机进行双机热备(当主节点宕机后,自动切换到另一备用节点上),对从节点做集群(读取数据分离到不同的节点上,以减小读数据库的压力)。   这里在做主从读写分离是用qihoo的atlas。在mysql做故障转移是用mha。对数据库主备节点做故障切换则是用keepalived。

高可用性:

       很多公司的服务都是24小时*365天不间断的。这就要求高可用性。再比如购物网站,必须随时都可以交易。那么当购物网的server挂了一个的时候,不能对业务产生任何影响。这就是高可用性。   当服务器down掉,或者出现错误的时候,可以自动的切换到其他待命的服务器,不影响服务器上App的运行。

读写分离:

       随着一个网站的业务不断扩展,数据不断增加,数据库的压力也会越来越大,对数据库或者SQL的基本优化可能达不到最终的效果,我们可以采用读写分离的策 略来改变现状。   读写分离简单的说是把对数据库读和写的操作分开对应不同的数据库服务器,这样能有效地减轻数据库压力,也能减轻io压力。主数据库提供写操作,从数据库提 供读操作,其实在很多系统中,主要是读的操作。当主数据库进行写操作时,数据要同步到从的数据库,这样才能有效保证数据库完整性。

可用架构:

       本次架构实现功能:
1. 一主库,两个从库(其中1个为备主),实现ABB复制
2. 使用Atlas实现读写分离,主库和备主库接收写操作,从库接收读操作
3. 使用Mha实现现有架构的高可用
4. 使用keepalived实现vip的漂移
5. 手工编写shell,修复Mha的不足
6. 修复当AB故障切换一次后,mha-manager会自动退出
7. 修复原主库,出问题后,修复后不能自动加入现有AB集群


本次实现架构图:


项目三 不同级别网站系统架构搭建



        一个成熟的大型网站(如淘宝、京东等)的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性,它总是随着用户量的增加, 业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、技术架构、设计思想也发生了很大的变化,就连技术人员也从几个人发展到一个部门甚至一条产品线。 所以成熟的系统架构是随业务扩展而完善出来的,并不是一蹴而就;不同业务特征的系统,会有各自的侧重点,例如淘宝,要解决海量的商品信息的搜索、下单、支付,例如腾讯, 要解决数亿的用户实时消息传输,百度它要处理海量的搜索请求,他们都有各自的业务特性,系统架构也有所不同。尽管如此我们也可以从这些不同的网站背景下,找出其中共用的技术, 这些技术和手段可以广泛运行在大型网站系统的架构中,下面就通过介绍大型网站系统的演化过程,来认识这些技术和手段。

普通小网站架构:

        小型网站的架构,应用程序、数据库、文件都部署在一台服务器上,如图:


PV达10W网站架构:

        随着业务的扩展,一台服务器已经不能满足性能需求,故将应用程序、数据库、文件各自部署在独立的服务器上,并且根据服务器的用途配置不同的硬件,达到最佳的性能效果。如图:


PV达100W网站架构:

        在硬件优化性能的同时,同时也通过软件进行性能优化,在大部分的网站系统中,都会利用缓存技术改善系统的性能,使用缓存主要源于热点数据的存在,大部分网站访问都遵循28原则 (即80%的访问请求,最终落在20%的数据上),所以我们可以对热点数据进行缓存,减少这些数据的访问路径,提高用户体验。如图:


        缓存实现常见的方式是本地缓存、分布式缓存。当然还有CDN、反向代理等, 这个后面再讲。本地缓存,顾名思义是将数据缓存在应用服务器本地,可以存在内存中,也可以存在文件, OSCache就是常用的本地缓存组件。本地缓存的特点是速度快,但因为本地空间有限所以缓存数据量也有限。分布式缓存的特点是,可以缓存海量的数据, 并且扩展非常容易,在门户类网站中常常被使用,速度按理没有本地缓存快,常用的分布式缓存是Memcached、Redis。


PV达1000W网站架构:

        应用服务器作为网站的入口,会承担大量的请求,我们往往通过应用服务器集群来分担请求数。 应用服务器前面部署负载均衡服务器调度用户请求,根据分发策略将请求分发到多个应用服务器节点。如图:


        常用的负载均衡技术硬件的有F5,价格比较贵,软件的有LVS、Nginx、HAProxy。LVS是四层负载均衡,根据目标地址和端口选择内部服务器,Nginx是七层负载均衡和HAProxy支持四层、七层负载均衡, 可以根据报文内容选择内部服务器,因此LVS分发路径优于Nginx和HAProxy,性能要高些,而Nginx和HAProxy则更具配置性,如可以用来做动静分离(根据请求报文特征,选择静态资源服务器还是应用服务器)。


数据库读写分离和分库分表:

        随着用户量的增加,数据库成为最大的瓶颈,改善数据库性能常用的手段是进行读写分离以及分表,读写分离顾名思义就是将数据库分为读库和写库,通过主备功能实现数据同步。 分库分表则分为水平切分和垂直切分,水平切换则是对一个数据库特大的表进行拆分,例如用户表。垂直切分则是根据业务不同来切换,如用户业务、商品业务相关的表放在不同的数据库中。如图:


使用CDN和反向代理提高网站性能:

        假如我们的服务器都部署在成都的机房,对于四川的用户来说访问是较快的,而对于北京的用户访问是较慢的, 这是由于四川和北京分别属于电信和联通的不同发达地区,北京用户访问需要通过互联路由器经过较长的路径才能访问到成都的服务器,返回路径也一样, 所以数据传输时间比较长。对于这种情况,常常使用CDN解决,CDN将数据内容缓存到运营商的机房,用户访问时先从最近的运营商获取数据,这样大大减少了网络访问的路径。比较专业的CDN运营商有蓝汛、网宿。 而反向代理,则是部署在网站的机房,当用户请求达到时首先访问反向代理服务器,反向代理服务器将缓存的数据返回给用户,如果没有没有缓存数据才会继续走应用服务器获取,也减少了获取数据的成本。反向代理有Squid,Nginx。如图:


使用分布式文件系统:

        用户一天天增加,业务量越来越大,产生的文件越来越多,单台的文件服务器已经不能满足需求。需要分布式的文件系统支撑。常用的分布式文件系统有NFS。如图:


使用NoSql和搜索引擎:

        对于海量数据的查询,我们使用nosql数据库加上搜索引擎可以达到更好的性能。并不是所有的数据都要放在关系型数据中。常用的NOSQL有mongodb和redis,搜索引擎有lucene。 如图:


将应用服务器进行业务拆分:

        随着业务进一步扩展,应用程序变得非常臃肿,这时我们需要将应用程序进行业务拆分, 如百度分为新闻、网页、图片等业务。每个业务应用负责相对独立的业务运作。业务之间通过消息进行通信或者同享数据库来实现。 如图:


搭建分布式服务:

        这时我们发现各个业务应用都会使用到一些基本的业务服务,例如用户服务、订单服务、支付服务、安全服务,这些服务是支撑各业务应用的基本要素。我们将这些服务抽取出来利用分部式服务框架搭建分布式服务。淘宝的Dubbo是一个不错的选择。 如图:


        大型网站的架构是根据业务需求不断完善的,根据不同的业务特征会做特定的设计和考虑,本文只是讲述一个常规大型网站会涉及的一些技术和手段。

项目四 生产环境下Docker容器解决方案



       是以可移动可预测方法发布和部署应用程序的过程,它通过包装组件和它们的依赖,打包成一个标准的、隔离的、轻量的环境, 称为容器Container,许多公司已经对设计应用和服务如何部署在分布式系统中非常感兴趣,这样能够让系统易于扩展伸缩,能够对付硬件与应用出现的故障问题。 Docker是一个容器化平台,用于简化和标准化各种环境的部署,大量的围绕Docker的软件生态环境已经建立。

Docker的主要优点:

       轻量资源使用:相对于虚拟化整个操作系统,容器只是在进程级别进行隔离,使用的还是主机内核kernel。 可移动:应用的所有依赖都打包到容器内部,这样可以运行在任何支持Docker的主机系统上。 可预测:主机并不关心容器内部运行什么,容器也不关系主机运行在什么平台上,是单机还是云平台都不关心,这些接口都是标准的,因此它们之间的交互行为都是可以预期的。 一般情况下,当使用Docker设计一个应用或服务,它可以很好地将功能分离到容器中,一种设计策略称为面向服务架构,这会让你能够在将来方便独立地扩展和更新组件,正因为这些灵活性才使得人们对Docker在开发和部署上兴趣日益浓厚。

服务发现:

       服务发现是为了让容器扩展和灵活部署的一个整体策略,容器使用服务发现能够知道它所处的环境, 这一切无需管理员介入,它们能够发现组件需要交互的连接信息,它们能够注册它们自己以便其他组件或工具知道它们已经变成随时可用,这些工具通常使用一个全局分布式配置存储实现任意配置。

网络工具:

       容器化应用将自己定位在面向服务的设计,这样鼓励分离功能到离散组件,而这使得管理和扩展更加方便,它更需要确保组件之间的网络可靠性,Docker自己提供一个基础网络结构以便容器与容器,容器和主机之间的通讯。
Docker的原生网络能力提供将容器连接在一起的两种机制,第一个是将容器的端口暴露,映射到主机系统作为外部路由,你能选择主机端口让Docker映射,也可以让Docker随意选取,这种方式对于大部分情况都通用。
另外一种方式是允许容器使用Docker的"links"通讯,一个linked容器将会得到对方的连接信息,允许对方自动连接自己,前提是必须配置,这允许在同样主机上两个容器连接,这样无需事先知道服务所在的端口和IP地址。
Docker的网络基本层适合单机或相关的管理环境,Docker的生态系统已经有很多项目来聚焦网络功能,这些工具功能包括:
       跨多个主机简化和统一地址空间
       虚拟专用网络提供各个组件之间的安全通讯
       为每个主机每个应用建立子网通讯
       创建通讯的macvlan接口
       配置容器的自定义的 MAC 地址, 网关

下面一些项目专门用于提高Docker网络功能:
       Flannel:为每个主机提供一个单独子网。
       Weave:将所有容器组织在一个网络中.
       Pipework:高级网络配置的网络工具集


调度、集群管理和流程编排:

       请求通过一个API或管理工具发出,调度器计算请求的条件和当前可用的主机,比如从一个分布式存储和服务发现中获取容器信息,这样可以见应用部署在最不繁忙的主机上。
主机的选择是调度器的核心功能,通常它有一个自动化管理功能,这些功能包括:
       根据要求调度同一主机上另外一个容器。
       确保容器不会再放在同一主机上。
       根据匹配标签或元数据放置一个主机上容器。
       在最不繁忙的主机上放置容器。
       启动在集群环境中每个主机的容器。
       调度器负责装载容器到相关主机,然后启动 停止和管理。

       由于调度器必须与该组中每个主机交互,集群管理功能就必须了,这允许调度器获得成员信息,执行管理任务,流程编排combination一般是包含调度和管理主机功能的组合。

如下一些工具作为调度器:
       Fleet:调度器和集群管理工具
       Marathon:调度器和服务管理工具
       Swarm:调度器和服务管理工具
       Mesos:服务抽象和主机资源统一调度
       Kubernetes:高级调度器用于管理容器组
       Compose:创建容器组的容器流程编排工具


项目五 OpenStack云平台解决方案



       OpenStack既是一个社区,也是一个项目和一个开源软件,提供开放源码软件,建立公共和私有云, 它提供了一个部署云的操作平台或工具集,其宗旨在于:帮助组织运行为虚拟计算或存储服务的云,为公有云、私有云,也为大云、小云提供可扩展的、灵活的云计算。 OpenStackd开源项目由社区维护,包括OpenStack计算(代号为Nova),OpenStack对象存储(代号为Swift),并OpenStack镜像服务(代号Glance)的集合。 OpenStack提供了一个操作平台,或工具包,用于编排云。

Openstack的网络拓扑结构:

       整个OpenStack是由控制节点,计算节点,网络节点,存储节点四大部分组成。(这四个节点也可以安装在一台机器上,单机部署) 其中:
控制节点负责对其余节点的控制,包含虚拟机建立,迁移,网络分配,存储分配等等
计算节点负责虚拟机运行
网络节点负责对外网络与内网络之间的通信
存储节点负责对虚拟机的额外存储管理等等


控制节点架构::

        1)管理支持服务包含MySQL与Qpid两个服务
MySQL:数据库作为基础/扩展服务产生的数据存放的地方
Qpid:消息代理(也称消息中间件)为其他各种服务之间提供了统一的消息通信服务

        2)基础管理服务包含Keystone,Glance,Nova,Neutron,Horizon五个服务
Keystone:认证管理服务,提供了其余所有组件的认证信息/令牌的管理,创建,修改等等,使用MySQL作为统一的数据库
Glance:镜像管理服务,提供了对虚拟机部署的时候所能提供的镜像的管理,包含镜像的导入,格式,以及制作相应的模板
Nova:计算管理服务,提供了对计算节点的Nova的管理,使用Nova-API进行通信
Neutron:网络管理服务,提供了对网络节点的网络拓扑管理,同时提供Neutron在Horizon的管理面板
Horizon:控制台服务,提供了以Web的形式对所有节点的所有服务的管理,通常把该服务称为DashBoard

        3)扩展管理服务包含Cinder,Swift,Trove,Heat,Centimeter五个服务
Cinder:提供管理存储节点的Cinder相关,同时提供Cinder在Horizon中的管理面板
Swift:提供管理存储节点的Swift相关,同时提供Swift在Horizon中的管理面板
Trove:提供管理数据库节点的Trove相关,同时提供Trove在Horizon中的管理面板
Heat:提供了基于模板来实现云环境中资源的初始化,依赖关系处理,部署等基本操作,也可以解决自动收缩,负载均衡等高级特性。
Centimeter:提供对物理资源以及虚拟资源的监控,并记录这些数据,对该数据进行分析,在一定条件下触发相应动作
控制节点一般来说只需要一个网络端口用于通信/管理各个节点

网络节点架构:

       网络节点仅包含Neutron服务
Neutron:负责管理私有网段与公有网段的通信,以及管理虚拟机网络之间的通信/拓扑,管理虚拟机之上的防火等等
网络节点包含三个网络端口
eth0:用于与控制节点进行通信
eth1:用于与除了控制节点之外的计算/存储节点之间的通信
eth2:用于外部的虚拟机与相应网络之间的通信


计算节点架构:

       计算节点包含Nova,Neutron,Telemeter三个服务
1)基础服务
Nova:提供虚拟机的创建,运行,迁移,快照等各种围绕虚拟机的服务,并提供API与控制节点对接,由控制节点下发任务
Neutron:提供计算节点与网络节点之间的通信服务

2)扩展服务
Telmeter:提供计算节点的监控代理,将虚拟机的情况反馈给控制节点,是Centimeter的代理服务
计算节点包含最少两个网络端口
eth0:与控制节点进行通信,受控制节点统一调配
eth1:与网络节点,存储节点进行通信

存储节点架构:

       存储节点包含Cinder,Swift等服务
Cinder:块存储服务,提供相应的块存储,简单来说,就是虚拟出一块磁盘,可以挂载到相应的虚拟机之上,不受文件系统等因素影响,对虚拟机来说,这个操作就像是新加了一块硬盘,可以完成对磁盘的任何操作,包括挂载,卸载,格式化,转换文件系统等等操作,大多应用于虚拟机空间不足的情况下的空间扩容等等
Swift:对象存储服务,提供相应的对象存储,简单来说,就是虚拟出一块磁盘空间,可以在这个空间当中存放文件,也仅仅只能存放文件,不能进行格式化,转换文件系统,大多应用于云磁盘/文件

存储节点包含最少两个网络接口
eth0:与控制节点进行通信,接受控制节点任务,受控制节点统一调配
eth1:与计算/网络节点进行通信,完成控制节点下发的各类任务

项目式教学额外的收获



       通过课程中多个项目的植入讲解,除了可以收获技术和项目代码之外,更能收获软件工程方面的知识,和讲师经验的分享。可以直接获得项目的管理,其中涉及团队协作,项目代码管理,项目进度管理,开发团队的维护和管理。 除此之外还可以了解到如何进行客户沟通,以及整个项目的开发流程,宏观认识项目。 这些项目中贯穿了项目工程内容,涉及代码管理、团队协作、项目流程、客户沟通以及相关工具的使用。

代码管理
  • - Git安装
  • - 代码时光机
  • - 多人合作
  • - 分支特性
  • - 远程仓库
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 其中很多的特性相较于svn,cvs更加的强大,特别是分支特性,更好的维护产品代码,保证代码的健壮性。
团队协作
  • - 文档管理
  • - 设计图管理
  • - 团队人员分工
  • - 员工沟通技巧X
团队协作是团队运作非常重要的一个环节,直接影响整个项目能否顺利完成。其中还包括员工的沟通,考核已经后续的升职加薪。
项目开发流程
  • - 原型制作
  • - 设计图制作
  • - 数据库设计
  • - 框架开发
  • - 软件测试
  • - 上线部署流程
了解整个项目的开发流程对开发人员有着非常重要的意义,开发人员可以在宏观角度来认识项目,并提高和其他部门之间的配合,为后续的升职加薪做好准备。
客户沟通
  • - 客户沟通
客户是公司生存的经济来源,与客户的沟通显得至关重要,企业技术总监亲自讲述与客户沟通的那些事。

加群主微信
购买后
拉进交流群
学习交流
¥1024元 立即购买
¥2048元 立即购买
¥4096元 立即购买