云架构和openstack的思考

模式流星
• 阅读 701

最近在负责公司内部私有云的建设,一直在思考怎么搞云计算,怎么才能够把云架构设计得好一些。

本文章主要内容:

  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)

云架构和openstack的思考

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Peter20 Peter20
4年前
mysql中like用法
like的通配符有两种%(百分号):代表零个、一个或者多个字符。\(下划线):代表一个数字或者字符。1\.name以"李"开头wherenamelike'李%'2\.name中包含"云",“云”可以在任何位置wherenamelike'%云%'3\.第二个和第三个字符是0的值wheresalarylike'\00%'4\
Wesley13 Wesley13
3年前
2019 年 CNCF 中国云原生调查报告
!头图.jpg(https://ucc.alicdn.com/pic/developerecology/6db0c465111b4d9a96eb1ffe85c00e7a.jpg)中国72%的受访者生产中使用Kubernetes在CNCF,为更好地了解开源和云原生技术的使用,我们定期调查社区。这是第三次中国云原生调查,以中文进行
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Stella981 Stella981
3年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
云数据库实现架构与设计的构想
随着云计算技术的飞速发展,云数据库作为云计算的重要组成部分,其实现架构与设计日益受到开发工程师的关注。本文将从开发工程师的角度出发,探讨云数据库的实现架构,并提出云数据库设计的构想,以期为云数据库的发展提供参考。