文章目录
-
- 中间件是什么
- 为什么使用中间件
- 主要中间件的分类
-
-
- 1. Hadoop
- 2. LVS
- 3. Linux-HA
- 4. 静态 站服务器
- 5. 动态应用服务器
-
- DNS、DHCP、Kerberos和Radius:云计算基础服务组件
-
-
-
- 1. DNS
- 2. DHCP
- 3. Kerberos
- 1)身份认证
- 2)权限管理
- 3)联邦和单点登录
- 4)外围系统认证集成
- 5)自适应风险评估
- 4. Radius
-
-
- 云计算管理工具简介
- OpenStack是什么li>
- CloudStack(CloudPlatform)是什么li>
- 谈谈Eucalyptus云端管理工具
-
-
-
- 1)云控制器(Cloud Controller,CLC)
- 2)面向用户的服务(User-Facing Services,UFS)
- 3)管理控制台
- 4)对象存储 关(Object Storage Gateway,OSG)
- 5)对象存储提供者(Object Storage Provider,OSP)
- 6)集群控制器(Cluster Controller,CC)
- 7)存储控制器(Storage Controller,SC)
- 8)计算节点控制器(Node Controller,NC)
-
-
- Oracle VM Manager简介
这一节我们主要来学习一下什么是中间件,为什么使用中间件和主要中间件的分类。
中间件是什么
中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和 络通讯。是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。
执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或 OS 环境。
中间件是介于操作系统和应用软件之间,为应用软件提供服务功能的软件,有消息中间件,交易中间件,应用服务器等。由于介于两种软件之间,所以,称为中间件。
为什么使用中间件
具体地说,中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。
中间件带给应用系统的,不只是开发的简便、开发周期的缩短,也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。
主要中间件的分类
1. Hadoop
当一个大的任务由一台机器在规定的时间内不能完成时,人们就要采用分布式计算,即很多台机器联合起来共同完成任务。换句话说,就是把大任务拆分成许多个小任务,然后再把这些小任务分配给多台计算机去完成。参与计算的多台计算机组成一个分布式系统,需要运行一系列的分布式基础算法。
Hadoop 就是一个分布式计算平台,用 Java 语言开发,包含 Common、MapReduce 和 HDFS 三个核心部件(HDFS 和 MapReduce 是最核心的两个部件)。其中:
- Common 为 Hadoop 的其他项目提供了一些常用工具,主要包括系统配置工具 Configuration、远程过程调用 RPC、序列化机制和 Hadoop 抽象文件系统等。
- MapReduce 是处理海量数据的计算模型。
- 而 HDFS 用于存储海量数据,它具备高度容错性,能在低成本的通用硬件机器上稳定运行。
Hadoop 实现了分布式计算中的基础算法(如一致算法、选举算法、故障检测、快照等),同时为用户提供了编程和命令接口。程序员调用这些函数能轻松写出分布式应用程序,我们都知道,如果一切从头开始,要完成一个分布式程序的编写是异常艰难的。
Hadoop 在海量非结构化数据处理方面能充分展示它的优势,如消费者购买行为分析、商品推荐、关键词检索、信贷风险评估等。
如图 1 所示,Hadoop 其实就是一个分布式计算平台,它“覆盖”在操作系统之上,向上提供函数调用(API)和命令接口,在水平方向完成分布式系统的基础算法。作为编程人员和用户,只要了解 API 和命令即可。
3. Linux-HA
也许有读者会问:“负载均衡器本身故障怎么办的,如果负载均衡器出现故障,那么整个系统(如 店)将会瘫痪。所以人们开发了各种集群软件,如 Linux-HA 和 Keepalive 等,而微软干脆就在 Windows 服务器版中集成故障转移集群软件。
集成故障转移集群软件的核心思想是,实时检测故障机器并及时让好的机器接管工作,对外提供高可用性。Linux-HA 意为 Linux 高可用性项目,此项目具体包含如下几个组件。
名称 | 作用 |
---|---|
Heartbeat | 负责维护集群中各节点的信息及它们之间的心跳通信。 |
Pacemaker | 集群资源管理器,是核心组件,客户端通过 Pacemaker 来配置、管理并监控整个集群。此组件的 区 站为 http://clusterlabs.org/。OpenStack 高可用性部署实例中一般都采用 Pacemaker 和 HAProxy。 |
Resource Agent | 为用于控制服务启停、监控服务状态的脚本集合,本地资源管理器(LRM)调用这些脚本来启动、停止、监控各种集群资源。 |
Cluster Glue | 包含一套函数库和工具,在集群栈中,除集群消息传输(由 Heartbeat 承担)、集群资源管理(由 Pacemaker 承担)和资源代理(由 Resource Agent 承担)功能外,其他功能都由 Cluster Glue 来完成。它包含的两个主要部分是 LRM 和 Stonith,前者是本地资源管理器,后者的任务是隔离故障机器。 |
通过心跳信 (Heartbeat)检测故障,一台好的计算机会不断向其他计算机发送心跳信 ,也会接收其他计算机发送过来的心跳信息。当在规定的时间内没有收到对方计算机的心跳信 时,就启动应急预案,进一步确认故障并准备接管那台计算机的任务。
例如,我们采用两台 LVS 计算机,并分别安装和配置 Linux-HA,一台 LVS 计算机作为工作机,另一台作为备份机,两台 LVS 计算机互相监督对方的运行状态。当工作机故障时,备份机接管负载均衡任务并 警。相反,当备份机出故障时,只 警,提醒技术员维修备份机。
两台LVS计算机同时出故障是比较糟糕的情况,不过这种情况发生的概率很小,除非机房断电或者遭到雷击。对于一些非常关键的应用,可以增加参与负载均衡的服务器数量来提高可靠性,如民航飞机上采用 5 台服务器。
4. 静态 站服务器
我们浏览一家公司的 站时,很可能就是跟那家公司服务器上的 Apache 程序打交道, 页浏览器与 Apache 成了标准的 C/S 模式,浏览器是客户端,而 Apache 是服务端。Apache 首先把主页对应的文件 index.html 发给我们,我们看到主页内容后,点击主页上的某个链接,它又把该链接对应的文件发给我们,过程如图 3 所示。
云计算管理工具简介
首先我们看看一个基于虚拟机的 IaaS 云端的形成过程。
虚拟机要运行在虚拟机软件里,而虚拟机软件运行在物理机上。一台物理机通过虚拟机软件可以虚拟出多个虚拟机,虚拟机里再安装 Windows 或者 Linux 操作系统及各种应用软件,然后用户通过远程桌面等方式连接到虚拟机并使用虚拟机中的应用软件。如果一个云中心只有一台物理机,那么只要一个虚拟机软件即可,到此一个最小的准云端就创建完成了。
接下来继续增加物理机,每台物理机上运行多个虚拟机,这样云端虚拟机的数量就增加了很多。但是问题来了,如何避免因为一些物理机故障导致部分云终端用户不能使用虚拟机解决这个问题,人们引入了集群技术,允许虚拟机在集群中的任何一台机器上运行,这样故障机器上的虚拟机就能“漂移”到其他机器上并继续运行。
但这样又产生了一个新的问题,那就是如何保存虚拟机本身(虚拟机就是对应宿主机上的若干文件)才能确保“漂移”动作既快速又正确地完成呢,人们又引入了中央存储技术,即把全部的虚拟机镜像文件保存在中央存储设备上,让集群里的物理机都能共享访问。这样,一个由多台物理机组成集群、由多个集群组成的云端雏形就形成了。
然后我们又会自然而然地想到其他问题:
如何管理云端众多的虚拟机p>
于是人们开发了云端管理工具,采用此工具可以很轻松地创建、删除、迁移、启动、关闭、冻结和备份虚拟机。
如何给多台虚拟机组建 络p>
为此,人们又发明了虚拟 卡、虚拟交换机、 络功能虚拟化和软件定义 络技术。
云端最核心的部分就是虚拟化软件、中央存储设备和虚拟机管理工具(有的人喜欢称云管理平台,甚至直接称云计算操作系统)。称其为“云计算操作系统”是有一定道理的,与计算机操作系统(如 Windows、Linux 等)类似,计算机操作系统的核心功能是管理进程,只有进程才能申请资源(CPU、内存、打印机等);而在云端,虚拟机是申请资源(计算、存储、 络等)的基本主体,管理虚拟机是云计算操作系统最核心的功能。但是云计算操作系统远没有计算机操作系统那么复杂,称其为操作系统有点夸大其词。
云管理工具分为 IaaS、PaaS 和 SaaS 3 种类别,SaaS 类别的云管理工具与 店差不多,主要是租户注册、自助、购买、结算等,与业务关联性大,所以目前没有统一的标准版产品。比如,针对一款大型可靠性软件系统的云化项目,SaaS 云管理软件包含两大部分:一是 SaaS 业务门户,二是 SaaS 管理门户,其结构分别如图 1 和图 2 所示。
PaaS 管理工具有红帽公司的 Openshift 和 Cloud Foundry 区的 CloudFoundry,两者都是开源的,在 https://financesonline.com/ 站上,Openshift 的得分要高于 CloudFoundry。
下面我们分四节介绍一下常用的云计算管理工具:
- OpenStack是什么li>
- CloudStack(CloudPlatform)是什么li>
- 谈谈Eucalyptus云端管理工具
- Oracle VM Manager简介
OpenStack是什么h1>
OpenStack 是当今最具影响力的云计算管理工具——通过命令或者基于 Web 的可视化控制面板来管理 IaaS 云端的资源池(服务器、存储和 络)。它最先由美国国家航空航天局(NASA)和 Rackspace 在 2010 年合作研发,现在参与的人员和组织汇集了来自 100 多个国家的超过 9500 名的个人和 850 多个世界上赫赫有名的企业,如 NASA、谷歌、惠普、Intel、IBM、微软等。
OpenStack 系统或其演变版本目前被广泛应用在各行各业,包括自建私有云、公共云、租赁私有云及公私混合云,用户包括思科、贝宝(Paypal)、英特尔、IBM、99Cloud、希捷等,具体名请参考 站 http://www.openstack.org/user-stories。
OpenStack 支持 KVM、Xen、Lvc、Docker 等虚拟机软件或容器,默认为 KVM。通过安装驱动,也支持 Hyper-V 和 VMware ESXi,不过有些功能暂时不支持,具体的虚拟机管理器支持矩阵参见 站 http://docs.openstack.org/developer/nova/support-matrix.html。
OpenStack 采用 Python 语言开发,遵循 Apache 开源协议,因此相比 CloudStack 来说,更轻量化,效率更高。
OpenStack 每半年发行一个新版本,截至发稿前最新版本是第十四版本 Newton,不同于其他软件的版本 采用数字编码,OpenStack 采用一个单词来描述不同的版本,其中单词首字母指明版本的新旧。比如目前的版本 Newton 就比之前的 Mitaka 要新,同时“N”在 26 个字母中排行第十四,所以称第十四版本。各个版本的发行时间表参考 站 https://releases.openstack.org/。
围绕 OpenStack 发展起来的企业很多,为客户提供 OpenStack 实施、培训、运维、定制等业务,之前企业总是或多或少地加入自己的一些封闭技术,从而导致 OpenStack 的互操作性受损。为此,2015 年 OpenStack 基金会在温哥华峰会上正式推出互操作性认证,通过认证的产品被贴上“OpenStack Powered”标识。
虽然第一批只有 14 家厂商经过认证测试,但这却是一个重要的里程碑事件,基金会已经拿出足够的诚意来解决问题,并且众多厂商也开始真正跟进。对用户而言,选择经过认证的云服务提供商,能够实现在不同 OpenStack 云计算之间的自由迁移。
OpenStack 生态系统已从“孵化/集成”模式转移到“大帐篷”模式,在此模式下,既保持了对规模较小的核心项目的关注,也积极鼓励在更广泛的主流生态环境中的自由创新,而以前的“孵化/集成”模式只是把孵化成功的项目集成到主流生态中。
“大帐篷”模式把 OpenStack 的组件进行分类,目前包括 6 个核心组件(Nova、Neutron、Swift、Cinder、Keystone、Glance)和 14 个可选组件,每个组件包含若干个服务,后续版本中组件分类及数量都可能会发生变化,如图 1 所示。
OpenStack 的组件众多,根据云端的实施过程,再结合图 2,我们来梳理一下各个组件的作用:云端要运行很多虚拟机,所以需要在很多服务器中安装并运行虚拟机软件(如 KVM、Xen 等),有的客户为了安全起见,愿意出高价直接租赁物理机(裸金属机器),所以要用 Ironic 组件来池化物理机,以便用户能远程使用。
这些运行了虚拟机软件的服务器和被池化的物理机统称为计算节点。为了让 Horizon 组件以可视化的 Web 页面来统一操纵计算节点上的虚拟机,需要在计算节点上安装 Nova 组件,Nova 组件还与其他组件打交道。为了让一台虚拟机能在集群内的任一计算节点上快速漂移,虚拟机对应的镜像文件必须存放在共享场所,到底存放在哪里,由 Glance 组件指定。
例如在图 4 中,由 Glance 指定存放在 Swift 组件内,在实际的实施案例中,也可以存放在 Ceph 中。虚拟机之间需要联 ,由 Neutron 组件负责。虚拟机里面可能还要使用块设备(如硬盘),这需要 Cinder 组件的配合;虚拟机里可能需要用到共享文件服务,由 Manila 组件提供服务。
云端的计算节点很多(如 1000 台),所以虚拟机就更多(如 10 万台),如果要给它们统一安装一个软件或配置某项参数,那么是不是需要手工一台一台操作呢,手工操作费时费力,而且容易出错,有了 Heat 组件,我们就可以轻松完成这个任务。
OpenStack 的各个组件都是对外暴露 REST API 接口,以便于其他程序调用,调用时都要进行身份验证和权限管理,这由 Keystone 组件完成。跟踪用户消耗的资源并计费的任务由 Ceilometer 组件完成(需要 Aodh 和 CloudKitty 组件的配合)。
对于 OpenStack 管理的 IaaS 云服务,有人想在上面部署 Hadoop 大数据分析系统怎么办 Sahala 组件可以帮上忙。各组件之间需要通过消息互相联络,所以 Zaqar 和 RabbitMQ 就派上用场了。另外,很多组件需要在数据库中保存配置数据,所以需要用到数据库管理系统(如 MySQL)。
OpenStack 组件的主要作用是充当“中间人”,它不履行具体的实际任务,而由各种第三方软件来完成,比如虚拟机软件由 KVM 承担, 站任务由 Apache 承担,虚拟 络任务由 iptables、DNSmasq、Linux vSwitch、Linux 桥承担或者统一由 OpenContrail 承担,结构化数据存储任务由 MySQL 或者 PostgreSQL 承担,中央存储任务由 Ceph 承担(也可采用其他产品)。当然,OpenStack 中也有实现具体功能的组件,比如 Swift 做中央存储,我们也可以选择相对发展多年并且被大量使用的第三方产品,如 Ceph。
一个云端往往包含成千上万台服务器,而且还可能分布在世界各地,分别服务符合延时半径范围内的用户。OpenStack 中的“地区”(Region)就是对应地理位置不同的分中心,如中国北京、美国纽约、英国等。
在同一个 Region,还可能包含成千上万台机器,如果用一套 OpenStack 中的组件来管理,势必会导致这些组件本身成为瓶颈(随着集群规模的不断增大,消息系统和数据库系统很可能最先成为瓶颈),所以人们又引入了 Cell 功能,以便增强 OpenStack 集群的扩展性,即把一个 Region 划分成多个 Cell,这些 Cell 组成树形结构,父 Cell 主要用于服务通信,它不包含计算节点,子 Cell 具有自己的消息队列、数据库和 Noval-cell 服务。
Nova cell 在 OpenStack 的 Newton 版本中将成为默认项,之前的版本是可选项。在创建虚拟机时,为了规定它能在哪些计算节点集上运行,人们又提出了两个概念,即“可用域”(Availability Zones,AZ)和“主机集”(Host Aggregates,HA),前者可以看成后者的一个特例。
“主机集”其实就是根据计算节点的某些属性对计算节点进行逻辑分组的方法,比如可以分成如下几个“主机集”:万兆 卡的机器、拥有两路 CPU 的机器、惠普机器、自组装的机器、A 机柜里的机器、由 UPS 供电的机器等。然后我们创建一台虚拟机,指明在上海云端分部的惠普机器上运行,这样只要全部的惠普机器不同时坏,那么虚拟机就能一直正常运行(但每一时刻只能在一台机器上运行,只有当运行的那台机器出故障时,才会“漂移”到其他惠普机器上继续运行)。
“可用域”是用户可见的,用户把自己的多个虚拟机分散到不同的“可用域”中,是为了降低所有虚拟机同时不可用的概率,而“主机集”是管理员可见的,目的是用来隔离虚拟机,从而降低一些特定虚拟机的运行行为对其他虚拟机产生的影响。Region、Cell(第 2 版本)、AZ、HA 的关系如图 5 所示。
从图 3 中可以看出,多个 Region 允许共享 Keystone 和 Horizon 服务,也可以完全独立。HA 可以跨 Cell,但是不能跨越 Region,一台机器可以同时属于多个 HA,因为 AZ 是 HA 的特例,所以一台机器允许同时属于 AZ 和 HA。当一个创建虚拟机的请求到达父 Cell 的 Nova-API 时,父 Cell 会通过 Nova-cell 向各个子孙 Nova-cell 广播请求,并一次性决定在哪个子孙 Cell 中的哪台计算节点上创建虚拟机。
最小系统具备基本的 IaaS 功能,能通过命令来进行管理,这一步只需安装 OpenStack 的 Keystone、Neutron、Nova 和 Glance 四个组件;此后再安装 Horizon 就成了小系统,这时可通过 Web 图形化界面来执行管理;继续安装 Swift 和 Cinder 就成了准系统,这时能给虚拟机附加磁盘块设备,并能满足大规模的存储需求;再加上计费组件 Ceilometer,就上升为一般系统,一般系统具备公有 IaaS 的功能。但是由一般系统跨到生产系统,需要完成的工作就特别多,其中性能和安全是两个不得不面对的棘手问题。
图 6 中标注的 Iptables(设立门卫)、Selinux 或 Apparmor(加固系统)和 Snort(巡逻)都是为了强化安全。性能和安全涉及的知识太多,这里不再展开讨论。图 7 取自 上,主要考量了安全当中的可用性,供大家参考。
CloudStack(CloudPlatform)是什么h1>
思杰(Citrix)收购 CloudStack 后让其开源,并捐献给 Apache 基金会(项目 站 http://cloudstack.apache.org/),让世界上许许多多的开源软件爱好者参与开发、测试和讨论。
当 区版趋于稳定时,思杰公司及时把它转化为服务收费版 CloudPlatform。2016 年 1 月思杰把 CloudPlatform 出售给了 Accelerite 公司,自己又重回 OpenStack 的怀抱,曾经离开时思杰痛陈 OpenStack 的数条罪状,至今让人记忆犹新。采用 CloudStack 或 CloudPlatform 管理的云端逻辑架构图如图 7 所示。
从图 7 可知,整个云端包含若干个 Region(地区,可以理解为地理位置上的一个城市、一个省份等),默认情况下只有一个 Region。每个 Region 包含多个 Zone(大致相当于数据中心,也允许一个实际的数据中心划分为多个 Zone),每个 Zone 又包含若干个 Pod(相当于机柜,一个 Pod 中的机器位于同一个子 中)和若干个二级存储,每个 Pod 又包含若干个 Cluster(集群),每个集群又包含若干台 Host(服务器)和若干主存储。
一个集群不能跨越多个 Pod。每个 Zone 的 Secondary Storage(二级存储)存放与该 Zone 相关的虚拟机模板、操作系统的 ISO 安装镜像文件和磁盘卷快照。
Cluster 中的 Primary Storage(主存储)存放虚拟机镜像文件,这些虚拟机可在集群中的任一台 Host 上运行,当一台 Host 发生故障时,其上的虚拟机将被转移到同一集群中的其他 Host 上,并一直保持运行状态,这叫作热迁移;相反,冷迁移要求先关闭虚拟机,然后再在其他计算机启动虚拟机,所以在冷迁移过程中,用户是无法使用虚拟机的。
CloudStack 或 CloudPlarform 安装在 Management Server(管理服务器)上,其能管理的虚拟机软件有:Xen、RedHat KVM、Citrix XenServer、VMware vSphere、Oracle VM(OVM)等,可以说绝大部分软件都支持。允许多台 Management Server 机器组成管理集群,当然也可以用一台,但是一台可靠性很差,会形成单点故障。
CloudStack 采用 Java 语言开发,采用 Tomcat 做应用服务器,采用 MySQL 开源数据库存储配置信息。CloudPlatform 自带了一个安装脚本,利用它安装云端管理工具比较方便,即通过“点菜(单)”方式。云计算管理工程师通过工作台式机或者笔记本、平板电脑使用 站浏览器打开管理服务器上的 Web 页面:http://:8080/client,即可登录管理页面。
关于 Apache CloudStack 中各种概念更详细的介绍,请参见其官方 站 http://docs.cloudstack.apache.org/en/latest/concepts.html。
CloudPlatform 能管理私有云、公共云和公私混合云,在生产环境中,建议采用 CloudPlatform,而不要采用 CloudStack。
谈谈Eucalyptus云端管理工具
桉树(Eucalyptus)云管理工具被慧与公司收购后改名为 Helion Eucalyptus,其继续开源,不过在 OpenStack 的竞争下,桉树发展渐行渐远,昔日风光已不在。
桉树是一个基于 Linux 的模块化的软件架构,在企业现有的 IT 基础架构中部署可扩展的高效私有云或混合云,属于本地 IaaS 云。为了隔离不同用户的 络流量及允许多个集群同属于一个局域 ,桉树提供了一种虚拟叠加 络技术。另外,桉树提供的 API 兼容亚马逊的 EC2、S3、IAM、ELB、EC2 资源自动伸缩和云监控服务,这些都便于人们使用桉树部署混合云。
桉树由若干个组件组成,这些组件之间的关系如图 8 所示。
从图 9 可以看出,云端由若干服务器池和一个外部存储组成,每个服务器池包含若干台服务器(称为计算节点)。服务器池可以是集群,也可以不是集群。
服务器池中的计算节点上安装 Oracle VM Server 虚拟软件(基于 Xen 虚拟化技术),然后运行若干个 dom。其中 dom0 为管理 dom,里面安装和运行 Oracle VM Agent,dom0 有权限访问硬件和驱动,并且负责与 OracleVM 管理器通信。其他 dom 统称为 domU,为用户使用的普通虚拟机,由 dom0 启动并管理。
客户端“自定义的应用程序”是指 Oracle Enterprise Manager 或者采用 Web Service API 编写的应用程序或脚本。
基于 Oracle VM Manager 的云计算解决方案中,支持虚拟机热迁移——在不关闭虚拟机的情况下,从一台服务器移动到同一个服务器池中的另一台服务器上继续运行。在迁移的过程中,虚拟机的状态为 Migrating(迁移)。
文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树容器编排(学习环境 k8s)安装kubectl8826 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!