乐趣区

关于java:云架构和openstack的思考

最近在负责公司外部公有云的建设,始终在思考怎么搞云计算,怎么才可能把云架构设计得好一些。

本文章次要内容:

  1. 行业生态
  2. 从需要角度看云
  3. 云计算概述
  4. 云建设的关键问题
  5. 公有云架构布局

一. 行业生态

计算机云通过多年的倒退,由一开始的概念,缓缓倒退成熟并可能推向市场,提供多种多样的服务,市场空间十分之大。

在云的倒退过程中,亚马逊通过多年的深耕积攒,倒退成为了云行业的标杆企业,甚至是建设了云解决方案的规范。

只有是存在商业价值以及商业利益的存在,就会有更多的公司、人参加进来,google、IBM、思科、Oracle、HP 惠普、Intel、华为等 IT 巨头先后参加进来,

在软件和硬件方面提供专门的面向企业的解决方案,纷纷打着云计算、大数据、智能等概念来吸引客户,拓展市场。

另外一方面,基于大数据,存储,云服务等也先后呈现一些翻新企业,譬如 dropbox、rackspace,国内也产生相干的守业公司,譬如七牛、青云、ustack 等。

依照开源的习惯来说,只有是有一套成熟的商业软件,就会有一套开源的解决方案(譬如 windows 之于 linux,google 的 mapreduce、gfs、大表之于 hadoop 等等),

在云畛域,也存在相应的开源解决方案,在开源的云解决方案里有若干公司将解决方案进行开源,而最为驰名的有 openstack 和 cloudstack。对于开源行业的领导者 redhat 来说,

redhat 在企业操作系统的市场曾经做的很好,从 RHEL 零碎的各个版本来都是提供操作系统的稳固版本,在企业级零碎市场有相当高的市场份额。redhat 特地器重云的倒退,并将云操作系统作为将来 10 年的倒退战略重点。

并先后收买了 openstack,以及 ceph 等存储企业,壮大本人在云畛域的影响力。

随着云畛域的倒退,逐步造成了面向企业提供硬件和软件产品产品提供商,面向企业提供服务的服务提供商,面向市场守业企业提供根底服务的服务企业,面向集体提供业务服务的一系列行业生态。

二. 从需要角度看云

需要是什么(what people need)?

咱们所说的 people,即人或者公司实体。在我的思考中我将 people 分为。

从企业角度看

1). 小型企业

小型企业因为自身技术储备不多,人员不足,没有独立的 IT 部门,然而在构建本人的 IT 零碎过程中须要购买各种产品和服务,包含服务器、网络、CDN 等等,而要实现这样的工作,须要投入大量的人力和财力。

通过购买云服务能够更加方便快捷,简略的实现零碎的搭建。

2). 中型企业

中型企业有肯定的规模,须要在信息化、治理方面有所重视,个别外部都设立 IT 部门,然而和小型企业一样,IT 部门大多数都是为了解决本身需要很难可能有一个残缺的解决方案。这样在服务器、网络、CDN、企业管理软件等等的需要还是比拟大的。

3). 大型企业

大型企业人数规模在万人以上,特地是高新企业,都有一个实力不错的 IT 撑持部门,通过部门就能够欠缺对企业外部信息化建设

从企业性质范畴来看,我将企业分为

1). 传统行业企业

传统行业大多数是以服务业、制造业、生产性企业为主,在 IT 信息化方面绝对比较落后,重资产行业

2). 互联网企业

互联网行业是基于 IT 作为解决方案的

3).IT 服务企业

以销售软件、硬件、以及技术咨询服务为主的企业。

针对市场中存在的企业、个体等的需要特点,将需要布局为(也是市面上罕用的分类):

1. 提供软件的服务,解决企业外部信息化问题,譬如:ERP 零碎,进销存管理系统,人力资源管理系统,行政零碎,财务零碎等等。(SAAS)

2. 提供平台服务,解决行业共性问题,将 SAAS 迁徙到云端,提供平台类的服务。譬如:淘宝的开放平台,facebook 的开放平台,基于 salesforce 的销售零碎,云笔记,云盘等。(PAAS)

3. 提供基础设施服务,基础设施包含软件和硬件方面的,包含:存储、虚拟机、网络、防火墙、缓存、负载平衡、数据库等等。(IAAS)

对于企业外部来说,个别互联网企业人员角色分为

1. 开发

2. 测试

3. 运维

4.DBA

5. 产品

6. 项目管理人员

7. 客服

8. 业务人员(销售、市场、BD、人力资源、行政等等)

下图阐明一下在互联网行业各个角色的需要(仅局限于云畛域)

三. 云计算概述

云解决什么(what cloud offer)?

  1. 封装

将计算能力和软件放在云端,能够缩小反复建设,将通用的服务封装起来,达到重用,缩小资源的节约,进步生产效率,并提供成熟的解决方案。

2. 平安

云计算将数据和存储,软件逻辑都集中于云端,更能不便的对立构建平安体系

3. 灵便

云计算提供灵便的软件和服务端架构

4. 性能

通过集群的能力和云端的集成可能进步集群的性能解决

5. 伸缩能力

在存储和计算能力方面提供弹性的资源管理,可能按需应用

6. 运维

云计算在 IAAS 角度来看,重要的是运维,可能将运维更加集中化治理,并齐全智能化,大大降低人力老本

7. 充分利用物理资源

通过云建设,可能将物理资源进行虚拟化解决,屏蔽物理硬件底层,并可能实现物力资源软化进行逻辑治理和调配调度

8. 大数据

大数据保留于云端,可能提供数据分析和智能解决

……

当然,云计算还有很多很多益处,给咱们带来很多想像空间和 IT 技术的反动。

私有云与公有云

说到云,行业内将云分为“私有云”和“公有云”,对于“私有云”和“公有云”的差异,在咱们之前的需要剖析过程中,大抵理解了云的需要,

“私有云”和“公有云”的差异最大的是需要的差别,因为需要的差别,导致了技术计划和产品决策的差别。

私有云需要上因为用户多种多样,导致需要存在不一样,特地须要更多的定制化,譬如:网络的定制化,套餐组合的定制化,网络资源,存储资源的独立等等

四. 云建设的关键问题

计算机基础知识

计算机自从诞生以来,始终依照冯. 诺伊曼的体系倒退,在硬件的根底上的操作系统,也分为网络协议体系的实现,内存治理,文件管理体系等等,大抵的形象图

云建设要解决的问题?

1. 治理问题

云计算的施行,首先要解决运维的问题,在云环境下后端是大规模数量的物理节点的集群,对于同时保护数以千计算的计算节点,以及部署构造的简单,需要的变动,

光靠减少人力也难以解决简单的问题。从而须要构建高效的计算资源管理系统,可能灵便简略的治理运零碎,并可能及时的发现问题。

2. 计费问题 (私有云)

对于私有云而言,因为是面向公众的,必然产生费用的问题,罕用的免费形式多种多样,也因为产品的不同而计费形式不同,譬如:网络、存储、cpu、数据库容量等等

3. 资源隔离问题

云计算运行在云端,是通过虚拟化体系建设的,虚拟化是建设在硬件之上,多个虚拟化资源同时运行于同一节点(host)中,存在着资源的共享争用问题,

这样就存在着资源应用的公平性问题,导致同一 Host 上的资源应用相互影响。为了使得彼此资源应用互相独立,咱们要建设相应的隔离机制。资源的隔离包含:存储、内存、cpu、数据库、网络等,其中网络是最难管制的。

4. 平安问题

在云端的利用和基于客户端的平安,面临的环境不一样,客户端方面大多数是病毒问题引起的,而在云端,也存在一些服务器攻打的问题,以及数据互相独立相互影响的问题,以及一些服务端编程的平安问题等。

5. 性能问题

对于云来说,须要保障云端的性能问题,包含 CPU 解决性能,IO 解决能力,资源的就近拜访,资源数据同步的速度,还须要解决零碎底层的性能问题,包含文件解决 Cache,存储介质的优化,采纳 SSD 等,或者采纳 SATA+SSD 的混合形式节约资源和降低成本。

6. 存储问题

对于云来说,因为云端是将客户端的数据和运算转移到云端,必须要有足够的存储能力以及足够稳固的存储系统,保障用户数据的平安,对于存储来说,有提供 VM 虚拟机运行环境的 block device(块存储),

以及提供 KV 形式的对象拜访存储,这些都须要保证数据复制、数据读写访问的性能和数据永恒可用的能力

7. 网络问题

对于私有云以及公有云的一些利用场景,须要可能提供网络的逻辑隔离(SDN)或物理隔离,以及对网络的拜访灵便问题。构建虚拟化网络,因为物理条件的限度,咱们不得不从 L2-L4 层进行解决,咱们罕用的形式是:bridge,vlan,gre,sdn(openflow,opendaylight),以及一些厂家的产品等等。

8. 高可用问题

高可用问题是在分布式系统中必须要解决的问题,正因为集群的问题,咱们必须要从多方面思考解决的问题,包含保障云管理系统的高可用性,存储介质的高可用性,网络的高可用性,虚拟机高可用问题等等。

9. 进步资源利用率问题

对于物理资源的虚拟化,咱们有很多种解决办法,KVM、Vmware、xen、Hyperv、LXC 等等,在 HVM 的形式下,对于 VM 自身的启动须要占用大量的内存、cpu 和存储资源,导致系统内存和 cpu 应用有肯定的节约,基于 LXC 的解决方案因为是机基于 Host OS

过程,通过 namespace 的形式进行隔离的,是一种轻量级的实现,可能在资源初始化,资源利用率方面可能最大化,对于各个利用场景来说,咱们能够选用适合的解决方案。

五. 公有云架构布局

公有云的指标

对于公有云建设,咱们的指标是

1. 进步物理资源的利用率

2. 一套云管理系统,升高运维的复杂度,进步运维工作效率

3. 构建灵便的开发、测试集成环境

4. 提供海量的存储体系

5. 建设欠缺的监控体系

6. 建设根底应用环境、不便测试

7. 对立架构

8. 智能资源调度

咱们是怎么建设公有云的?(how to implement)

openstack 开源解决方案

对于云计算来说,也存在这多种解决方案,譬如 cloudstack 和 openstack 等,在两种计划的比拟之后,咱们最终抉择了 openstack 的解决方案。

次要是出于以下几点起因:

1.openstack 的社区成熟度:在 openstack 通过几年的倒退,社区曾经越来越成熟,很多大公司都参加进来帮忙欠缺,红帽公司将来十年也将 openstack 作为倒退的战略重点。

2. 架构设计的抉择:openstack 采纳了 python 语言编写,并且设计上采纳组件化的形式,各个组件独立倒退,并互相解藕

3.openstack 提供了更加残缺成熟的计划,可能满足多样的需要,同时曾经有不少公司采纳,曾经通过生产上的验证

4. 文档问题:openstack 文档化做的不错,网上可能找到多种多样的问题解决方法

5. 人员招聘问题,通过多年的倒退和市场的培养,理解 openstack 的人越来越多,对于开发保护的人才建设和招聘绝对成熟一些。

6. 倒退比拟迅速

。。。。。

下图是咱们大抵的架构布局

如果本文对你有帮忙,别忘记给我个 3 连,点赞,转发,评论,

咱们下期见!答案获取形式:已赞 已评 已关~

学习更多 JAVA 常识与技巧,关注与私信博主(666)

退出移动版