当前位置: 首页 > 编程日记 > 正文

《OpenStack实战》——第1章 介绍OpenStack 1.1OpenStack是什么

本节书摘来自异步社区《OpenStack实战》一书中的第1章,第1.1节,作者: 【美】V. K. Cody Bumgardner(V. K. 科迪•布姆加德纳)著,更多章节内容可以访问云栖社区“异步社区”公众号查看

第一部分 入门指南

本书的第一部分是对OpenStack框架的介绍:为什么要使用它和如何使用它。剖析OpenStack各个组件,解释它们与底层资源(计算、存储、网络等)的关系。这一部分将会带领你在单个节点上通过DevStack部署工具来部署OpenStack。同时这一部分内容还会帮你思考如何能将OpenStack用在你的环境中,并激发你对这个框架的兴趣,继续探索本书后面的部分,更深入地了解它是如何运作的。

第1章 介绍OpenStack

本章主要内容

OpenStack和云生态系统
选择OpenStack的理由
OpenStack可以为你和你的组织做些什么
OpenStack的核心组件
一二十年前,很多大型的计算机硬件公司都通过自己生产制造专门的处理器来保持竞争优势。但随着成本的上升,能制造出足够数量的芯片来保持盈利的公司越来越少。于是,专门生产芯片的厂商出现了,它们可以大规模生产通用处理器,并且大大降低了成本。从一开始的只有少数计算机芯片厂商“鼓吹”的基于英特尔x86指令集的标准化台式机和服务器平台,到最后形成了采用通用硬件的客户-服务器的市场格局。

在21世纪初的互联网风潮下,互联网快速发展,从而出现了大量大规模使用通用硬件的数据中心。虽然通用硬件设备强大且便宜,但它的架构就跟我们看到的台式机一样,不是按中心化管理的思想来设计的。没有现成的工具可以用来像管理资源池一样管理这些通用硬件设备。更糟糕的是,在那时,这些服务器缺少硬件管理的能力(辅助管理卡),看起来跟台式机一样。不像大型机和大型对称多处理结构(symmetric multiprocessing,SMP)的机器,这些通用服务器跟台式机一样,需要通过软件管理层来协调其他独立的资源。

在这个阶段,公共或者私有的组织在自己内部开发出很多管理框架来管理公共资源。图1-1展示了跨越多个数据中心的相互连接的资源池。通过管理框架,这些公共资源可以基于其可用性或者用户需求来灵活使用。不知道谁创造了这个术语,这种通过管理框架来灵活使用通用硬件设备的计算方式,可以说是拥有了资源“云”。

screenshot

图1-1 彼此互联的通用资源的云

在这个阶段,在很多商用或者开源的云管理软件之中,OpenStack是最为流行的一个。OpenStack提供了一个通用的平台来控制云计算里面的服务器(计算)、存储、网络,甚至应用资源。OpenStack可以通过基于Web的界面、命令行工具(CLI)和应用程序接口(API)来进行管理。这个管理平台不仅能管理这些资源,更妙的是它不需要你去选择特定硬件或者软件厂商。厂商特定组件可以轻松地被替换成通用组件,OpenStack为IT业界各类从业人员创造了价值。

一种更好理解OpenStack的方式是了解在亚马逊网站上购物的过程。用户登录亚马逊网站,然后购物,商品将会通过快递派送。在这种场景之下,一个高度优化的编排步骤是尽可能快并且以尽可能低的价格把商品买回家里。亚马逊成立12年后推出AWS(Amazon Web Services)。AWS把用户在亚马逊网站购买商品这种做法应用到了计算资源的交付上。一个服务器请求可能要花费本地IT部门几周的时间去准备,但在AWS上只需要准备好信用卡,然后点击几下鼠标即可完成。OpenStack的目标就是提供像AWS或者其他服务提供商一样水准的高效资源编排服务。

OpenStack是什么?

对于云计算平台/系统/存储/网络管理员来说,OpenStack可以控制多种类型的商业或者开源的软硬件,提供了位于各种厂商特定资源之上的云计算资源管理层。磁盘和网络配置这些重复性手动操作任务现在可以通过OpenStack框架来进行自动化管理。事实上,提供虚拟机甚至上层应用的整个流程都可以通过使用OpenStack框架进行自动化管理。
对于开发者来说,OpenStack是一个在开发环境中可以像AWS一样获得资源(虚拟机、存储等)的平台,还是一个可以基于应用模板来部署可扩展应用的云编排平台。可以想象一下,通过OpenStack框架,可以为应用提供基础设施(X虚拟服务器有Y容量内存)和相应的软件依赖(MySQL、Apache2等)资源。
对于最终用户来说,OpenStack是一个提供自助服务的基础设施和应用管理系统。用户可以做各种事情,从简单的像AWS一样提供虚拟机(VM),到构建高级虚拟网络和应用,这些都可以在一个独立的租户(项目)内完成。租户,也就是我们所说的项目,是OpenStack用来对资源分配进行隔离的方式。租户隔离了存储、网络和虚拟机这些资源,因此,最终用户可以拥有比传统虚拟服务环境更大的自由度。可以想象一下,最终用户被分配了一定额度的资源,他们可以随时获得他们想要的资源。
虚拟机和租户

在本书中,虚拟机指的是模拟物理服务器的一个实例。与物理机一样,虚拟机执行相同的功能,从操作系统的角度来看,无法区分是运行在虚拟机还是物理机上。导致虚拟机被使用的原因多种多样,但大多数的虚拟化推动力可以归结为:以牺牲性能来获得通过软件对资源的灵活控制。从一个更高的角度来说,你可以认为OpenStack之于数据中心,就像操作系统之于服务器,都带来了相同水平的运行效率。

读者将在本书多处看到租户这个词,在OpenStack里面这个词有特定含义。我们可以认为租户就是资源的配额限制集合,被虚拟机用来在逻辑上与不同租户互相隔离。例如,一个用户在租户A配错了网络,但租户B并不会受到影响。
OpenStack基金会拥有数以百计的官方企业赞助商,以及数以万计的覆盖130多个国家或地区的开发者组成的社区。像Linux一样,很多人将会被OpenStack吸引,作为其他商业产品的一个开源的替代品。但他们将会逐渐认识到,对于云框架来说,没有哪个云框架拥有OpenStack这样的服务深度和广度。也许更为重要的是,没有其他产品,包括商业或者非商业的,能被大多数的系统管理员、开发者或者架构师使用并为他们组织创造这么大的价值。

1.1 OpenStack是什么

让我们来详述OpenStack作为管理、规定和利用云资源的框架的定义。OpenStack官方网站(www.openstack.org)这样描述这个框架:“创建私有云和公有云的开源软件。”接着是:“OpenStack软件是一个大规模云操作系统。”如果读者有服务器虚拟化的经验,也许读者会很快地得出这样不正确的结论:OpenStack只是提供虚拟机的另外一种方式。虽然虚拟机是OpenStack框架可以提供的一种服务,但这并不意味着虚拟机是OpenStack的全部。

图1-2展示了OpenStack通过其几个资源组件协调来提供公有云服务和私有云服务。如图所示,OpenStack没有取代资源提供者,它只是通过框架内部的控制点来简单地管理这些资源。
screenshot

图1-2 OpenStack是一个云操作系统

一个有经验的系统管理员也许会非常怀疑OpenStack是一个“云操作系统”的描述。OpenStack不像管理员通过启动盘引导启动几百台传统操作系统服务器那样,直接在裸设备上引导启动。相反,它通过对资源的管理,在云计算环境里共享操作系统的特性。

在OpenStack云平台上用户可以:

充分利用物理服务器、虚拟服务器、网络和存储系统资源;
通过租户、配额和用户角色高效管理云资源;
提供一个对底层实现透明的通用的资源控制接口。
乍看之下,OpenStack确实不像是一个传统操作系统,但“云”同样不像传统计算机。我们必须回过头来重新考虑一个操作系统的根本作用。

最初,操作系统乃至硬件层面抽象语言(汇编语言)、程序都是用二进制机器码来编写的。然后传统操作系统出现了,允许用户不仅可以编写应用程序代码,还可以管理硬件功能。现在管理员可以使用通用的接口管理硬件实例,开发者可以为通用操作系统写代码,用户只需要学习一个用户交互接口即可。这样可有效地对底层硬件透明化,只需要操作系统是一样的。在计算机进化演变过程中,操作系统的发展和新操作系统的出现,给系统工程和管理领域带来了风险。

图1-3展示了现代计算系统的各个抽象的层次。

screenshot

图1-3 计算抽象的层次

毫无疑问,过去的一些开发者不想因为使用操作系统而失去了对硬件的直接控制,正如有些管理员不想因为服务器虚拟化而失去对底层硬件和操作系统的控制。在每次转变过程中,从机器码到汇编,再到虚拟层,我们一直没有失去对底层的控制;每次都是通过抽象手段简单标准化而已。我们仍然拥有高度优化的硬件,我们仍然拥有操作系统,只不过更常见的是我们拥有这些层面之间的硬件虚拟化层。

新的抽象层被广泛接受,通常是因为对标准实现优化的好处大于在这些层面上做(虚拟化)转换。也就是说,当整体计算资源的使用率能通过牺牲原生性能来得到很好的提升,那这一个层面的抽象就会被接受。这个现象可以通过中央处理器(CPU)的例子来清晰展现,这几十年,中央处理器都遵守相同的指令集,但它们内部的架构却发生了翻天覆地的变化。

大多数人想到中央处理器时,都没想到硬件层面的虚拟化和执行形式的变化,但事实就是这样。很多在x86处理器上执行的指令可以被处理器内部虚拟化,一些复杂的指令可以通过一系列更简单、更快速的指令来执行。指令层面优化的复杂度不在本书的讨论范围内,但很有必要去了解,即使是使用裸设备,即使是在处理器层面,也是应用到了某种形式的虚拟化。现在,与其关注失去了控制,不如想象一下,通过使用一个共同的框架来管理、监控和部署基础设施和应用的私有和公有云。只有向前迈出转变的步伐,才会真正领会OpenStack。

数十年间CPU的抽象和虚拟化

英特尔的x86指令集首次出现在1978年推出的英特尔8086处理器上,作为英特尔8080处理器的向后兼容替代品。x86指令集定义了一系列对处理器变化透明的汇编指令。从那以后,新的“处理器扩展特性”不断被添加进来,处理器时钟周期也不断提升,但已存在的指令依旧保留下来。

随着更快的处理器需求的增长,因此产生了软件能在不同代处理器之间互操作的需求。CPU设计者需要对低级别抽象进行弹性优化,同时还要保留指令级别的兼容性(标准化)。设计者不用担心关于如何保持底层硬件一致的问题,这样他们可以在不同代处理器间极大地提升处理器的时钟速度。1995年,英特尔的奔腾Pro(Pentium Pro)处理器引入了微操作解码(micro-op decoding)这个概念。之前一个特定指令就是一个指令时钟周期,通过翻译这个指令为多个简单微指令,每个微指令就是一个指令时钟周期。

除了微操作,奔腾Pro处理器还引入了指令的无序执行和内存的虚拟化(通过32位总线对36位内存进行寻址)来对处理器进行优化。但这些对开发者来说是完全抽象化的,允许相同的应用运行在不同厂商出品的不同代的处理器上。这种保持指令级别兼容性的方式依然使用在当前的x86_64处理器中。

相关文章:

【转】 一些NET的实用类,不错

http://www.cnblogs.com/9who/archive/2008/08/01/1258248.html转载于:https://www.cnblogs.com/niuniu502/archive/2008/08/01/1258331.html

/dev/null

把/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 然而, /dev/null对命令行和脚本都非常的有用. 禁止标准输出. 1 cat $filename >/dev/null2 # 文件内容丢失,而不会输出到标…

backup restore On Ubuntu

详见:https://help.ubuntu.com/community/BackupYourSystem/TAR 在 使用Ubuntu之前,相信很多人都有过使用Windows系统的经历。如果你备份过Windows系统,那么你一定记忆犹新:首先需要找到一个备份工 具(通常都是私有软件)&#xff…

.net 连接ORACLE 数据库的例子

利用 System.Data.OracleClient.Dll 的组件进行连接&#xff1a; 首先配置WebConfig 文件&#xff1b; <connectionStrings> <add name"oracleconn" connectionString"Data Source"";User IDryq;Password123456" providerName&quo…

什么是SESSION?(一)

本图文通过三个问题的回答&#xff0c;详细介绍了Session的机制。本图文由钟锦提供。

linux下字符串处理工具一:grep

grep常见选项 grep -A &#xff1a;显示匹配行和之后的几行 grep -A 4 "NullPointerException" test.log 找到NullPointerException之后的几行-c &#xff1a;打印匹配到的行数 c:count[adminv069164233.sqa.<pre name"code" class"html"&…

Matlab与随机变量和样本的数字特征

本文主要介绍了常见分布的期望和方差以及样本的数字特征。贡献人为孔令才。

C#的方法的参数修饰符详解

方法参数修饰 (啥也没有) 如果参数的修饰是啥也没有&#xff0c;那么其参数传递的方式是值传递&#xff0c;接受方收到的是原始数据的拷贝 out 说明了参数是引用传递。 params 可变参&#xff0c;注意了这种修饰符针对的参数一定是最后一个参数 ref 引用传递&#xff0c;参数的…

wps 2016 个人版 重新开始编号

wps文档重新开始编号&#xff0c;继续编号&#xff0c;自定义编号 首先选中这一行鼠标右键选中项目符号和编号单击项目符号和编号&#xff0c;你可以重新开始编号为1&#xff0c;继续前一列表&#xff0c;还可自定义&#xff0c;单击确定按钮就可以实现你想要的结果效果图转载于…

Sublime Text保存文件时自动去掉行末空格

1.安装DeleteBlankLines 插件 通过ctrlshiftp组合键打开命令面板 输入install packge后回车 输入DeleteBlankLines后回车进行安装 Sublime Tex去除空白行插件DeleteBlankLines 上文所述安装DeleteBlankLines插件的前提&#xff1a;Package Control已经安装好。 3.Subl…

六步使用ICallbackEventHandler实现无刷新回调

AJAX技术所提倡的无刷新回调&#xff0c;在原来的技术中需要写大量的JavaScript代码或使用一些AJAX框架&#xff0c;使得开发效率和可维护性大大降低。其实ASP.NET2.0中&#xff0c;已经提供了这样的接口&#xff0c;这就是ICallbackEventHandler。关于ICallbackEventHandler网…

Matlab与线性代数 -- 矩阵的特征值与特征向量

本图文详细介绍了Matlab中求方阵特征值与特征向量的方法。

mybatis3进行模糊查询的总结

一种直接采用函数进行模糊查询&#xff0c;直接在映射文件中书写对应的like语句。 例如&#xff1a; select * from u_tree ut where ut.node_name like concat(concat(‘%,#{text}),’%&#xff09; 第二种方式&#xff1a; 使用 ${...} 代替 #{...} SELECT * FROM tableName …

linux下字符串处理工具二:awk(1)

awk工作原理 原理图 第一步&#xff1a;awk对文件或管道的内容一次只处理一次&#xff0c;将获取到的这一行赋给内部变量$0。 第二步&#xff1a;这一行的内容按awk内部变量FS定义的分隔符&#xff0c;缺省为空格(包括tab制表符)分解成字段&#xff0c;每一段存储在从$1开…

后台接口向数据库录入汉字时乱码以及自动过滤文字经验总结

本人第一次写博客&#xff0c;而且是一个菜鸟&#xff0c;如果有什么不完善的地方请前辈们多多指教。 2017-06-01 21:56:05 因为公司功能的需求&#xff0c;需要写一个溯源信息的接口&#xff0c;下面的代码是前台的一个用户评论的界面。所谓溯源就是追溯源头&#xff0c;有点类…

PHP新手上路(六)

5.5 计数器 让我们在首页上加上一个计数器。这个例子已经被讲过多次了&#xff0c;但是还是有利于演示怎样读写文件以及创建自己的函数。counter.inc包含以下代码&#xff1a; <? /* || 一个简单的计数器 */ function get_hitcount($counter_file) { /…

如何教计算机认识手写数字(下)

本文详细介绍了如何利用C#语言编写KDTree结构加速KNN算法来处理手写字符的识别问题。本文由安晟提供。

linux下字符串处理工具二:awk( 二),awk脚本

awk脚本 awk脚本是一个可执行的文件&#xff0c;常习惯以.awk命名。 结构&#xff1a; $test.awk #!/bin/awk -f #脚本系统中awk的位置BEGIN{} #脚本主体之前&#xff0c;执行些什么。该行内的语句&#xff0c;可以只执行一次{} #脚本主体,此中的语句&am…

JavaScript正则表达式test的用法

<script LANGUAGE"javascript">function checkStr( s)...{var regu /abc/gi;var re new RegExp(regu);return re.test(s);}checkMobile(vabceeabc);</script>用途&#xff1a;检查输入的字符串是否含有abc,如果有返回true,否则返回false方法test(string…

如何利用C#开发“通讯录”小程序

本文介绍了数理系15级魏道鑫同学汇报的成果&#xff0c;利用C#开发的通讯录小程序。

Ubuntu 16.04 install NVDIA display driver

2019独角兽企业重金招聘Python工程师标准>>> 1. search and download the driver http://www.nvidia.cn/Download/ 2. vim /etc/modprobe.d/blacklist.conf append this lines to the file blacklist vga16fb blacklist nouveau blacklist rivafb blacklist rivatv …

C#Hello World

自己是做java开发的&#xff0c;但是有时候有些问题用java解决起来很不方便&#xff0c;比如调用windows系统的东西&#xff0c;所以要快速自学一下C#&#xff0c;快速解决一个问题。 下面是一个简单的控制台程序。 using System; //using 关键字的作用是导入命名空间 using Sy…

如何利用离散Hopfield神经网络进行高校科研能力评价(1)

如何利用离散Hopfield神经网络进行高校科研能力评价(1)代码部分

OpenDNS 不再向用户展示广告

OpenDNS是流行的免费域名解析服务提供商&#xff0c;它的收入一度主要来自广告&#xff0c;当用户输入的网址无法解析它会将用户重定向到广告页。在OpenDNS诞生前&#xff0c;ISP提供的域名解析是用户唯一的选择。但ISP的DNS服务称不上有多好&#xff0c;不怎么可靠。但如今&am…

winform配置文件的简单使用(转载)

1&#xff0e; 首先创建一个winform解决方案2&#xff0e; 与添加类文件相同的方法添加配置文件&#xff0c;比如&#xff1a;右击解决方案下的项目名称—>添加—>新建项—>选择 “应用程序配置文件”&#xff0c;.net默认文件名为app.config&#xff0c;点击确定 打开…

C#版及nodejs版的com端口监听程序

感受: 写监听程序的感受&#xff1a;原来有些事情并不是想象的那么难&#xff0c;难和简单就只在一个点上&#xff0c;一个点突破了&#xff0c;后面就豁然开朗了。所以有些问题&#xff0c;不能死闷&#xff0c;要先思考&#xff0c;然后查资料&#xff0c;然后问有经验的人…

C++各大有名库的介绍之C++标准库

C各大有名库的介绍之C标准库标准库中提供了C程序的基本设施。虽然C标准库随着C标准折腾了许多年&#xff0c;直到标准的出台才正式定型&#xff0c;但是在标准库的实现上却很令人欣慰得看到多种实现&#xff0c;并且已被实践证明为有工业级别强度的佳作。1、Dinkumware C Libra…

自己动手——实现 Dustjs 中间件

Dustjs是我个人比较喜欢的一个JS模版引擎&#xff0c;原因有两个&#xff0c;一是&#xff0c;同时支持客户端和服务端渲染&#xff0c;模版编译成JS后使用&#xff0c;性能好&#xff1b;二是&#xff0c;有大公司的支持&#xff0c;Linkedin有专门的Dustjs版本&#xff08;本…

如何利用离散Hopfield神经网络进行高校科研能力评价(2)

如何利用离散Hopfield神经网络进行高校科研能力评价&#xff0c;应用部分

yyyy-MM-dd HH:mm:ss和yyyy-MM-dd hh:mm:ss

做项目&#xff0c;需要24小时制式的时间&#xff0c;误用了yyyy-MM-dd hh:mm:ss&#xff0c;导致出现一个很难发现的bug&#xff0c;现记录下,方便以后查阅。 yyyy-MM-dd hh:mm:ss 12小时制 yyyy-MM-dd HH:mm:ss 24小时制