* [3. Linux-HA](#3_LinuxHA_68)
		* [4. 静态网站服务器](#4__87)
		* [5. 动态应用服务器](#5__107)

这一节我们主要来学习一下什么是中间件,为什么使用中间件和主要中间件的分类。

中间件是什么

中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。

执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或 OS 环境。

中间件是介于操作系统和应用软件之间,为应用软件提供服务功能的软件,有消息中间件,交易中间件,应用服务器等。由于介于两种软件之间,所以,称为中间件。

为什么使用中间件

具体地说,中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。

中间件带给应用系统的,不只是开发的简便、开发周期的缩短,也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。

主要中间件的分类

1. Hadoop

当一个大的任务由一台机器在规定的时间内不能完成时,人们就要采用分布式计算,即很多台机器联合起来共同完成任务。换句话说,就是把大任务拆分成许多个小任务,然后再把这些小任务分配给多台计算机去完成。参与计算的多台计算机组成一个分布式系统,需要运行一系列的分布式基础算法。

Hadoop 就是一个分布式计算平台,用 Java 语言开发,包含 Common、MapReduce 和 HDFS 三个核心部件(HDFS 和 MapReduce 是最核心的两个部件)。其中:

  • Common 为 Hadoop 的其他项目提供了一些常用工具,主要包括系统配置工具 Configuration、远程过程调用 RPC、序列化机制和 Hadoop 抽象文件系统等。
  • MapReduce 是处理海量数据的计算模型。
  • 而 HDFS 用于存储海量数据,它具备高度容错性,能在低成本的通用硬件机器上稳定运行。

Hadoop 实现了分布式计算中的基础算法(如一致算法、选举算法、故障检测、快照等),同时为用户提供了编程和命令接口。程序员调用这些函数能轻松写出分布式应用程序,我们都知道,如果一切从头开始,要完成一个分布式程序的编写是异常艰难的。

Hadoop 在海量非结构化数据处理方面能充分展示它的优势,如消费者购买行为分析、商品推荐、关键词检索、信贷风险评估等。

如图 1 所示,Hadoop 其实就是一个分布式计算平台,它“覆盖”在操作系统之上,向上提供函数调用(API)和命令接口,在水平方向完成分布式系统的基础算法。作为编程人员和用户,只要了解 API 和命令即可。

Hadoop
图 1 Hadoop

基于 Hadoop 平台衍生出来的开源项目主要有 Yarn、HBase、Hive、ZooKeeper、Avro、Sqoop、Mahout、Crossbow 等。

以 Hadoop 为基础的生态目前已经成为大数据的标准方案,被广泛用于金融、市场、电信、交通等行业的海量数据分析,在即将到来的大数据时代,它将会发挥更大的作用。

在中国,很多行业(如银行、电信、移动、电力、石油、交通等)沉淀了大量的业务数据,对这些海量数据进行挖掘和分析,将会带来巨大的价值。

用 Hadoop 构建的应用实例对于计算资源的消耗具备两个明显的特征:

  • 资源需求大:表明 Hadoop 需要大量的存储、计算和网络带宽。
  • 资源需求具备季节性:表明除存储需求是经常性占用外,在运行 Mapreduce 时才需要大量的计算和网络资源,而分析大量数据的工作并不是经常性的——称为季节性

因此,云计算是大数据天生的计算资源供应途径,云计算的资源弹性很好地满足了大数据的季节性计算资源需求。也就是说,大数据是云计算经典的应用案例。当然,也可以按照大数据对计算资源的波峰需求静态配给计算资源,但是这种方案会造成资源的巨大浪费。

2. LVS

LVS 是 Linux Virtual Server 的首字母缩写,意为 Linux 虚拟服务器,即把许多台物理 Linux 计算机逻辑上整合成一台超级计算机,对用户来说感觉只有一台计算能力很强的服务器,如图 2 所示。

LVS 就是一个由软件实现的负载均衡器,工作在网络 OSI 的第四层(应用层),是中国人章嵩开发的,代码已经并入了 Linux 内核。利用它,再加上一台廉价的计算机,就能构建一台企业级的负载均衡器。而那些外国大公司的负载均衡器,售价都要十几万元,甚至几十万元,便宜的也要几万元,LVS 出来后,这些产品都不得不降价。

负载均衡器的作用就是把任务分配给最合适的服务器。比如一个大型购物网店,有 100 台同样配置的服务器在运行,如果某一时刻有 10 万用户在线购物,那么通过负载均衡器,每台服务器差不多承担 1000 个在线购物用户。

LVS 的官网网站是 http://www.linuxvirtualserver.org。另外,两个较为流行的第七层负载均衡器是 Nginx 和 HAProxy,针对应用做均衡,所以能适应的负载种类没有 LVS 多。

LVS原理图
图 2 LVS原理图

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 所示。

访问静态网页的过程
图 3 访问静态网页的过程

配合 PHP 引擎,Apache 也支持 PHP 动态网页。过程为:

1)当 Apache 收到用户要浏览的 PHP 文件后,把这个 PHP 文件发给 PHP 执行引擎。

2)PHP 执行引擎执行该 PHP 文件,产生一个临时的静态网页文件并发回给 Apache。

3)最后 Apache 把这个临时的静态网页文件发给用户。

采用 Perl、Python 和 Ruby 脚本语言编写的动态网页,其工作过程与 PHP 类似。

Apache 是最流行的开源网站服务器,在世界排名前 100 万的网站中,有 60.6% 的网站采用 Apache;在排名前 1000 的大型网站中,Apache 占到了 34.5%,而 Ngnix 占到了 34.9%,略胜于 Apache。

5. 动态应用服务器

开源的动态应用服务器有 JBoss、Tomcat、Geronimo、JOnAS,关于这些项目更详细的介绍,请参考相应的官方网站。

DNS、DHCP、Kerberos和Radius:云计算基础服务组件

基础服务组件包括 DNS、DHCP、用户管理、身份鉴别、权限管理、事后审计、域控等。

1. DNS

DNS 是一个倒树形结构的分布式数据库,里面存储的信息主要有 IP 地址到域名的映射记录、域名到 IP 地址的映射记录、邮件路由记录等。Bind 就是用于实现这个数据库并且允许人们通过域名查询 IP、通过 IP 查询域名或者查询邮件服务器的信息等,我们在配置计算机网卡参数时要指定多个 DNS 服务器 IP 地址。

在中国,这些 DNS 服务器大部分都在电信机房,如果不设置或者 IP 地址设置错误,则计算机无法上网。不过,建议大家使用谷歌提供的 DNS 服务器,IP 地址是 8.8.8.8 和 8.8.4.4,速度快又方便记忆。

BIND(Berkeley Internet Name Domain)是一款开源的 DNS 服务器软件,是目前互联网上使用最广泛的 DNS 服务器软件,能在各种流行的操作系统上运行。现由互联网系统协会负责开发与维护,可从该组织的官方网站 http://www.isc.org/ 下载源代码,然后编译安装,目前稳定版本是 9.11.0。

2. DHCP

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)允许一台计算机通过 DHCP 服务器自动获取网络配置参数,如网卡的 IP 地址、网关、掩码和主机名字等,这样只要启动计算机就能上网,而不用手工去配置计算机的网络参数。

DHCP 服务器的第二个功能是定义一些与自动安装操作系统有关的参数,比如一台计算机设置从网卡启动,只要 DHCP 服务器配置了 PXE 启动有关的参数,那么用户的计算机就能自动根据配置参数来启动或者安装操作系统,而不管原来有没有安装操作系统。这一点在可伸缩云端和零存储云终端的环境下非常有用,服务器随时加入随时启用,云终端启动就自动下载统一的操作系统内核并运行统一的登录程序。

dhcp3-server 和 isc-dhcp-server 都是目前比较流行的开源 DHCP 软件项目,前者已经被广泛使用;后者发展迅速,操作系统 Ubuntu12.04 版本开始使用它了。isc-dhcp-server 也是由互联网系统协会负责开发与维护的,可从该组织的官方网站 http://www.isc.org/ 下载源代码,然后编译安装,目前稳定版本是 4.3.5。

3. Kerberos

Kerberos 这一名词来源于希腊神话“三个头的狗——地狱之门守护者”。但在 IT 领域,Kerberos 是指一种计算机网络上的身份认证协议,主要用来在非安全的计算机网络中,对个人通信以安全的手段进行身份认证。

Kerberos 又指麻省理工学院为这个协议开发的一套计算机软件(参见官方网站 http://web.mit.edu/kerberos/),软件设计上采用客户机/服务器结构,并且能够进行相互认证,即客户端和服务器端均可对对方进行身份认证,可以用于防止窃听、防止重放攻击、保护数据完整性等场合,是一种应用对称密钥机制进行密钥管理的系统。Kerberos 的扩展产品也使用公开密钥加密方法进行认证。

当有 N 个人使用该系统时,为确保在任意两个人之间进行秘密对话,系统至少保存有其与每个人的共享密钥,所需的最少会话密钥数为 N 个。Kerberos 身份认证流程如图 1 所示。

如果想进一步了解 Kerberos 的原理,请在网上搜索“Kerberos 原理对话”,其以四幕话剧的形式来阐述 Kerberos 的原理,非常经典。

Kerberos 可用来部署单点登录环境——只要记住一个密码就能登录到任何一个应用,类似购买景点通票。微软的 AD 域就采用了 Kerberos。另外,图 2 所示是笔者为国内一家大型企业部署的单点登录草图,实现了企业内部上千台 Linux 服务器的单点登录。

 Kerberos 身份认证流程
图 1 Kerberos 身份认证流程

某大型企业部署的单点登录草图
图 2 某大型企业部署的单点登录草图

另一套采用 Kerberos 实现身份认证和权限管理的开源软件是 OpenAM/OpenDJ/OpenIDM,由 ForgeRock 公司开发和维护,可从其官方网站 https://forgerock.org/downloads/ 下载软件源代码。

OpenAM 提供集中认证、授权、单点登录,以及与其他单位建立联邦治理的全面解决方案,它是完全开源的,其前身是 Sun 公司的 OpenSSO。OpenAM 具有高度可扩展的、模块化的、易于部署的架构,具体包括如下内容。

1)身份认证

允许通过使用者的周边信息实现动态的身份识别,使用者的周边信息包括地理位置、时区、IP地址、接入设备、一天的特定时点等,当然也支持密码认证。身份认证模块相当于门卫,控制哪些人可以进入,哪些人不可以进入,至于进去后能做什么事情,它不会加以限制。

2)权限管理

根据事先定义好的权限和策略方案来控制用户登录后的行为,即允许他能做什么,不能做什么。

3)联邦和单点登录

每个用户只需一个账户和密码,就可以访问众多的应用系统和网络资源。想必大多数人都有过这样的痛苦经历:要记住众多的用户名和密码,以便访问许多系统,如邮件系统、工作网站、论坛、微博等,单点登录彻底解决了这个问题。

4)外围系统认证集成

允许集成认证目前流行的社交网站,如推特、脸谱、微博等。

5)自适应风险评估

根据登录用户的操作行为来评估其动机,如果怀疑其动机不纯,那么自动提升身份级别鉴别,要求提供额外的身份信息,以便进一步确认其真实身份。

OpenDJ 是一款遵循 LDAPv3 协议的目录服务器,采用 Java 语言开发,完全开源。它的前身是太阳微系统公司的 OpenDS 项目,现在由 ForgeRock 公司接手。用 OpenDJ 可以搭建高性能、高可用性和高安全性的企业级目录服务系统,处理上千万条数据记录,响应时间均在毫秒级以内。

OpenDJ 允许多主/复制部署(Multi-Master),数据可以集中式存储,也可分布式存放,这一点要优于另一个目录服务开源项目——OpenLDAP。另外,OpenDJ 消耗很少的计算机资源(CPU、内存等),由于是纯 Java 开发,所以 OpenDJ 可以在任何平台上运行。

利用 OpenIDM,企业可以轻松集中管理用户信息,包括用户账号和权限管理,适合在企业级、云端和移动社交网络使用。

另外,耶鲁大学开发的 CAS 项目也是非常有名的认证系统,官方网站为 https://www.apereo.org/projects/cas/

4. Radius

Radius 是指局域网接入认证,用于解决一台计算机需要认证才能接入和使用局域网的问题。比如一个公司外的人带了笔记本电脑进来,他找到一根网线插入笔记本电脑,如果他能使用公司内部的局域网(不管是自动分配 IP 还是手工配置网卡参数),那么这时公司内部的很多资源就面临危险,因为一个恶意的人就可以做网络窥探、运行额外的 DHCP 使网络紊乱、广播病毒、端口扫描、消耗网络带宽等。

有了局域网接入认证系统后,只有合法的设备(通常捆绑了网卡的 Mac 地址)才能接入局域网,没有事先登记的设备被拒绝接入,即使配好了网卡参数。

FreeRadius 是一款开源的实现局域网接入认证的软件,可从网站 http://freeradius.org/ 下载源代码,目前稳定的版本是 3.0.12。具体的认证示意图如图 3 所示。

FreeRadius认证过程
图 3 FreeRadius 认证过程

云计算管理工具简介

首先我们看看一个基于虚拟机的 IaaS 云端的形成过程。

虚拟机要运行在虚拟机软件里,而虚拟机软件运行在物理机上。一台物理机通过虚拟机软件可以虚拟出多个虚拟机,虚拟机里再安装 Windows 或者 Linux 操作系统及各种应用软件,然后用户通过远程桌面等方式连接到虚拟机并使用虚拟机中的应用软件。如果一个云中心只有一台物理机,那么只要一个虚拟机软件即可,到此一个最小的准云端就创建完成了。

接下来继续增加物理机,每台物理机上运行多个虚拟机,这样云端虚拟机的数量就增加了很多。但是问题来了,如何避免因为一些物理机故障导致部分云终端用户不能使用虚拟机?为了解决这个问题,人们引入了集群技术,允许虚拟机在集群中的任何一台机器上运行,这样故障机器上的虚拟机就能“漂移”到其他机器上并继续运行。

但这样又产生了一个新的问题,那就是如何保存虚拟机本身(虚拟机就是对应宿主机上的若干文件)才能确保“漂移”动作既快速又正确地完成呢?对此,人们又引入了中央存储技术,即把全部的虚拟机镜像文件保存在中央存储设备上,让集群里的物理机都能共享访问。这样,一个由多台物理机组成集群、由多个集群组成的云端雏形就形成了。

然后我们又会自然而然地想到其他问题:

如何管理云端众多的虚拟机?

于是人们开发了云端管理工具,采用此工具可以很轻松地创建、删除、迁移、启动、关闭、冻结和备份虚拟机。

如何给多台虚拟机组建网络?

为此,人们又发明了虚拟网卡、虚拟交换机、网络功能虚拟化和软件定义网络技术。

云端最核心的部分就是虚拟化软件、中央存储设备和虚拟机管理工具(有的人喜欢称云管理平台,甚至直接称云计算操作系统)。称其为“云计算操作系统”是有一定道理的,与计算机操作系统(如 Windows、Linux 等)类似,计算机操作系统的核心功能是管理进程,只有进程才能申请资源(CPU、内存、打印机等);而在云端,虚拟机是申请资源(计算、存储、网络等)的基本主体,管理虚拟机是云计算操作系统最核心的功能。但是云计算操作系统远没有计算机操作系统那么复杂,称其为操作系统有点夸大其词。

云管理工具分为 IaaS、PaaS 和 SaaS 3 种类别,SaaS 类别的云管理工具与网店差不多,主要是租户注册、自助、购买、结算等,与业务关联性大,所以目前没有统一的标准版产品。比如,针对一款大型可靠性软件系统的云化项目,SaaS 云管理软件包含两大部分:一是 SaaS 业务门户,二是 SaaS 管理门户,其结构分别如图 1 和图 2 所示。

SaaS业务门户组成
图 1 SaaS 业务门户组成

SaaS管理门户组成
图 2 SaaS 管理门户组成

尽管框架类似,但由于 SaaS 云计算与具体的应用软件紧密相关,所以截至目前,还没有出现通用的开源或者商业化的 SaaS 云计算管理工具。目前的 SaaS 云计算提供商都是自己开发自己使用。

PaaS 管理工具有红帽公司的 Openshift 和 Cloud Foundry 社区的 CloudFoundry,两者都是开源的,在 https://financesonline.com/ 网站上,Openshift 的得分要高于 CloudFoundry。

下面我们分四节介绍一下常用的云计算管理工具:

OpenStack是什么?

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 所示。

 “大帐篷”模式下的组件
图 1 “大帐篷”模式下的组件

表 1 列出了 Newton 版本中各个组件的功能介绍。

分类组件名称功能
核心组件Nova管理虚拟机的整个生命周期:创建、运行、挂起、调度、关闭、销毁等。这是真正的执行部件。接受 DashBoard 发來的命令并完成具体的动作。但是 Nova 不是虛拟机软件,所以还需要虚拟机软件(如 KVM、Xen、Hyper-v 等)配合
Neutron管理网络资源,提供/一组应用编程接口(API),用户可以调用它们来定义网络(如 VLAN ),并把定义好的网络附加给租户。Networking 是一个插件式结构,支持当前主流的网络设备和最新网铬技术
SwiftNoSQL 数据库,类似 HBase,为虚拟机提供非结构化数据存储,它把相同的数据存储在多台计箅机上,以确保数据不会丢失。用户可通过 RESTful 和 HTTP 类型的 API 来和它通信。这是实际的存储项目,类似 Ceph,不过在 OpcnStack 具体实施时,人们更愿意采用 Ceph。
Cinder管理块设备,为虚拟机管理 SAN 设备源。但是它本身不是块设备源, 需要一个存储后端来提供实际的块设备源(如 iSCSI、FC等)。Cinder 相当于一个管家,当虚拟机需要块设备时,询问管家去哪里获取具体的块设备。它也是插件式的,安装在具体的 SAN 设备里。Cinder 支持的存储后端品牌参见 https://wiki.openstack.org/wiki/CinderSupportMatrix,驱动参见 https://github.com/openstack/cinder/tree/master/cinder/volume/drivers。
Keystone为其他服务提供身份验证、权限管理、令牌管理及服务名册管理。要使用云计算的所有用户事先需要在 Keystone 中建立账号和密码,并定义权限(注意:这里的“用户”不是指虚拟机里的系统账户,如 Windows 7 中的 Administrator )。另外,OpenStack 服务(如 Nova、Neutron、Swift、Cinder 等)也要在里面注册,并且登记具体的 API,Keystone 本身也要注册和登记 API
Glance存取虚拟机磁盘镜像文件,Compute 服务在启动虚拟机时需要从这里获取镜像文件。这个组件不同于上面的 Swift 和 Cinder,这两者提供的 存储是在虚拟机里使用的
可选组件Horizon提供了一个网页界面,用户登录后可以做这些操作:管理虚拟机、配置权限、分配 IP 地址、创建租户和用户等。本质上就是通过图形化的 操作界面控制其他服务(如 Compute、Networking 等)。当然,如果你熟悉命令,也可以直接采用命令来完成相应的任务
Heat如果要在成千上万个虚拟机里安装和配置同一个软件,该怎么办?采用 Orchestrates 是一个不错的主意,它向每个虚拟机里注人一个名叫 heat-cfntools 的客户端工具,然后就能同时操作很多虚拟机
Sahana使用户能够在 OpenStack 平台上(利用虚拟机)一键式创建和管理 Hadoop 集群,实现类似 AWS 的 EMR(Amazon Elastic MapReduce Service)功能。用户只需要提供简单的配置参数和模板,如版本信息(CDH 版本)、集群拓扑(几个 Slave、几个 Datanode)、节点配置信息(CPU、内存)等,Sahara 服务就能够在几分钟内根据提供的模板快速 部署 Hadoop、Spark 及 Storm 集群。Sahana 是一个大数据分析项目
Ironic把裸金属机器(与虚拟机相对)加人到资源池中
ZaqarZaqar 为 Web 和移动开发者提供多租户云消息和通知服务,开发人员可以通过 REST API 在其云应用的不同组件中通过不同的通信模式(如 生产者/消费者或发布者/订阅者)来传递消息
Ceilometer结合 Aodh、CloudKitty 两个组件,完成计费任务,如结算、消耗的 资源统计、性能监控等。OpenStack 之所以能管理公共云,一是因为 Ceilometer 的存在,二是因为引人了租户的概念
Barbican是 OpenStack 的密钥管理组件,其他组件可以调用 Barbican 对外暴露的 REST API 来存储和访问密钥
Manila为虚拟机提供文件共享服务,不过需要存储后端的配合
其他组件:Congress(策略服务)、Designate(DNS 服务)、Freezer(备份及还原服务)、Magnum(容器支持)、Mistral(工作流服务)、Monasca(监控服务)、Searchlight(索引和搜索)、Senlin(集群服务)、Solum(APP集成开发平台)、Tacker(网络功能 虚拟化)、Trove(数据库服务)

各个组件的关系图如图 2 所示。

OpenStack组件关系图
图 2 OpenStack 组件关系图

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。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数大数据工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
img

又不知道该从何学起的朋友。**
[外链图片转存中…(img-HURZSL7D-1712870453731)]
[外链图片转存中…(img-ZioJKziP-1712870453731)]
[外链图片转存中…(img-E8aLxQ9g-1712870453731)]
[外链图片转存中…(img-Cz1b40Uu-1712870453732)]
[外链图片转存中…(img-w8GVkzup-1712870453732)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
[外链图片转存中…(img-qlQ3aiHs-1712870453732)]

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐