阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

004 | Linux云计算架构师课程介绍

150次阅读
没有评论

共计 6020 个字符,预计需要花费 16 分钟才能阅读完成。

本文为《跟马哥学 Linux》系列文章的第四篇,上一篇文章为《 Linux 云计算高端课程上课纪律 》。

在正式开始之前,简单说明一下整个 Linux 整个课程体系。Linux 运维课程体系大纲有哪些,让各位充分了解一下课程主要有哪些,会涉及哪些要点。大体上将课程分为两个阶段。分为中级和高级的内容,我对他做一下简单说明:

首先,讲一下 Linux 入门课程主要讲解:Linux 操作系统的基础概念、常见的发行版本之间的差异化以及一些基础命令的使用,比如与文件系统相关的和除文件系统以外,与系统管理相关的工具。

Linux 系统管理课程主要包括程序包管理、分区管理等。还有,Linux 服务及安全管理课程。

这三个课程对应红帽课程体系的认证考试的 RHCSA(红帽认证助理工程师)和 RHCE(红帽认证工程师)课程,是 Linux 学习的基础知识,是运维工作中最经常用到的知识。对于零基础同学,后面相对较简单,因为入门很难,后面无非是学知识或者学习新概念,这些新概念是建构在基础知识之上的。对于有基础的同学,希望可以有不同的收获,可以把更多的精力放在后面知识的深入学习上。

再往后,学习 Linux Cluster 叫做 Linux 集群。

主要学习常见集群的两种,第一种是负载均衡集群,可称做 LB Cluster。在第一阶段,主要讲解 LB Cluster 中,如何实现基于 Nginx 完成对于 http 协议反代模式的七层负载均衡,以及借助 LVS 实现四层负载均衡,并且会对比说明二者之间的区别和适用场景。

而后,会讲解高可用集群,即 HA Cluster。主要讲解 Keepalived 来保证 Nginx 和 LVS 服务的高可用。

接下来,会讲解 Linux Ops 运维工具,它非常简单好用,目前炙手可热的,叫做 ansible,在中小型企业,无大型服务器的企业,ansible 非常好用。

这一阶段后,主要讲解 Linux 监控工具 Monitoring,会讲 zabbix。

以上为第一阶段的重点内容,接下来讲解第二阶段。

第二阶段,首先会讲解 http 服务的相关功能,在第一阶段,在讲到 Linux 服务及安全管理课程时,除了会讲如 http 这样非常关键的服务,还会讲各位了解的 lamp,lnmp 等,我们额外会讲 cache 的工具,会讲到 memcached 和 varnish 等缓存系统。

接着,我们回头说,第二阶段首先会讲解 http 服务,不过我们此处主要讲解 tomcat,tomcat 会花很长时间讲 GAM 运行环境,tomcat 的整体运行框架,tomcat 内置的 cast 等,tomcat 服务所涉及到的方方面面,都会讲到。并且,在 tomcat 服务下,会讲解如何运用 tomcat 构建 lnmt 或者 lamt,以及会话集群 session replication cluster。

在第一阶段中,会讲数据存储的相关内容 mysql(mariadb),他们有什么区别,我们会今后解释。会讲解 mysql 的基本使用、用户、权限使用、复制。。

接着,会讲 http 的会话集群 session replication,这是 tomcat。

tomcat 这阶段中,会引用另外一个概念分布式存储系统,先会讲分布式系统的基本概念及原理,接着讲分布式存储系统的基本概念及原理并且会用一个实例 MoglileFS 或者 GlusterFS 来讲解:什么是分布式文件系统,什么是分布式存储,何为有中心节点的分布式,何为无中心节点的分布式。并且会讲解如何用 Nginx 反代用户请求整合 MoglileFS,以构建一个企业级应用当中的分布式图片存储系统。

还讲 HA Cluster 中的另外一种实现:Corosync 集群 +pacemaker 集群,以及 RHCS 套件,命令行管理工具 pcs/crmsh。接下来讲解 Mysql,如 HA Cluster、MHA 机制、备份和恢复工具使用、MySQL Replcation(复制功能)、Read-Write splitting(读写分离机制)。还有 NoSQL,包括 redis(KV 存储),mongodb(文档存储),HBase 等。接下来讲一下 Linux 运维工具 Ops,包括 puppet(自动化运维工具),saltstack(基于 puppet 编写),cobbler 等

接下来讲解虚拟化,会讲到 Linux 操作系统原理,如 CPU、进程、内存、磁盘管理、I/O、文件系统等,借助于虚拟化技术原理,深入理解像 VMware、KVM、容器技术的 LSC 的实现。以及 kvm 虚拟化应用详解,例如 xen 虚拟化解决方案等。紧接着,会讲虚拟化网络,它是基于软件构建网络,利用纯软件构建交换机、路由器,需要了解 SDN(软件定义网络)。还会讲到 OpenStack 云栈,会涉及到 Docker(容器):基础:卷管理、虚拟化网络、映像文件,容器云等。会介绍 ELK Stack(日志分析工具),即为 ElasticSearch 搜索引擎,Logstash(日志搜寻工具)Kibana(日志展示工具)。接下来,会讲炙手可热的大数据,讲到 Hadoop v2 版,分布式并行存储及分析平台等,而 HBase 是运行在 Hadoop 之上的,还包括 Hive,Storm,Spark 等。

还有一个知识点叫做系统优化,系统优化在红帽教材中被称作 black art,是黑色艺术。叫这个的原因是,它百分之九十五是讲理论,百分之五是动手调参数。而对于中小型企业来讲,除了那些特别有影响的关键参数我们需要调,其他的不调,真正有能力调参数的大公司是进行二次研发的。不要随意的优化,因为,你所看到的瓶颈未必是瓶颈。

你看到 CPU 慢了,有可能是内存太小导致的,系统优化需谨慎。后面我们学习 Python 编程,它是一种技能,我们要想学好一门编程语言,学习它的语法非常容易,想用它来建构工具是非常困难度,所以,Python 课程不以培养 Python 开发工程师为目标,对于运维人员来说,能是看懂别人写的工具就可以,培养你自己写,不是让你自己开发。

在第一阶段,还会学习另一个内容,叫做 shell 脚本编程。这些内容远远超过 RHCA 的课程。这些课程是很难的。

讲一下学习阶段,第一个是教室学习,大概是 4 个月时间,第二阶段是工作学习阶段,我们学的东西,交给你了,你毕业了不要全还给老师,找工作没信心。这很正常,面对任何事情,你永远不可能准备好,准备全面就可以了。你只需要按要求写好博客,笔记做好,在课程结束之前把所有的笔记和博客梳理出来,做成一本书,拿着去面试,不断的看书面试。

即便没有任何基础,不断的根据面试的问题,查找自己的不足。差不多是个面试,会找到自己合适的工作,然后可以上班了。工作的过程中,不断的看笔记,看视频,让自己的知识不断的扩充和加深。第二个阶段大概有八个月或者一年多时间。不求工资高,找一个对自己运维生涯有帮助的公司。

把课堂的知识转换为在生产环境中可用的技能,才可以踏入第二个阶段。

接下来,讲解 IT 技术领域的岗位做一下简单的描述,岗位主要分为研发和应用,对于研发,又分为硬件研发和软件研发。硬件研发就是设计电路板。另外是软件研发,为什么会用到软件,很容易理解,就像买到一个自动洗衣机,没有任何操作接口或者按钮是不可能转动起来的。操作接口背后的逻辑,比硬件要复杂很多。注意,硬件的接口很简陋。任何的硬件生产出来后,依然以洗衣机为例,刚刚生产出洗衣机,如果没有便捷的你能看到的控制接口的话,你想让他转起来,非常不方便开启和使用,但他给我们一个按钮或者遥控器,这是一种使用方案,让双方进行交互的使用工具,我们通常称之为接口,这是在计算机中,常用的称呼。而各种硬件的接口的底层是非常丑陋的,为了尽可能让用户方便使用,接口做的越简单越好,并不是你看上去简单,他就真的简单,而是背后的复杂逻辑层次隐藏了。

跟我们以前任何领域所涉及到的复杂逻辑层次是近似的,当任何层次太复杂了,我们该如何解决。我们就在这个复杂层次上建构一个抽象层,让抽象层把底层复杂逻辑结构隐藏起来,输出出来就极为简单。

在计算机硬件设备刚生产出来的时候,他只有硬件连接接口,在硬件上实现复杂逻辑接口是很困难的,他需要的代价是非常大的,而且是写死的。利用硬件实现功能的话,想变个花样,非常困难,因为他是固化的。只能使用软件的方式,在此之上附加一层更复杂的逻辑来解决这个问题。而这个逻辑其实就是软件,所以,硬件所提供的接口过于底层和难操作,我们需要软件把他的接口做的更人性化一点,同时把底层的复杂性,利用逻辑把他隐藏起来。但这样一来,并不是复杂性不存在,只是他的复杂性由软件来承接了。这样一来,硬件就只提供最基本的功能,各种复杂的功能由软件来呈现。我们所提供的工具,越接近于最终的形态,他的适用领域也就越窄。我们的学历越高,我们所能做的工作机会就越少。我们硬件也是一样,把硬件保持最原始形态,所有的功能都由软件来实现,硬件的通用性就越大。

计算机也是如此,计算机的基本功能只有极为简单的运算,任何智能的东西,想要明白基本的命令或指令,这些指令通常由 CPU 接收的,CPU 有运算器和控制器,他能接收一些命令给他,可以让他做加减法、清空内存等,他能做最基础的事情,至于你让他编辑图像,只能依靠软件来实现,但软件所形成的逻辑可以在底层硬件完成。CPU 是用来加工数据的,数据需要有问题是我们把数据放进去,怎么把加工后的又拿出来,这就需要输入和输出设备,这是我们计算机的基本硬件,目前所有计算机都是在这个框架上运作的,这个机制,我们称之为“冯. 诺依曼体制”。

冯. 诺依曼在数学领域、经济学领域、计算机领域都称之为世界上的顶级人物。这些硬件保持了最底层的功能,所以我们需要用软件来实现接近于最终产品形态。但计算机自己的说明语言太难懂了,都是二进制指令,都是 0101001……,用来加工二进制数据太难了,人类难以理解。程序员写程序只能用二进制指令来加工二进制数据去写,这是非人的能力。

所以,我们需要一门语言,让人说起来非常容易,但计算机不理解,计算机只能理解二进制数据。我们现在的编程语言都是离人很近,计算机理解不了。当两个层次彼此间无法衔接时,加个中间层,而对于计算机来说,叫做编译器。

所谓软件,是程序员写的程序代码,这个程序代码用编程语言来实现,编程语言并不是机器所说的语言,及其所说的叫做机器语言。机器语言就是你可以想象成让机器工作的接口。而程序员直接用接口来编写的话太难了,于是发明高级编程语言。

后来,任何一款芯片的制造商,他们都把芯片的机器代码提供了一个较为简单的,稍微好一点,但依旧很简陋的编程接口,成为微码编语言,或者称为汇编语言。汇编语言仅仅是二进制数据转变为人类自然语言符号,他离最终形态依然很远,程序员需要做很多。汇编语言是低级语言的代表,芯片制造商会给自己的芯片提供汇编语言。汇编语言和芯片语言类似,你学了一种汇编语言,第二种未必会用,他和芯片紧密相关,适用性很差,没有普适性。于是有了高级语言,如 C,C++,虽然兼具低级语言特性,但也是高级语言。任何语言,只要不是机器语言,机器都无法理解。对于汇编语言,称为汇编器,对于高级语言,称之为编译器,来翻译成机器语言。

方框代表硬件,六边形代表数据,需要把数据转换为硬件识别的形态,需要中间的形态,如果是汇编语言,叫做汇编器。如果是高级语言,叫做编译器。

但一般来讲,高级语言所写的程序,最终需要转换为机器语言,但中间会经过汇编过程,所以大多数情况下,比如 C 程序,要先转换为汇编格式,由汇编格式在转换为机器格式,可以理解为任何一个机器都有汇编,要想到达机器,就必须经过汇编。

而程序员就是写高级程序语言,让底层具有非常简陋功能的机器,可以完成复杂逻辑功能。

高级语言是建立在汇编语言之上的,接近人类的思维方式,所以写起来容易很多。但翻译起来却需要更多的机器语言来解释。

汇编语言经常用于写驱动程序。高级语言又分为两类,一类是系统级高级语言,如 C,C++,通常开发大型的对系统要求高的程序,像 mysql、oracl、sql server,甚至到操作系统,像 Linux、windows。这种语言对人而言,代码量较大,很难达到所见即所得。一类是应用级高级语言,如 JAVA,Python,这种程序非常接近人类的语言,但离机器越来越远。

如图所示,假如最长线为机器语言,汇编语言在机器语言之上,再往上是 C 和 C ++,再往上是 java 和 Python,人在他们之上(笑脸代表人),而电脑在最底层(方盒子代表电脑),你会发现,高级语言就是离人较近的语言,低级语言就是离机器较近的语言。他的特点是,机器语言离机器近,机器运行快,而高级语言离机器远,中间需要层层转换,所以机器运行比较慢,但人写起来比较快。

这就是所谓的高级语言和低级语言。而高级语言又分为系统级和应用级。系统级别的语言主要写操作系统等对性能要求较高的服务类程序,像 oracl、mysql、Linux 等,如果只是开发网站,开发图书馆管理系统等可以使用应用级语言,应用程序对性能要求不高,对程序员来讲,希望他能快速出活的程序,像 ansible,puppet。puppet 使用 ruby 语言所研发,等等。要想写驱动,就使用汇编,想去写关键程序,就使用 C、c++,学习应用级程序,使用 java,Python 性能比 java 要差,但在研发上所用的时间,足以抵消他在性能上降低的时间,所以,会用到 Python。

什么叫做应用领域?应用领域就是把别人写好的软件用好而已。对我们来说,领域通常称为运维。在 Linux 运维中,就是 Linux 生态圈中的各应用程序的应用。如果仅是手动运维就太低级,尽可能用编程的视角,把这些管理 Linux 应用的工作,让程序帮我们去完成,也就是 shell 脚本编程的工作,让某些应用工作能自动完成,他不是完整的编程语言,他是建构在解释器之上,让别的程序更好的程序逻辑工具。我们要想实现更为复杂的功能,就需要专业级完整的编程语言,像 Python。

要想找所谓的 socket 编程,shell 脚本实现不了,除非借助于工具,有 socket 功能的,我们能操作的细节程度就非常拙劣了,但 Python 要好很多。Python 是非常高级的语言,比 java 都高级,所以性能差,学起来很容易。因此,在所有的编程语言中,不考虑 shell 的话,Python 是最容易学的。Python 是专业编程语言,能实现很多功能,如 ansible,openstack 都是运用 Python 完成的。如果你能写 Python,又能做运维,这就证明你可以写运维工具了。

不以研发为目的,只是为了运维更为灵活和自动,叫做 DevOps,即为 Development(研发)和 Operations(运维),将来可以把这个作为发展方向。

运行维护就是把别人写的软件,拿到我们公司,根据我们的业务需要把他组织起来,满足我们运行的需要,能完成公司需要我们完成的任务即可。这是我们这个课程的大体框架的描述,下节课会将 Linux 发展历史。

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-12-03发表,共计6020字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中