开源的应用软件数不胜数,开源软件仓库 https://sourceforge.net/ 和 http://www.apache.org/index.html#projects-list 保存了大部分的开源软件。下面是一些跟云计算有关的比较出名的软件。
1)OpenSSH
用于安全远程登录的软件。在云端,常用它来建立服务器之间的信任关系。
2)Netfilter/Iptables
防火墙软件。在云端,常用它来建立服务器上的安全屏障。
3)Snort
入侵检查软件。如果防火墙是门卫,那么 Snort 就是巡逻队,配合蜜罐,Snort 效果更佳。
4)Postfix
开源邮件系统。配合其他一些反垃圾和病毒软件,可以搭建一个非常出色的邮件系统,快速部署脚本 iRedMail 能在几分钟内自动部署一个全功能的企业级邮件系统。
5)Squid
代理和反向代理软件 ,可同时用来做用户上网行为管理,官方网站为 http://www.squid-cache.org/。
6)Zabbix
是一个基于 Web 界面的提供分布式系统监视及网络监视功能的企业级开源解决方案,它能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制,让系统管理员快速定位和解决存在的各种问题。
7)Odoo
最初是一个 ERP 软件。现在几乎涵盖了企业的所有应用,具备数千个功能模块。采用它开发应用软件就像搭积木一样,直接安装需要的模块即可。
商业化的云计算组件有哪些?
在教程《一套完整的云计算产品需要解决哪些问题》中讲到,一套完整的云计算产品包含虚拟化平台、管理工具和交付三部分。注意,这里讨论的是构建云计算的组件,而不是云计算服务,云计算服务提供商需要采用云计算组件来构建云端。
目前商业的云计算组件不多,但云计算服务商却很多。本节对当下比较有影响的商业云计算组件做一个简单介绍,不过这些公司发布了很多组件,却很少讲明这些组件在整个云计算解决方案中处于什么地位、完成什么任务,所以要搞清楚一家企业的云计算组件并非易事。通信协议除 HTTP/HTTPS 外,各个公司都发布了自己的协议。
ⅤMware
VMware 由虚拟机起家,后来不断发展和完善云计算的管理平台和交付部分,如今已经推出了全套的云计算产品。
1. 虚拟化平台
VMware 公司的虚拟化技术做得最早,目前应用得也最广,虚拟化产品线丰富,覆盖计算机虚拟化、网络虚拟化、存储虚拟化。其中,计算机虚拟化产品包括桌面版(X86 平台和苹果电脑)和服务器版。计算机虚拟化是云计算产品的核心,桌面版有 Workstation、Fusion(苹果电脑),简化的桌面版 VMware Player Plus 对个人用户是免费的;服务器版有 EXSi,免费版 vSphere Hypervisor 是在 EXSi 的基础上简化而成的,可以直接安装在裸机上。
2. 管理工具
VMware 公司的云计算管理平台是 VMware vCenter 系列套件,其中 vCenter Server 是管理控制中心。VMware vCenter 管理私有云,而 VMware vCloud 套件用来管理公共云。
3. 交付部分
VMware 的远程桌面协议 PCoIP 是交付部分的核心,此协议基于 UDP,即使在低带宽网络环境下,也会有不俗的表现。在较高速的网络中,能传递高质量的屏幕画面。VMware 公司的客户端能同时兼容微软的 RDP 协议,客户端产品是 VMware Horizon Client。Horizon View Connection 是局域网内的交付网关,Horizon View Security 是因特网的入口网关,Horizon Client 只有通过这些网关,才能访问虚拟化平台上的桌面。
VMware 组合 EXSi、PCoIP、vCenter、View Client 核心组件及其他一些周边工具,推出一系列面向客户应用的解决方案套件,以便降低部署难度。这些套件包括公共云套件 VMware vCloud Suite、办公桌面虚拟化套件 Workspace Suite、混合云套件 VMware vRealize™Suite、快速混合云部署套件 VMware vCloud® Air™。
采用 VMware 云计算产品搭建的云计算中心架构复杂。
Citrix
Citrix(思杰)公司由远程交付 IT 资源的产品起家,后逐步发展云计算的其他产品线,如虚拟机、管理平台等。不过在激烈竞争的云端产品市场,Citrix 逐步迎难而退,2016 年年初把 CloudPlatform 出售给 Accelerite 公司,自己又重回 OpenStack 社区。Citrix 集中精力发展自己的优势产品——云服务交付,包括软件虚拟化和虚拟桌面。桌面虚拟化架构如图 1 所示。
图 1 XenDesktop 架构
1)Delivery Controller(交付控制器)
至少一个。控制器定义了一系列与虚拟化软件平台通信的服务,这些服务完成的任务是:分发应用程序和桌面、验证和管理用户访问、代理用户和其虚拟桌面及应用程序之间的连接、优化使用连接、负载平衡等。
2)StoreFront(存储前端)
StoreFront 验证用户身份,管理用户访问的桌面和应用程序,存储企业的应用程序库,以便让用户自助访问。它还跟踪用户的应用程序订阅、快捷方式名称和其他数据,以确保用户在多个设备上拥有一致的体验。
3)Director
专门提供给 IT 运维人员和前台服务团队使用的 Web 控制台,通过它可以集中监控 IT 环境、处理问题,以及为终端用户提供支持。
4)Studio
统一的管理控制台。
1. 虚拟化平台
XenServer 是早期由 Citrix 收购 Xen 后推出的虚拟机软件,开源,直接安装在裸机上,核心代码是 Linux 和 Xen。开源是其最大的亮点。
2. 管理工具
Citrix 官网上已经没有云计算管理工具的产品了。
3. 交付部分
云服务交付是 Citrix 的强项,其交付产品已存在十几年,应该说相当成熟和稳定了。交付中的通信协议有 ICA 和 HDX,属于 TCP 类型,HDX 是颇具优势的协议,在低带宽网络环境下表现也不俗。
交付中的客户端软件 Receiver 是免费的,而且能在目前绝大部分流行的硬件和操作系统上安装运行,如 X86、ARM 等硬件平台,Windows、Linux、Android、Chrome OS 等软件平台。
Citrix 把 XenServer、CloudPlatform、Receiver 打包并加上一些周边产品,推出一些面向应用的方案套件,如统一移动、应用和桌面交付套件 Citrix Workspace Suite、私有办公云套件 XenDesktop 等。其他交付部件还有交付控制器(Delivery Controller)、StoreFront。
相对于 VMware,Citrix 云计算产品成本相对低廉,这是其优势。另外,在企业协同工作方面,Citrix 也有一些不俗的产品,如在线会议系统 GoToMeeting、企业级在线协作应用 Podio、在线培训应用 GoToTraining、DIY 网络研讨会 GoToWebinar。
Microsoft
Microsoft(微软)远程桌面服务的架构图如图 2 所示。
图 2 微软远程桌面服务的架构图
1. 虚拟化平台
微软发展虚拟化软件比较晚,刚开始只是一个单机版 Virtual PC,虚拟机里只能安装 Windows 操作系统,后来看到虚拟化是大势所趋,其才在 Windows Server 2008 及以后的服务器操作系统中集成虚拟机 Hyper-V。
Hyper-V 作为一个角色由用户选择是否安装,而且管理单机的虚拟机极其简单方便,在 Windows Server 2012 版中,虚拟机软件已经相当稳定了,而且虚拟机里支持安装更多类型的操作系统,包括 Linux 操作系统。再后来,微软干脆推出了裸机版虚拟机 Microsoft Hyper-V Server 2012 R2。
微软的远程桌面会话主机(RDSH)是一大特色,这相当于多用户系统桌面,允许多个用户登录 Windows 系统,但是每个用户有自己的桌面,相对于虚拟机桌面来说,RDS 桌面消耗的计算资源更少,同一台计算机允许接入更多的用户。
最近一段时间,微软推出了两款容器产品:Windows Server Container 和 Hyper-V Container,后者综合了虚拟机的隔离效果和容器的轻量特征。
2. 管理平台
System Center 2016 是微软推出的最新的云计算管理平台。
3. 交付部分
RDP 通信协议起源于思杰的 ICA,后来由微软独立发展,由此推出 RDP 7 版、RemoteFX 和 RDP 8 版,在用户体验方面每个版本都有大幅度提高,在局域网内具有不错的表现。
客户端软件 mstsc.exe 一直随 Windows 操作系统自带,最近微软也发布能在 Android、Linux、Mac OS 上运行的客户端,但是用户体验远远不及 Windows 版。远程桌面代理(RD Connection Broker)对用户绘画进行负载均衡,远程桌面网关(RD Gateway)和远程桌面 Web 网关是交付入口点,但不是必需的。
微软的产品线极其丰富,几乎覆盖了全部的软件层面,从最底层的操作系统到最上层的应用软件,应有尽有。如果采用微软的产品搭建云计算环境,则架构最为简洁。
云端技术:组建云计算中心需要用到哪些技术?
我们已经知道,一个完整的云系统包含 5 个角色,其中云服务提供商和云服务消费者是最主要的角色,这两个角色缺少任意一个都不能成为“云”。由这两者组成的“云”,算是最基本的“云”,如本地私有云就是只有供需双方的基本云。
本节开始重点介绍组建云端的技术、云端与终端的通信协议,末后顺带简单介绍一下云终端设备。
云端、通信协议(加上网络)和云终端简称为云计算的“云”、“管”、“端”。在建设具体的云端时到底采用什么技术,这与终端用户的类型密切相关,终端用户的类型间接决定了云服务的模式,以及需要在云端运行的软件种类。
总之,要根据云服务消费者的需求来选择技术并组建相应的云端,需求不同,组建云端的技术也不尽相同。
云端是云计算的核心,必须紧贴用户需求,同时应具备水平伸缩性——在需要的时候可随时增加服务器,从而扩充云端计算能力;在不需要的时候可自动让多余的机器睡眠,以达到节能减排的目的。
前面讲过,软件是让 CPU 来完成某项任务的步骤,云端是软件运行的场所,因此可以这样说:云端是运行各种软件来完成相应任务的地方。
云端采用的技术与任务的大小有关,大型任务(如核爆模拟、天气预报)和小型任务(如四则运算计算器、文字编辑等)采用的技术明显不同,前者很难用一台物理计算机按时完成任务,所以需要联合多台计算机(称为集群)共同完成任务;而后者占用一台物理计算机就浪费了资源,所以需要对单台物理计算机进行分割(称为虚拟化)。
将单台物理计算机分割成多台虚拟机,每台虚拟机完成一个任务,这意味着一台物理计算机并行执行多个任务。如果一个任务需要由一台物理计算机来完成,那么就直接分配一台物理计算机给此任务,这样的任务就是中型任务。用图 1 所示的坐标可以很好地表示这种关系。
图 1 技术与任务的关系
对一台物理计算机做分割(虚拟出很多更小的计算机),然后给小型任务分配一台虚拟机,从而充分利用资源。虚拟机的大小是由 CPU 速度、内存大小、硬盘容量和每月的网络带宽定义的,当然虚拟机越大,租金就越高。
由一台物理计算机无法完成的大型任务,就要采用多台物理计算机集群在一起组成分布式系统。分布式系统还涉及任务划分与分配、多机协同工作的问题,后面会做进一步阐述。
由于在一篇文章中讲解会导致篇幅太长不利于读者学习,所以我们在后面教程中一一讲述组建云计算中心需要用到的技术:
- 云计算中心应该如何选址?
- 云计算中心如何存储数据?
- 虚拟化技术和容器技术
- VDI(远程桌面)是什么?
- 负载均衡(Load Balance)简介
- 服务器集群(cluster)简介
- 容错计算是什么?
- 家目录(主目录)漫游技术简介
- 云计算租户隔离:给小白的科普文
- 统一身份认证(IDS)是什么?云端如何应用统一身份认证?
- SOA(面向服务的架构)是什么?
- 微服务是什么?微服务的优缺点有哪些?
这些云端技术不一定在所有云端都会采用,一些小型云端(如家庭云、小企业办公云等)根本不需要这么复杂的技术。
云计算中心应该如何选址?
前面教程中我们讲到,延时是网络的一个关键属性,那么对于实时的强交互性软件来说,云端至终端的往返延时应该控制在 100 毫秒之内,否则就会大大降低操作云端软件的用户的体验。
比如编辑一份 Word 文档,输入的文字要过一会儿才能出现在屏幕上,这是谁都接受不了的。目前云化实时强交互性软件的途径有两条:
- 采用网页浏览器(可参考《什么是软件》教程)。
- 在人口密集区建立云端分部,从而降低网络延时。
降低延时的方法就是减少终端与云端的网络路径上的转发节点数目或者提高网络设备的转发速度,但我们不能直接修改广域网的网络,唯一能做的事情就是尽量把云端建在离用户最近的地方,这就是“让计算离用户最近”的原则。这里的“近”不是指地理位置上的近,而是指网络延时小。
比如美国的国际接入中心与中国的广州,地理位置上相距很远,但是网络延时却非常小,因为连通两地的是太平洋海底光缆,中途转发设备极少,几乎没有延时,所以两地相距很“近”。
在中国,较好的布局是:分别在北京、上海、广州、沈阳、南京、武汉、成都、西安人口密集区部署云端分部。这 8 个城市也是组成电信网的核心网部分,国际出口设在北京、上海和广州,所以如果云端要服务全球,最好的地方就是北京、上海、广州三个城市。图 1 所示是中国电信主干网络图。
图 1 中国电信主干网络图
对于一个服务全国的公共云端来说,一个不错的布局方案如下:
- 在北京、上海和广州三地建设存储云,专门存储租户数据,这三个存储云互为备份,以确保数据万无一失。
- 在省会城市分别建设一个中等规模的云端分部,这些云端分部的主要作用是计算,而不是保存数据,数据被保存到存储云。
- 在地级市建设小型云端支部,完成辖区内的计算任务。
- 如有必要,在县级市建设微型云端。
这些云端是各自独立的,没有从属关系,但是它们都与存储云建立联系。在租户登录时,会自动引导其进入最“近”的云端。比如,租户甲平时都在中山,自然是登录中山的云端,当他出差去北京时,就登录到北京的云端。公共云全国布局的示意图如图 2 所示。
图 2 公共云全国布局
这样,各个计算云与存储云之间的数据传输是在后台批量进行的,而计算云与终端之间是前台的、批量的或者实时的。对租户来说,实现了就近计算,从而可以大大降低网络延时。如果有国外租户,则可能还要在国外建立云端。
提醒:云端都应该规划成可伸缩性的——开始运行少量服务器,以后再根据租户数的增加不断增加服务器。
相比于“让计算离用户最近”的原则,目前有一个类似的概念,叫作“内容分发网络”,可以理解为“让内容离用户最近”,全称是 Content Delivery Network,简称为 CDN。用户就近访问网络内容(如网站、流媒体等)有两个好处:一是用户体验好,二是传输成本低。
如图 3 所示,为阿里云 CDN。除上面的“让计算离用户最近”和“让内容离用户最近”的布局原则外,还有“离能源丰富的地方最近”和“离寒冷的地方最近”的布局原则。云中心的能耗主要包括机器设备消耗的电力和温湿度控制设备消耗的电力,所以充足稳定的能源供应至关重要,同时尽量降低温湿控制设备的能耗,比如把云中心建在寒冷的地区(如南极洲),就不需要制冷设备了。
在传统的机房里,制冷设备的能耗会超过一半。最理想的建设云端的地区的特点有:寒冷、电力充裕、人口密集、无地质灾害、计算机网络设施发达,如图 4 所示。
图 3 阿里云CDN
图 4 著名云中心选址
云计算中心如何存储数据?分布式存储+外部存储+直接存储
前面讲过,云计算的精髓就是把有形的产品(如网络设备、服务器、存储设备、各种软件等)转化为服务产品,并通过网络让人们远距离在线使用。而计算资源主要是指服务器(CPU、内存)、存储和网络,存储一方面是虚拟内存的组成部分,另一方面也是软件、数据的存放场所,如图 1 所示。
图 1 存储
CPU 和内存通过主板紧密地捆绑在一起,二者利用主板上的高速并行总线进行通信,目前的技术还不能做到使它们分离,而且也没有这个必要。但是如果存储与 CPU 分离(不直接通过主板连在一起),就会有很多好处,比如可以共享存储、计算机可以无状态、便于计算资源横向伸缩等。
目前能使 CPU 与存储分离的技术很多,如 FC、FCoE、iSCSI、NFS、CIFS 等,前三个是磁盘块共享技术,后两个是文件共享技术,而且还出现了块共享的 SAN 产品和文件共享的 NAS 产品。
一个磁盘块等于整数个磁盘扇区,一个磁盘扇区能储存 512 个字节的数据(现在大容量硬盘是 4KB 扇区),而扇区是读写硬盘的最小单位。也就是说,一次不能从硬盘读写小于一个扇区的数据(512B 或 4KB)。直接读取磁盘块不需要操作系统参与,但是读取硬盘上的文件(如复制“我的简历.doc”到 U 盘上)必须要操作系统配合。根据存储与 CPU 分离的程度,存储可划分为如下 3 种类型。
1)外部存储
存储和 CPU 不在同一台计算机上,如 SAN 和 NAS 存储是单独的存储设备,它们通过以太网线或者光纤与计算机连接。专门的存储网络设备很贵,随着以太网速度越来越快,基于以太网的存储技术逐渐流行起来,如 iSCSI,10Gbit/s 的网卡能提供 1GB/s 的理论速度。
注意,这里的单位 Gbit/s 和 GB/s,前者表示每秒多少比特,一个比特就是一位二进制数字,要么是 0,要么是 1;后者表示每秒多少字节,一个字节等于 8 个比特。计算机里的一个字节先要加上一位校验位和一位停止位,然后再通过网卡传递出去,所以一个字节传递到网络上就占据了 10 个比特位。外部存储的示意图如图 2 所示。
图 2 外部存储
2)直接存储
存储直接接插到主板上,通过 PATA、SATA、mSATA、SAS、SCSI 或者 PCI-E 接口总线通信。传统的机械硬盘一般采用 PATA、SATA、SAS、SCSI 接口,相对于外部存储,直接接插主板的机械硬盘的速度优势越来越不明显,但是固态硬盘(如 mSATA、PCI-E)的速度优势还是比较明显的,尤其是 PCI-E 的固态硬盘,代表着业界顶尖的存储技术。直接存储的示意图如图 3 所示。
图 3 直接存储
3)分布式存储
通过分布式文件系统把各台计算机上的直接存储整合成一个大的存储,对参与存储的每台计算机来说,既有直接存储部分,也有外部存储部分,所以说分布式存储融合了前面两种存储方案。由于需要采用分布式文件系统来整合分散于各台计算机上的直接存储,使之成为单一的名字空间,所以所涉及的技术、概念和架构非常复杂,而且还要消耗额外的计算资源。
服务器存储局域网(Server SAN)逐渐被数据中心采用,而且发展很快,Ceph 分布式存储系统就属于 Server SAN,被很多云中心采用。目前的软件定义存储(SDS)概念就是分布式存储。分布式存储的示意图如图 4 所示。
图 4 分布式存储
存储的评价指标有容量、速度、每秒读写次数(IOPS)、可用性。“容量”比较容易理解,就是能存储的数据总量。
在实际项目中,我们更在乎有效容量,比如四块 1TB 的硬盘,加起来容量是 4TB,但是如果这四块硬盘做成镜像(RAID-1),那么有效容量就是 2TB;如果做成 RAID-5,有效容量就又不一样了。容量要求很容易满足,一般采用横向扩容即可。“速度”指标是指每秒传输的数据量,速度与带宽是同一个概念。
IOPS 是最重要的指标,定义为每秒钟能响应的读(或写)操作的次数,体现的是并发性和随机访问能力。IOPS 与磁盘的转速、平均寻道时间密切相关,磁盘的平均寻道时间为 4~12ms,对于转速 7200rpm 的磁盘,我们可以计算出其 IOPS 近似值:1000÷[1000÷(7200÷60)÷2+8]=83。对单块磁盘来说,“读/写”磁盘从微观层面上看是串行的。
比如 100 个人同时访问磁盘,磁盘是一个一个地响应用户的请求,但在宏观上又表现为并行性,即 100 个人在一秒钟内同时访问到了磁盘,给人一种并行的错觉。提高 IOPS 的方法有很多,比如采用更好的硬盘(如固态盘),或者增加磁盘的数目并让访问分散到各个硬盘,也可以采用更多的缓存(Cache),从而让经常访问的内容驻留在缓存中。
如图 5 所示,如何将主机 IOPS 需求转换成磁盘实际 IOPS 负载,并计算出需要的磁盘数呢?
图 5 主机 IOPS 需求与磁盘实际 IOPS 负载
首先我们要明白,主机的 IOPS 需求并不一定等于磁盘实际 IOPS 负载。比如对于 RAID-1,主机写一次,磁盘实际要写两次(镜像的两个磁盘各写一次);再比如 RAID-5 存储,主机写一次,磁盘要读两次、写两次,共 4 个 IOPS。主机写 1 次对应磁盘实际发生的读写次数称为写惩罚(Write Penalty),阵列类型不同,写惩罚也不同,具体参见图 5。RAID-5写操作示意图如图 6 所示。
图 6 RAID-5 写操作示意图
在图 6 中,主机向 RAID-5 存储写 1001,存储中实际发生的步骤如下。
1)读取原始数据 0110 并与新的数据 1001 做异或操作:0110 xor 1001=1111。
2)读取原有的校验位 0010,并用第一步算出的数值 1111 与原校验位再做一次异或操作:0010 xor 1111=1101。
3)然后将 1001 新数据写入到数据磁盘,将第二步中计算出来的新校验位 1101 写入校验盘。
现在假设主机的 IOPS 需求是 x,读/写比率为 2:1,存储为 RAID-5,那么可以算出磁盘实际的 IOPS 负载 y:
例如 x=360,则计算得出 y=720。假设一个 7200rpm 的 SATA II 硬盘的 IOPS 按 90 算,那么需要个磁盘,8 个磁盘做成 7+1 RAID-5。在上述公式中,“”表示每秒磁盘的读次数,“读”不存在惩罚,也就是说,主机的一次读对应磁盘的一次读。
存储的“可用性”指标关乎数据的安全性,是指保存在存储设备上的数据不会丢失的概率。由于磁盘故障而导致用户数据丢失,是一件非常糟糕的事情。通常用几个“9”来衡量可用性,比如 3 个“9”的可用性,意思是一年之中 99.9% 的时间内数据不会丢失。
提高可用性的方法也有很多,比如购买更稳定可靠的磁盘、做成多路镜像、采用不间断电源供电、提高备份的频率,甚至是建立多个异地灾备中心,乃至部署双活中心等。对于当前主流的硬盘产品,我们总结如下,如下表所示。
容量 | 带宽 | IOPS | 可用性 | |
---|---|---|---|---|
5400转PATA硬盘 | 128GB~2TB | 1Gbit/s | 30~50 | 如果损坏,还可以恢复大部分数据 |
7200转SATA硬盘 | 250GB~3TB | 3Gbit/s | 75~100 | |
10000转SATA硬盘 | 300GB~800GB | 3或6Gbit/s | 125~150 | |
10000转SAS硬盘 | 100GB~600GB | 140 | ||
15000转SAS硬盘 | 100GB~300GB | 3~12Gbit/s | 175~219 | |
SATA SSD | 8GB~1TB | 3Gbit/s | 400~20000 | 如果损坏,则整块硬盘上的数据全部丢失 |
SATA SSD | 8GB~1TB | 6Gbit/s | 60000~120000 | |
mSATASSD | 80GB~1GB | 4~8Gbits | 400~20000 | |
PCI-E SSD | 60GB~2TB | >8Gbit/s | 12万~1千万 |
注意,表 1 中的带宽单位,Gbit/s 是每秒 G 比特位,MB 是每秒多少兆的字节,一字节等于 8 比特。在带宽的计算中,有经验公式:1B≈10bit,加上了校验位和停止位。比如你家里申请了 4 兆的宽带上网,那么在网络通畅的情况下,下载文件的速度约等于 400KB,即 400KB×10=4MB。
在云端,往往设计两个层次的存储:一个是物理机器访问的存储,一个是虚拟机访问的存储。
转载于:http://c.biancheng.net/cloud_computing/