详解OpenStack架构及服务方式 (详解中美元首通话细节)

教程大全 2025-07-08 12:41:56 浏览

OpenStack 是当今最具影响力的云计算管理工具——通过命令或者基于 Web 的可视化控制面板来管理 IaaS 云端的资源池( 服务器 、存储和网络)。它最先由美国国家航空航天局(NASA)和 Rackspace 在 2010 年合作研发,现在参与的人员和组织汇集了来自 100 多个国家的超过 9500 名的个人和 850 多个世界上赫赫有名的企业,如 NASA、谷歌、惠普、Intel、IBM、微软等。

主要分为5个不同的层次16个不同功能模块:

Presentation【表示层】:api模块,ui模块

Logic(Control)【逻辑控制层】:Orchostration【编排服务】,Scheduling【调度服务】,Policy【策略服务】,Image Registry【镜像注册服务】,Logging【日志服务】

Resource【资源管理层】:Compute【计算资源管理模块】,Volume【存储资源管理模块】,Network【网络资源管理模块】

Integration【集成层】:Billing【计量模块】,Identity【身份认证模块】

Mabagement【管理层】:Admin【管理api】,Monitoring【监测】

子项目是怎样对接起来的:

Horizon-UI服务:对应User Dashboard【云下服务给运维用户使用】和Customer Portal【给云上用户使用】

keystone-身份认证:对应Identity

Nova-计算服务模块:Compute API,scheduling【调度服务】,policy【策略服务】和Compute【计算管理模块】以及部分Admin API

Glance-镜像服务:Image Registry【镜像注册】,Image Registry【镜像API】

Cinder【块存储】/swift【网络对象存储】-存储服务:volume【存储资源管理模块】

Neutron-网络服务:Network【网络资源管理模块】

Heat-编排组织服务:Orchostration【编排服务】

Ceilometer-监控计量服务:Billing【计量模块】,,Monitoring【监测】

主要服务为openstack用户提供UI服务,也就是负责用户在管理控制台上的所有操作转化为后台API的调用。

详解中美元首通话细节

用户:云管理员【负责整个云平台的运营,资源管理和分配】,普通云用户【在配额范围内,自由操作,使用资源】

云管理员界面:

主要负责openstack中的身份认证和权限控制,

User:即用户,代表可以通过keystone进行访问的人或者程序,User通过认证信息(如密码,api Key等)进行验证

Tenant:即租户,它是各个服务中的一些可以访问的资源集合

Role:即角色,代表一组用户可以访问资源的权限

一家人【租户】租用了一百平米的房子【角色权限】那么这家人每个人【用户】的管理权限是不同的,父母比孩子的管理权限大。Service:即服务,如Nova,Glance,Swift。服务只有在keystone上进行注册才能被分配

Endpoint:一个服务暴露出来的访问点,如果要访问一个服务,则必须要知道他的endpoint

Token:访问资源的令牌,相当于钥匙

keystone到底提供了什么服务:

Identity服务:验证了身份验证凭证。

Token服务:将会验证并管理用于验证请求身份的令牌

Catalog:每个服务需要在keystone上进行注册,而他们就是注册在catalog上

Policy:决定每个用户有哪些访问控制的权限

openstack的核心服务。

一:主要功能包括:

1:实例生命周期管理:实例的创建,删除,启动,停止

2:计算资源的管理

3:向外提供Rest风格的API

二:3个不同的功能模块组成

nova-api:位于表示层主要接受外部的rest请求

nova-scheduler:位于逻辑控制层,主要负责居中调停,选择由哪个主机创建vm

nova-compute:负责虚拟机测创建,以及资源的分配,本身并不提供任何虚拟化功能,但他却支持不同的虚拟机形式

他们之间并不是听过直接传递,而是通过消息中间件进行消息的传递

功能:提供虚拟机镜像的存储,查询和检索服务

主要为Nova组件提供服务,通过nova创建虚拟机的时候,就必须听过glance获取相应的镜像,然后根据镜像创建虚拟机。

依赖于存储服务和数据库服务:存储服务用于存储镜像本身,数据库服务主要用于存储跟镜像相关的各种元数据

glance的架构图

功能:对外提供高可用分布式对象存储服务

特点:无限可扩展,没有端点故障,使用swift不用担心使用的对象会丢失,因为它本身就提供高可用的功能

可以通过HTTP(S),object api及s3接口存取

swift原理图

所有的请求都通过proxy进行处理,通过proxy到合适的Account下面找相应的Containe中的某一个object进行存储服务

在这中间会针对不同的object进行复制,从而保证某一个对象的信息丢失时能够从其他地方找回来

功能:管理所以的块存储设备,为vm服务,

对象存储服务主要用于存储分布式的对象,也就意味着你可以从任何地方发起请求存储你的对象

块存储服务是本地的,它只能挂在vm上进行使用

cinder原理图:

当一个请求发来时,首先还是发送到cinder本身的api上面,api模块对发过来的请求进行处理,处理后的结果通过消息中间件进行传递,通过消息中间件mq传到cinder-scheduler上面再通过调度器,

再决定到哪里申请块存储服务,并且创建一个vm,cinder具体的存储模块的管理都是通过cinder-volume来进行生命周期管理

功能:提供云计算环境下的虚拟网络功能,为每个租户建立独立的网络环境

三种模式:

Flat模式:网桥模式,所有的都需要手工配置

Flat DHCP模式:网桥模式,在网关处单独取了一个DHCP的进程,可以辅助用户进行网络配置

VLAN模式:为每个不同的租户设置了不同的虚拟子网,在这个虚拟子网中,用户可以有自己的ip

组件间关系和访问流程


经济危机下企业组织该如何应对

经济危机下企业组织必须注意一下三点:一、最大限度提升企业内部的“差异性”合作的力度。 二、发挥企业管理的团队优势,已不变应万变。 三、举强避弱,正如上面那位朋友所说的只做强项。 避免高风险的经营项目。

法人是不是一定是一个人?公司、组织可以吗?

法人是具有民事权利能力和民事行为能力,依法独立享有民事权利和承担民事义务的组织。 简言之,法人是具有民事权利主体资格的社会组织。 法人作为民事法律关系的主体,是与自然人相对称的,两者相比较有不同的特点:第一,法人是社会组织在法律上的人格化,是法律意义上的人,而不是实实在在的生命体,其依法产生、消亡。 自然人是基于自然规律出生、生存的人,具有一国国籍的自然人称为该国的公民。 自然人的生老病死依自然规律进行,具有自然属性,而法人不具有这一属性。 第二,虽然法人、自然人都是民事主体,但法人是集合的民事主体,即法人是一些自然人的集合体。 例如大多数国家(包括我国)的公司法都规定,公司法人必须由两人以上的股东组成。 对比之下,自然人则是以个人本身作为民事主体的。 第三,法人的民事权利能力,民事行为能力与自然人也有所不同。 根据《民法通则》第37条规定,法人必须同时具备四个条件,缺一不可。 (一)依法成立。 即法人必须是经国家认可的社会组织。 在我国,成立法人主要有两种方式:一是根据法律法规或行政审批而成立。 如机关法人一般都是由法律法规或行政审批而成立的。 二是经过核准登记而成立。 如工商企业、公司等经工商行政管理部门核准登记后,成为企业法人。 (二)有必要的财产和经费。 法人必须拥有独立的财产,作为其独立参加民事活动的物质基础。 独立的财产,是指法人对特定范围内的财产享有所有权或经营管理权,能够按照自己的意志独立支配,同时排斥外界对法人财产的行政干预。 (三)有自己的名称、组织机构和场所。 法人的名称是其区别于其他社会组织的标志符号。 名称应当能够表现出法人活动的对象及隶属关系。 经过登记的名称,法人享有专用权。 法人的组织机构即办理法人一切事务的组织,被称作法人的机关,由自然人组成。 法人的场所是指从事生产经营或社会活动的固定地点。 法人的主要办事机构所在地为法人的住所。 (四)能够独立承担民事责任。 指法人对自己的民事行为所产生的法律后果承担全部法律责任。 除法律有特别规定外,法人的组成人员及其他组织不对法人的债务承担责任,同样,法人也不对除自身债务外的其他债务承担民事责任。 根据《民法通则》的规定,我国的法人主要有四种:机关法人、事业法人、企业法人和社团法人。

看Spring-CLOUD怎样使用Ribbon

关注下spring cloud是如何进行客户端负责均衡。 看怎么调用到负载均衡的,怎么定义负载均衡的,然后是怎么实现的?第一个其实可以不用关心,调用的地方应该很多,找到一个地方来说明怎么调用的即可。 第二个,可以猜下,最主要的应该是一个类似 serviceInstance get(string serviceId)这样的方法吧。 第三个问题,明摆着,使用netflix的ribbon呗。 发起一个调用时,LB对输入的serviceId,选择一个服务实例。 IOException {String serviceId = ();ServiceInstanceinstance = (serviceId);URIuri = (instance, originalUri);IClientConfigclientConfig = (());RestClientclient = ((), ); = (());return new RibbonHttpRequest(uri, verb, client, clientConfig);}关键代码看到调用的是一个LoadBalancerClient的choose方法,对一个serviceId,选择一个服务实例。 看下LoadBalancerClient是一个接口:足够简单,只定义了三个方法,根据一个serviceId,由LB选择一个服务实例。 reconstructURI使用Lb选择的serviceinstance信息重新构造访问URI,能想来也就是用服务实例的host和port来加上服务的路径来构造一个真正的刘访问的真正服务地址。 可以看到这个类定义在的package 下面,满篇不见ribbon字样。 只有loadbalancer,即这是spring-cloud定义的loadbalancer的行为,至于ribbon,只是客户端LB的一种实现。 Ribbon的实现定义在中的包下的RibbonLoadBalancerClient。 看下RibbonLoadBalancerClient中choose(String serviceId)方法的实现。 (String serviceId)@Overridepublic ServiceInstancechoose(String serviceId) {Serverserver = getServer(serviceId);return new RibbonServer(serviceId, server, isSecure(server, serviceId),serverIntrospector(serviceId)(server));}看到,最终调到的是ILoadBalancer的chooseServer方法。 即netflix的LB的能力来获取一个服务实例。 protected ServergetServer(String serviceId) {return getServer(getLoadBalancer(serviceId));}protected ServergetServer(ILoadBalancerloadBalancer) {return (“default”); ofkey}至于netflix如何提供这个能力的在另外一篇博文中尝试解析下。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐