-
2020-09-08:KVM和OpenStack的区别?
-
基础管理服务包含Keystone、Glance、Nova、Neutron、Horizon五个服务Keystone:认证管理服务、提供了其余所有组件的认证信息/令牌的管理、创建、修改等等、使用MySQL等数据库存储认证信息Glance:镜像管理服务,提供了对虚拟机部署的时候所能提供镜像的管理、包含镜像的导入、格式以及制作相应的模板Nova:计算管理服务,提供了对计算节点的Nova管理、使用Nova-API进行通信Neutron:网络管理服务、提供了对网络节点的网络拓扑管理,同时提供Neutron在Horizon的管理界面Horizon:控制台服务,提供了以Web形式对所有节点的所有服务的管理,通常把该服务成为DashboardOPEN stack 扩展组件扩展管理服务包含Cinder、Swift、Trove、Heat、Centimeter五个服务Cinder:块存储服务,提供相应的块才能出,简单来说,就是虚拟出一块存盘,可以挂载到相应的虚拟机之上,不收文件系统的影响,对虚拟机来说,这个操作像是加了一块硬盘,可以完成对磁盘的任何操作,包括挂载、卸载、格式化,转换文件系统等等操作,大多应用于虚拟机空间不足的情况下的空间扩容等。Swift:对象存储服务,提供相应的独享存储、简单来说,就是虚拟出一块磁盘空间,可以在这个空间当中存放文件,也仅仅只能存放文件,不能进行格式化,转换文件系统,大多应用于云磁盘/文件Trove:提供管理数据库节点的Trove先关、同时提供Trove在Horizon中的管理面板Heat:提供了基于模板来实现云环境中的资源的初始化,依赖关系处理,部署等基本操作,也可以解决自动收缩、负载均衡等高级特性Centimeter:提供对物理资源以及虚拟资源的监控,并记录这些书库,读数据进行分析,在一定条件下出发现货供应动作Ironic:可以直接对物理机执行节点管理,进行物理机节点的添加、删除,进行电源管理,部署系统等操作。
-
2020-08-27:OpenStack与Docker的区别?
-
2020-08-27:OpenStack与Docker的区别?
-
1. 云计算开源框架 全球云计算的龙头亚马逊近日风光无限,成为继苹果公司之后,第二个市值突破万亿美元的公司。但是市盈率却高达400倍,而同期苹果公司却只有20倍。暂且不说亚马逊能否撑起如此之高的市盈率,可见全球市场对云计算持有乐观的发展预期。云计算的概念在2006年由谷歌首次提出,大约经过10年的探索和技术积累,在2015年开始进入应用的繁荣期。 亚马逊占据了市场60%的市场份额,具有绝对领先的地位。亚马逊的CEO贝佐斯要求开发人员按照SOA理念来进行开发,即面向服务的理念,要求所有程序模块必须要用服务接口把数据和功能开放出来,这种设计理念也奠定了现在AWS的基本技术基础。1.1 OpenStack的诞生和繁荣 当然参与云计算的公司一直都很多,在2010年7月,RackSpace和NASA(美国国家航空航天局),分别捐献出RackSpace云文件平台代码和NASANebula平台代码,OpenStack由此诞生。OpenStack作为AWS的追随者,其设计理念和AWS都非常的相似,核心组件包括计算(Nova)、对象存储(Swift)、认证(Keystone)、用户界面(Dashboard)、块存储(Cinder)、网络(Neutron)和镜像服务(Glance),这些组件协同工作为用户提供计算、网络和存储等硬件资源。 OpenStack这种DIY的设计模式受了极大追捧,而且OpenStack涉及的概念和调用接口也和AWS一致。用户可以把AWS上的应用无缝迁移到基于OpenStack的云平台上,思科、IBM、HP等一些列的IT巨头纷纷基于OpenStack推出了自己的公有云平台。OpenStack不光在公有云上作为AWS的替代者,而且在私有云领域也打破了VMware公司在服务器虚拟机的垄断。全世界的云计算工程师都为之欢呼,因此基于OpenStack的产业链也就诞生了。 国内出现了很多基于OpenStack的创业公司,比如united stack、easystack、awcloud等。拥有最多数据中心的三大运营商,也分别成立云计算分公司并组建OpenStack团队。还有一些金融等传统行业也成立自己的事业部,志在基于OpenStack打造自己的私有云。互联网巨头腾讯和百度,也有自己的OpenStack团队和对应的产品。所以在OpenStack黄金会员里面,我们华人公司占据了一半的席位。 随着OpenStack的蓬勃发展,其笨重、性能等缺陷日益显露。部署起来非常复杂,光部署工具就有很多种;使用起来性能也不是太好,非常多的重复代码。而且社区管理也有问题,功能组件繁多且重复,围绕OpenStack有100多个项目,各个厂商利益角逐。就比如裸机管理项目最开始是ironic,后面华为和intel又搞出来mogon。两个项目只是代码框架不同却是实现相同的功能,这样的情况并不是特例,这无疑分散了OpenStack的研发实力。 有些PTL和TC更是想把自己的项目脱离OpenStack单独部署,无非是想脱离走下坡路的OpenStack社区。目前社区的一些任务目标,PTL响应也不够,完成度更不用说了。因为随着OpenStack的衰落,公司支持力度下降,有些PTL都是兼职自愿奉献社区。就比如Trove项目的前任PTL,因为Tesora被收购一拍屁股走人,我们国人接过来trove的PTL重担,但是2018年温哥华峰会的时候,据说因为其个人原因没有如期参加吧,也饱受批评。 OpenStack经历了短暂的繁荣期,2015年惠普把EG(中国惠普企业集团)51%的股份卖给了紫光股份,并于次年2017年9月彻底解散了国内云计算团队;惠普美国云计算也纷纷有大佬离职,并把OpenStack组件资产卖给了SUSE,表示SUSE将是其OpenStack业务发展的首选合作伙伴。思科也在2017年3月关闭基于OpenStack的Intercloud公有云服务,并宣称将专注于混合云和网络虚拟化服务的提供。IBM也在2018年放弃OpenStack,转向做kubernetes去了。 但是国内在云计算领域公有云份额很少,私有云份额很大占到95%,所以仍然有很多厂商在私有云领域采用OpenStack,至于公有云的话,OpenStack框架确实也不太适合。国内华为、金山等公有云厂商,虽然使用的OpenStack,但是基本上功能已经改了很多了。1.2 Kubernetes的开场 伴随着OpenStack的衰落,Kubernetes已经成为新贵。说到Kubernetes,不得不说一下docker。2013年3月dotcloud公司推出了一项新的容器技术Docker。说到容器技术,也不是什么新技术,只是非常的小众。然而Docker的出现,降低了容器技术使用的门槛,带来了无可比拟的优势,所以迅速在IT行业内普及。不光是IT工程师,还是产品经理等非技术工作人员,人们争相讨论着容器化会带来哪些便利和优势,也像OpenStack一样催化了无数的创业公司。 但是在Docker发布的初期,受到了谷歌、IBM等互联网巨头的挤压,同期也有CoreOS推出的rkt等容器技术作为有力的竞争者。互联网巨头纷纷站队,或者推出自己的容器技术。互联网巨头有着众多的研究人员、雄厚的经济实力和丰富的项目经验,初创公司对此毫无招架之力。 于是Docker的创始人决定把Docker开源,让全世界的感兴趣的容器工作者参与其中,无疑增加了研发实力。然后建立了全世界最丰富的镜像仓库,使用者可以在这里找到自己想要的镜像,间接也增加了docker的用户群。最后就是通过融资,收购了一些容器编排相关的创业公司来提升自己的整体实力。 这样的竞争持续了两年多,最终在DockerCon 2015上,Docker的创始人和CoreOS的创始人最终握手言和,并成立runC项目,和基金会一起维护容器的标准。此时Docker已然给云计算、应用交付等多个领域带来巨大的革新。 随着Docker的普及和使用,其自身的性能无法满足大规模集群的使用,需要一个工具对成千上万个容器进行统一编排。在2015年又开始了容器编排之争,行业内最主要的三个编排框架分别是docker公司的swarm、google的kubernetes以及Apache mesos。Mesos是参考谷歌的borg大规模集群管理系统,并于2009年推出的。swarm和kubernetes是为docker等容器技术,新推出的框架。swarm是docker公司发布的,有近水楼台先得月的优势。kubernetes是参考谷歌的borg系统10几年的容器管理经验,重新推出的一套容器管理框架,可谓含着金钥匙出身,kubernetes迅速得到了微软,红帽等支持。这场战争不用打,或许都已经猜到结局是什么,战争的胜利只是一个时间问题。 Docker公司的用户大部分是IT开发人员,所以靠这些用户带来盈利是非常难的。Docker公司在2017年1月把docker分为社区版docker-ce和商业版docker-ee,一直没有放弃盈利的机会,但是也一直没有找到盈利的方式。终于,2017年10月的dockerCon峰会上,docker公司官方支持Kubernetes,确立了kubernetes成为了容器编排界事实上的标准。 2018年初docker的母公司cloud control还一度传出资不抵债要破产的节奏。有人说docker和kubernetes的出现加速了OpenStack的衰落,确实容器技术会抢占一部分虚拟机的市场。但是OpenStack的衰落自身也有原因,包括OpenStack也有些容器相关的项目,但是在我看来顶多算个自我救赎而已,始终不能摆脱那个复杂的框架。2. IoT下IaaS架构的选择 国内阿里涉足云计算领域比较早,所以阿里云采用的是自身研发的云计算架构,其余公司都或多或少的采用开源的云计算架构。所以在4月26日云栖大会·南京峰会上,阿里云副总裁李津表示:“中国只有两种云,一种是拿来主义的云,一种是自主可控的飞天云”。当然这不完全准确,但也能反映目前国内公有云和私有云市场现状。 日前,美国权威调研机构Gartner发布了全球公共云市场份额报告(2017年)。从报告中可以发现,全球公有云前三市场份额占到66%,且持续扩大。另外Gartner的“2018年全球公共云魔力象限”也有所体现,2017年有14家企业入围魔力象限,而2018年只有6家,这也意味着全球云计算市场头部企业和尾部企业差距逐渐拉大。与国际市场不同的是,我们国内IaaS市场是阿里云一家独大,但是PaaS层和SaaS层才刚刚发展,所以不失为一个突破口。先看一下,谷歌云的IoT的框架图 把物联网设备通过某种协议,接入到IoT云平台。IoT云平台对外提供API接口,我们可以通过接口控制物联网设备。谷歌在物联网和AI这一块做的比较成熟,还开发了对应的物联网芯片cloud edge,可以直接植入到散布在全球各地的物联网设备。在云平台一侧,开发大数据分析的模块big query,更加方便第三方厂商对物联网设备的数据进行分析,打造从芯到云的整个产业链。 我们目前还处于的初级阶段,第一阶段首先实现物联网设备接入到自研IoT云平台,然后APP调用IoT云平台对外的API接口,控制和收集设备的状态。使用户利用从分布在全球的设备获得的数据,实时发掘业务数据洞见。IoT平台收集的设备数据将发布到订阅和发布系统以进行下游分析。目前支持简单的大数据分析,丰富的报表和**以可视化的方式呈现物联网数据结果。 IaaS层要为IoT PaaS平台提供动态可扩展的网络、计算和存储等资源。初期网络的流量主要是设备到IoT后台服务、app和Iot后台服务之间的交互,所以网络模型相对简单。网络的峰值一般会出现在一天中的晚上某个时刻,这个时候后台服务的压力就比较大,相应的要求更多计算资源。对于存储的话,前期阶段主要是物联网设备的数据和用户的数据,存储量比较少。 综合上面的因素,高峰期时对计算的要求比较大,然而网络和存储的要求比较简单。所以选择轻量级的docker+kubernetes能实现高峰期的自动扩容,而且也支持网络自动化和存储持久化。Kubernetes的社区发展情况来看,更加倾向于服务的治理,即PaaS层的编排工具,但是又有非常丰富的插件,可以直接运行在真实的服务器、虚拟机、国内外公有云上。如果公司有丰富的原始技术积累,还是采用定制化自研云平台,平台升级就不会涉及到与社区版本的兼容性。但是国内的大部分公司由于研发实力不够,一般都采用成熟的开源社区项目,随着上线产品的优化,迭代完善使用的开源框架。3. PaaS和IaaS的共同演进 目前谷歌云IoT业务植入大数据和AI的元素,能够根据用户的物联网设备数据分析出每个用户的习惯等,也提供一些AI的方案供用户选择。随着PaaS层陆续增加大数据和AI等功能,对IaaS的要求也就越来越高。Kubernetes在生产环境上的应用主要是容器编排,在8月份刚刚发布Istio(服务治理)项目生产环境的版本,还没有涉及像IoT等如此细分的生产项目。虽然Kubernetes社区也有AI的孵化项目,但是能不能满足我们的需要,还是要通过实践来验证。 Kubernetes提供了非常丰富的网络插件,说到网络一直是云计算领域的痛点和难点。OpenStack也有非常多的网络插件,这些插件也给使用者带来困扰。我到底选择哪个插件,那这个插件在未来会一直持续活跃下去么,还是说在不久的将来会被社区废弃。我们现在服务间的网络模型也非常简单,所以选用的flannel网络插件,所有的容器都在一个大二层里面。流量限速、网络隔离和安全问题等问题社区还在完善,随着我们业务的增长,我们也可以引入SDN等复杂的网络模型。 计算的方面的话,由于一个个容器不像虚拟机做到真正的隔离,目前是限制容器对cpu和内存的使用率来控制。如果是公有云的话,可能这样会带来潜在的风险,因为我们没有办法确定用户的镜像会不会利用系统的漏洞危害其他容器,或者独占宿主机导致超负载以至于其他容器不能获取到资源。但是我们目前是私有云的形式,我们每个服务、每个镜像都是安全可追溯的。如果后面有对虚拟机和裸机的要求,我们也可以自己开发对应的插件,或者采用OpenStack+Kubernetes的形式,来管理更复杂的集群。 我们的PaaS服务用到了MySql、redis、mogonDB等数据库,还有emq消息队列,这些都是需要持久化存储的。如果服务器发生异常关机,那么要确保服务器启动以后,数据是可以恢复的。Kubernetes提供了ceph、公有云存储等大约20个存储后端,也增加了选型上负担。如果采用公有云提供的稳定的方案得话,可能带来安全和稳定性方面的顾虑。如果采用私有自建云的话,可能需要一定的技术积累。总之,根据业务进行迭代开发,要优于一开始就做大而全的私有云方案。
-
1、Openstack计算部件---Nova弹性云包含主要部分:API Server:nova-api,外界用户对云实施管理的唯一通道,通过使用web 服务器来调用各种EC2的API,接着API服务器便通过消息队列把请求送达云内目标设施进行处理。消息队列:rabbit-mq server,Nova队请求应答进行异步调用,当请求接收后便立即触发一个回调。运算工作站:nova-compute,管理实例的整个生命周期。网络控制器:nova-network,处理主机的网络配置。卷管理:nova-volume,卷工作站管理基于LVM的实例卷,它能够为一个实例创建、删除、附加卷,也可以从一个实例中分离卷。调度器:nova-scheduler,负责把nova-api调度送达给目标。 2、 openstack镜像服务器---GlanceGlance是一套虚拟机镜像发现、注册、检索系统,构件有Glance控制器、Glance注册器,镜像的仓储形式有:a>openstack object storage: 对象存储b>File system:后端文件系统把镜像文件写到本地文件系统c>S3:后端允许openstack image service存储虚拟机镜像在amazon S3服务中d>HTTP:openstack image service能通过HTTP在Internet上读取可用的虚拟机镜像, 该存储方式是只读的 3、 openstack存储设施---SwiftSwift为openstack提供分布式、持续虚拟对象存储,具有跨结点百级对象的存储能力。Swift内建冗余和失效备援管理,对大数据(大兆字节)和大容量(多对象数量)的测度非常有效。Swift组件:Swift账户、Swift容器、Swift对象、Swift代理、Swift RingSwift代理服务器用户通过Swift-api 与代理服务起进行交互,代理服务器检测合法的实体位置并路 由它们的请求。同时,代理服务器也处理实体失效而转移时,故障切换的实体重 复路由请求。Swift对象服务器对象服务器是一种二进制存储,负责处理本地存储中对象的存储、检索、删除。对 象 都是文件系统中存放的典型二进制文件,具有可扩展属性的元数据(xattr)。Swift容器服务器容器服务器列出一个容器中的所有对象,统计容器中包含对象数量及容器存储空间 耗费。Swift账户服务器---与容器服务器类似,列出容器中的对象Ring(索引环)Ring容器记录Swift中物理存储对象的位置信息,是真实物理存储位置实体名的虚 拟映射。实体指的是:账户、容器、对象,他们都拥有自己的Rings 4、 openstack认证服务(Keystone)Keystone为所有openstack组件提供认证和访问策略服务,它依赖于自身的REST(基于Identity API)系统进行工作,主要对Swift、Glance、Nova等进行授权与认证。授权通过对动作消息来源者请求的合法性进行鉴定。Keystone授权方式:基于用户名/密码、基于令牌。Keystone提供服务:令牌服务,含有授权用户的授权信息;目录服务,含有用户合法操作的可用服务列表;策略服务,利用Keystone具体制定用户或群组某些访问权限;服务入口:如Nova、Swift、Glance一样每个openstack服务都拥有一个制定的端口和专属的URL,即为入口。 5、 OpenStack管理的web接口---HorizonHorizon是一个用来管理、控制OpenStack服务的Web控制面板,可以管理实例、镜像、创建秘钥,对实例添加卷、操作Swift容器等。
-
社区版openstack安装基本环境 计算节点 控制节点 网络环境 NTP (网络时间协议)安装mysql MariaDB安装RabbitMQ安装Keystone=========================================================FusionSphere OpenstackFusionCloud6.3 云解决方案使用到软件FSOFusionSphere Openstack V1R6C10.isoCPS:云部署服务 用来安装FSOopenstack 帮助openstack对接底层资源CBS:云启动服务 自动化批量部署FusionSphere Openstack华为商业化openstack 3控制节点起步两两负载FusionSphere Openstack OM (Manager)PXE:预启动执行环境首节点 PXE(DHCP,FTP)服务器 另外两台 PXE clientManagerOne Serivce Center 服务中心 --- 自动化运营 Operation Center 操作中心 --- 自动化运维创建VDC/VPC等操作,在SC上 =========================================================加入 zookeeper haproxy cps cbs=========================================================总结1.web图形化安装2.HA能力,全局无单点故障,两节点:主备 3节点:LB3.图形化可靠升级工具4.图形化健康检查工具5.PXE-CBS云启动服务,快速扩容 控制/计算节点6.开发扩展插件:zookeeper,HAproxy,告警等7.服务功能分类分级:商业化/测试8.通过插件屏蔽原有社区horizon,增加FSO OM=========================================================UPS:不间断电源双路供电容灾机房两地三中心=========================================================社区控制节点:nova-api nova-schduler cinder-api等不安装nova-compute华为控制节点:nova-api nova-schduler cinder-api等安装nova-compute (对接UVP-KVM)安装管理虚拟机 KVM-Hypervisor华为计算节点 云DC 使用fusioncompute + FC-nova NVFI nova-compute KVM=========================================================华为openstack网络平面internal_base:(纯二层平面,untag)组件内部模块通信,组件之间通信,CBS,CPS,MQExternal_API:外部用户在访问FusionSphere Openstack API,Openstack模块主动访问外部网络时External_OM:Openstack对接后端集群(计算/存储)External_base:Openstack api/scheduler/plugin ---CNA agentExternal_OM、External_base通常合部Storagedata:数据存储平面隧道网络:tunnel bearingBR-int 综合网桥
-
1. 界面或命令行通过RESTful API向keystone获取认证信息。2. keystone通过⽤户请求认证信息,并⽣成auth-token返回给对应的认证请求。3. 界面或命令行通过RESTful API向nova-api发送⼀个boot instance的 请求(携带auth-token)。4. nova-api接受请求后向keystone发送认证请求,查看token是否为有效 ⽤用户和token。5. keystone验证token是否有效,如有效则返回有效的认证和对应的⻆角⾊色 (注:有些操作需要有⻆角⾊色权限才能操作)。6. 通过认证后nova-api和数据库通讯。7. 初始化新建虚拟机的数据库记录。8. nova-api通过rpc.call向nova-scheduler请求是否有创建虚拟机的资源 (Host ID)。9. nova-scheduler进程侦听消息队列列,获取nova-api的请求。 10.nova-scheduler通过查询nova数据库中计算资源的情况,并通过调度 算法计算符合虚拟机创建需要的主机。11.对于有符合虚拟机创建的主机,nova-scheduler更更新数据库中虚拟机对 应的物理理主机信息。12.nova-scheduler通过rpc.cast向nova-compute发送对应的创建虚拟 机请求的消息。13.nova-compute会从对应的消息队列列中获取创建虚拟机请求的消息。14.nova-compute通过rpc.call向nova-conductor请求获取虚拟机消息。 (Flavor)15.nova-conductor从消息队列中拿到nova-compute请求消息。16.nova-conductor根据消息查询虚拟机对应的信息。17.nova-conductor从数据库中获得虚拟机对应信息。18.nova-conductor把虚拟机信息通过消息的⽅方式发送到消息队列列中。19.nova-compute从对应的消息队列中获取虚拟机信息消息。20.nova-compute通过keystone的RESTfull API拿到认证的token,并通 过HTTP请求glance-api获取创建虚拟机所需要镜像。21.glance-api向keystone认证token是否有效,并返回验证结果。22.token验证通过,nova-compute获得虚拟机镜像信息(URL)。23.nova-compute通过keystone的RESTfull API拿到认证k的token,并 通过HTTP请求neutron-server获取创建虚拟机所需要的⽹网络信息。24.neutron-server向keystone认证token是否有效,并返回验证结果。25.token验证通过,nova-compute获得虚拟机⽹网络信息。26.nova-compute通过keystone的RESTfull API拿到认证的token,并通 过HTTP请求cinder-api获取创建虚拟机所需要的持久化存储信息。27.cinder-api向keystone认证token是否有效,并返回验证结果。28.token验证通过,nova-compute获得虚拟机持久化存储信息。29.nova-compute根据instance的信息调⽤配置的虚拟化驱动来创建虚拟 机。
-
作为华为云平台的关键组件,OpenStack 的安全尤为重要。作为当前为 OpenStack 研发 贡献最多的厂商之一,华为一直致力于提升 OpenStack 的安全性。如前文所述,华为会 使用已有的安全威胁分析方法、安全编程规范、安全测试工具对包括 OpenStack 源生代 码在内的所有代码进行安全增强。对发现的所有安全风险,都会反馈给社区,同步修改 代码。如社区尚未接纳反馈,华为会对识别出的安全风险进行评估,并主动规避中高风 险。
-
本帖最后由 Mercy 于 2018-1-5 11:34 编辑 简介华为云是基于开源OpenStack架构进行开发的,已经获得开源Defcore认证。IaaS基础组件:IAM(Keystone)、ECS(Nova)、EVS(Cinder)、VPC(Neutron)、IMS(Glance)遵循原生OpenStack API规范,能够使用开源CLI Client去调用华为云接口管理云上资源。 前提1、 客户已经在华为云注册账户2、 客户有一台能够访问公网的Linux服务器,推荐Ubuntu/CentOS/RedHat操作系统,其上已经安装python、pip工具3、 客户已经获取华为云endpoint,http://developer.huaweicloud.com/endpoint.html4、 客户在华为云控制台-用户-我的凭证处获取鉴权信息:User、Domain、Tenant、Project4935 准备CLI执行机 1、安装开源CLI客户端华为云OpenStack基于社区Mitaka版本,能够适配Mitaka版本的client端,需要在Linux服务器上安装python包,所需版本如下:python-openstackclient: 3.2.1python-novaclient: 6.0.0python-glanceclient: 2.5.0python-keystoneclient: 3.5.1python-neutronclient: 6.0.0python-cinderclient: 1.9.0python-heatclient: 1.5.1 安装命令示例:pip install python-novaclient==6.0.0 2、配置环境变量export OS_USERNAME=wanglianmin # 输入User信息export OS_USER_DOMAIN_NAME=wanglianmin # 输入Domain信息export OS_PROJECT_DOMAIN_NAME=wanglianmin # 输入Domain信息export OS_PASSWORD=XXXXXX # 输入华为云账号密码export OS_TENANT_NAME=cn-north-1 # 输入Tenant信息export OS_PROJECT_NAME=cn-north-1 # 输入Project信息export OS_AUTH_URL=https://iam.cn-north-1.myhwclouds.com/v3 # 输入IAM的endpoint,使用v3鉴权接口# No changes needed beyond this pointexport NOVA_ENDPOINT_TYPE=publicURLexport OS_ENDPOINT_TYPE=publicURLexport CINDER_ENDPOINT_TYPE=publicURLexport OS_VOLUME_API_VERSION=2export OS_IDENTITY_API_VERSION=3export OS_IMAGE_API_VERSION=2 CLI命令示例 创建云服务器ECS:neutron net-list 查询网络neutron security-group-list 查询安全组nova flavor-list 查询规格nova server-group-list 查询云服务器组nova keypair-list 查询密钥对glance image-list 查询镜像创建虚拟机,带密钥、带安全组、带云服务器组nova boot --flavor s2.large.2 --image b966f093-7f4c-49b9-a932-534c4d1d7bdf(镜像uuid) --availability-zone cn-north-1a(可用区) --nic net-id=eafa3880-32f9-4586-9545-1bf5bf9a1842(网络uuid) --security-group snsg-hqtfl1-wp(安全组名称,不填就创建在默认安全组default下) --hint group=70542220-2e4b-499f-b117-16949f9fa6f6(云服务器组uuid,保证虚拟机分布在不同的物理主机上,只在创建时生效) --key-name KeyPair-e344(密钥name) test_cli_group(虚拟机名称) 上面创建虚拟机使用的是密钥对方式,那么如何在创建虚拟机时注入初始化密码呢? 原理介绍: 华为云使用开源第三方软件Cloudinit(Linux系统软件,已预装到公共镜像中)/CloudBase-Init(Windows系统软件,已预装到公共镜像中),去实现GuestOS自定义初始化密码(密码要求大写字母、小写字母、数字、特殊字符四选三)配置。 操作指导: 1、对于Windows虚拟机,增加--meta admin_pass=$password(比如cloud.1234): nova boot --flavor s2.large.2 --image b966f093-7f4c-49b9-a932-534c4d1d7bdf --availability-zone cn-north-1a--nic net-id=eafa3880-32f9-4586-9545-1bf5bf9a1842 --security-group snsg-hqtfl1-wp--hint group=70542220-2e4b-499f-b117-16949f9fa6f6 test_cli_group --meta admin_pass=cloud.1234 2、对于Linux虚拟机,增加--user-data参数: 首先在当前目录下vi一个文件,文件名自定义,比如user_data_linux.txt ,内容格式如下: #!/bin/bash echo 'root:cloud.1234' | chpasswd ; 第二步执行nova boot命令,带入user-data参数 nova boot --flavor s2.large.2 --image b966f093-7f4c-49b9-a932-534c4d1d7bdf --availability-zone cn-north-1a --nic net-id=eafa3880-32f9-4586-9545-1bf5bf9a1842 --security-group snsg-hqtfl1-wp --hint group=70542220-2e4b-499f-b117-16949f9fa6f6 test_cli_group --user-data user_data_linux.txt 创建网络:neutron net-create test333 创建网络neutron subnet-create test333 10.108.100.0/24 --name test-subnet (CIDR要在VPC网段内,比如VPC网段为10.108.0.0/16,subnet网段可以为10.108.100.0/24) 在网络下创建子网neutron router-list 查询路由器,对应于console控制台页面的虚拟机私有云VPCneutron router-inte**ce-add bcc0e8c3-a734-4c54-b206-95e3cc94bf39(路由器uuid) 8ccd2559-e0e5-4866-b4f1-54e0946df8e8(子网uuid) 将子网添加到router上,这样才能与其他子网三层互通,才能绑定EIP,配置VPN隧道 卷操作:cinder create 100 --name data-volume --volume-type SAS(SATA/SAS/SSD) --availability-zone cn-north-1a(可用区) nova volume-attach 9d9025bd-fa5d-4bd7-9b39-6ddf0689c5be(server_uuid) b4e08076-bb3a-4a63-ac1f-30fee7e64f99(volume_uuid) 挂载卷到虚拟机(注意:虚拟机ECS与卷EVS要在相同的AZ下)
-
本帖最后由 yd_21472167 于 2017-9-15 16:23 编辑随着Openstack的版本更新,Openstack已经逐渐成为公有云和私有云的建设事实标准,Openstack作为开源社区软件,距离商用还有一段距离。尤其是在面向多站点的openstack建设时,仍然面临大量的挑战: 挑战一:跨站点的统一云服务和资源调度 一方面,随着企业的发展,大量分支机构和服务网点的分布对网络提出挑战。但是由于带宽资源有限,以及服务质量和服务时延的要求越来越高。所以对于本地建站和数据中心的要求会越来越多,这将对各服务站点和资源的统一管理和调度就提出了挑战。统一的云服务系统,要求我们提供通用的Openstack标准API接口。 挑战二:云服务的高可用性和易管理。 云服务系统规模的不但扩大。跨站点,跨地域的管理成为挑战的同时。如何保证高可用性和易用性是Openstack的另一挑战。云服务要求部分节点的实效,不能影响业务的整体服务。同时版本的升级,补丁的更新都必须对整体服务影响最小化。 挑战三:多站点的可扩展性 单一Openstack来管理大规模的虚拟机是一大挑战。计算节点的资源收集,调度,网络信息转发,大规模节点间的RPC消息交互,甚至数据库的增删查改,都可能成为瓶颈。更何况即使单一一套Openstack服务失败,将影响到整体的服务,不例如故障域的隔离。 华为FusionSphere选择Openstack作为基础云操作系统的核心的同时,也不断优化完善Openstack的缺陷。面对上述的挑战,华为FusionSphere提出了级联的概念和设计理念。他将Openstack也作为一个大的计算节点,来进行统一的调度和管理。 实现逻辑是将Nova配置成nova-compute的hypervisor,将cinder配置成cinder-volume的存储后端,将Neutron配置成L2/L3Agent对接的网络设备,Ceilometer作为Ceilometer的数据后端,最后实现如下架构图1743 FusionSphere在使用Opentack作为管理资源的核心,同时加入级联架构,那么就必然面临对Openstack代码的修改。使用开源社区的软件。尤其是对于活跃的开源软件,怎么添加自己的特性的同时,能够兼容开源社区的版本,一直是一个不断平衡的过程。目前主流的开发方法一般有两种,一种是不修改源码,所有特性都使用插件的方式要开发。使用插件来补充开源软件的缺陷,同时支持推动开源软件的功能升级,开发新的特性满足自己的需要;这种办法,优点是兼容社区,当社区版本有大的版本升级的时候,可以很快的升级完成。另外一种就是从一个稳定的版本切出,在上面开发自己的功能特性,之后在社区中有新的特性需要合入进来,直接在自己的代码中开发类似的功能;这种方法的优点就是自由度高,可是开发出很好的适合自己特性的软件,但是缺点也很明显,随着时间的延迟,与社区差异性会越来越大。 FusionSphere目前主要使用的版本是M版本,在此版本中加入自己的级联结构的设计实现。目前我们采用的是级联架构是在源码中修改的,但是同时新特性和功能的开发,尽量做到不侵入源码,对于具体的函数,类的修改,主要是使用面向对象的继承,和函数的复写来实现。充分利用Openstack框架配置文件的强大功能,开发适合自己特性的各种不同的Driver和Manager,改变程序执行顺序,从而实现自己的功能。 尽管FusionSphere已经尽可能的做到不侵入开源代码,但是对于千万级源码的Openstack来说,它本身版本的升级就是一个耗时而且艰难的任务。单单nova项目,都是一个巨大的工程项目,再加入自己的特性代码,很容易就会使得代码工程越来越大。这样的一个系统级的软件,如何做到出现问题快速响应,如何做到发布补丁又不影响线上任务,如何做到版本迭代快速稳定的升级,都是华为云面临的新的挑战。针对这样的问题,华为期望做到服务化的解耦,最后逐步实现云系统的微服务化。1744
-
什么是RPC RPC即Remote Procedure Call(远程方法调用),是Openstack中一种用来实现跨进程(或者跨机器)的通信机制。Openstack中同项目内(如nova, neutron, cinder...)各服务(service)及通过RPC实现彼此间通信。Openstack中还有另外两种跨进程的通信方式:数据库和Rest API。 Openstack中服务主要以进程的形式实现。也可以以线程的形式实现,但是Python中的线程是协作模型,无法发挥系统中多CPU(或多CPU核心)的能力。 RCP只定义了一个通信接口,其底层的实现可以各不相同。目前Openstack中的主要采用AMQP来实现。AMQP( Advanced Message Queuing Protocol)是一种基于队列的可靠消息服务协议,具体可参考http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol。作为一种通信协议,AMQP同样存在多个实现,如Apache Qpid, RabbitMQ等。 基本概念 • Exchange:根据 Routing key 转发消息到对应的 Message Queue 中 • Routing key:用于 Exchange 判断哪些消息需要发送对应的 Message Queue • Publisher:消息发送者,将消息发送的 Exchange 并指明 Routing Key,以便 Message Queue 可以正确的收到消息 • Consumer:消息接受者,从 Message Queue 获取消息 消息发布者 Publisher 将 Message 发送给 Exchange 并且说明 Routing Key。Exchange 负责根据 Message 的 Routing Key 进行路由,将 Message 正确地转发给相应的 Message Queue。监听在 Message Queue 上的 Consumer 将会从 Queue 中读取消息。 Routing Key 是 Exchange 转发信息的依据,因此每个消息都有一个 Routing Key 表明可以接受消息的目的地址,而每个 Message Queue 都可以通过将自己想要接收的 Routing Key 告诉 Exchange 进行 binding,这样 Exchange 就可以将消息正确地转发给相应的 Message Queue RPC的使用场景 Openstack中RPC的主要使用场景: 1、随机调用某server上的一个方法: Invoke Method on One of Multiple Servers 这个应该是Openstack中最常用的一种RPC调用,每个方法都会有多个server来提供,client调用时由底层机制选择一个server来处理这个调用请求。 像nova-scheduler, nova-conductor都可以以这种多部署方式提供服务。 这种场景通过AMQP的topic exchange实现。 所有server在binding中为binding key指定一个相同的topic, client在调用时使用这个topic既可实现。 2、调用某特定server上的一个方法: Invoke Method on a Specific Server 一般Openstack中的各种scheduler会以这种方式调用。通常scheduler都会先选定一个节点,然后调用该节点上的服务。 这种场景通过AMQP的topic exchange实现。 每个server在binding中为其binding key指定一个自己都有的topic, client在调用时使用这个topic既可实现。 3、调用所有server上的一个方法: Invoke Method on all of Multiple Servers 这种其实就是一个广播系统。就像开会议,台上的人讲话,台下的人都能听到。 Openstack中有些rpcapi.py的某些方法带有fanout=True参数,这些都是让所有server处理某个请求的情况。 例子: neutron中所有plugin都会有一个AgentNotifierApi,这个rpc是用来调用安装在compute上的L2 agent。因为存在多个L2 agent(每个compute上都会有),所以要用广播模式。 这种场景通过AMQP的fanout exchange实现。 每个server在binding中将其队列绑定到一个fanout exchange, client在调用时指定exchange类型为fanout即可。server和client使用同一个exchange。
-
本帖最后由 yd_98164223 于 2017-9-12 15:08 编辑云计算概念的提出,兴起,到在业界的广泛应用与宣传,已经快7,8个年头。就像之前纳米概念的在各行各界的“广泛应用”(理发行业的纳米烫,粮油领域的纳米油,纳米大米,以及建材五金中的纳米级的建筑材料等等),当下IT行业中如果不涉及云,SDN,机器学习以及数据挖掘,很难抓住投资者和用户的眼球。然而云计算的概念是什么,当下流行的解决方案有哪些,以及云计算行业的领军人物都有哪些,作为初入职场刚刚接触“云”的我们,在向周围的人求教的时候,面对各种各样的解释,还是会“云”山雾照,摸不清头脑。本文将以漫威电影中的角色进行类比,对云计算的概念进行解释。 首先,在讨论之前,说明本文的设定是基于漫威电影《复仇者联盟》系列以及《钢铁侠》系列的电影情节。如果大家对以上电影比较熟悉,那样会更好。 随着当今社会科技的发展,计算机已经成为快速高效便捷生活中必不可少的一部分,作为计算机的缩影,手机更是成为了年轻人生活中比不可少的的一部分。 1385 在电影《钢铁侠》中,主角小唐尼在被xx组织**以后,设计出了初代钢铁侠战衣,并成功逃脱。而计算机之父图灵,也是基于一战中计算弹道的需求,设计了初代计算机。一法通则万法通,那么,我们就把钢铁侠的战衣,与计算机等价,以钢铁侠的视角,来解释云计算的发展以及组成架构,即: 钢铁侠战甲=计算机 1386初代钢铁侠战衣 那么,我们的面临的问题就出现了,既然钢铁战衣(计算机)这么的好,那么当然每个人都会想搞一套,以满足我们日常生活以及行走江湖的不时之需。但是,在现实生活中我们享受计算机带来的便利时面临着很多琐碎而费时费力的问题:电子产品更新换代速率太快,而软件要求的计算性能越来越大,就仿佛穿着初代战甲,要面对无数武装到牙齿的**一样。想要升级战甲,摸摸钱包,还是有心杀贼,无力回天。而且,哪怕你物质条件丰厚,买的起最新的战甲,但还是会面临着个人信息被窃取,战甲权限被盗用,以及无法随时随地使用战甲的尴尬。(即家里一台电脑,办公一台电脑,出差还得有笔记本,重要信息备份还得有数据中心)等等。 计算机最初的目的,就是为了快速计算,而钢铁战衣的最初目的,是为了让主角存活。计算机在最开始的时候,与钢铁侠面临的问题是一样的:操作困难,指令复杂,部件出错率高。经过硬件与软件发展,计算机的性能已经有了不可思议的飞跃,而小唐尼的钢铁战衣也已经在在单兵作战体系中的性能达到了近乎完美无法提升的地步。 那么,作为主人公,小唐尼在面对单兵战甲易损坏,容易被人窃取,不易携带以及无法战胜像浩克这样的庞大战力的问题时,是如何处理的呢?答案是反浩克战甲系统。在我们生活中,我们的解决方案就是云计算,即: 反浩克战甲系统=云计算平台 电影之中的反浩克系统是安放在宇宙空间站的战衣组件仓库,当钢铁侠在惹怒了浩克以后被狂揍不止的时候,根据小唐尼的指令,缺胳膊就给胳膊,腿断了就还腿,拳头不够大不够给力的时候,还基于浩克的战力给出了相应的定制化部件。反观我们的云计算平台的物理中心,大多是建立在温度,湿度条件符合的多个地点,也部署了超大规模的服务器集群,用户计算能力不够时提供计算服务,用户需要文件备份时提供分布式存储,还有定制化的高速计算,图形处理等等,总之就是用户需要什么,我们在能力可达的范围里尽量满足,当然,是在用户付费的前提下。 那么接下来需要等价的概念就是谁来担负起分发作战组件的责任呢?答案就是贾维斯和Openstack,即: 钢铁战衣智能管家贾维斯=Openstack管理平台13871387 贾维斯作为钢铁战衣中内置的人工智能,会在非战斗状态和战斗状态向小唐尼汇报战衣状态,安排战衣部件更换,为小唐尼安排个人的行程,甚至在小唐尼和女友生气时“助攻”。而我们的Openstack云平台管理系统,也在做着类似的工作,根据用户发送来的请求,为用户提供虚拟机,卷,镜像等等各种各样的服务。比电影中单一的人工形象更为详细的是,Openstack云平台管理系统分别有Nova,cinder,neutron,keytone,ceilometer等等组件,对应相应的服务: Keytone作为用户请求的入口,起到身份认证的作用,只有通过了keystone的认证,用户才能在自己的权限下面使用Openstack云计算平台所提供的相关的服务。 Nova主要处理用户对虚拟机创建,管理的请求,也是整个系统的核心部分。Nova 又有nova-api,nova-conductor,nova-scheduler,以及nova-compute组件构成。Nova-api负责接收用户请求,完成鉴权后将请求传递给conductor,conductor主要负责与后端数据库的交互,在后端数据库中维持着虚拟机相关信息的表格,conductor接着向scheduler发出请求,要求其在管理的服务器集群中按照一定的算法规则选取创建虚拟机的地址,然后在将选取的结果返回给conductor,在数据库中操作,接下来,condutor 将选取的位置和创建的请求发送给nova-compute,由nova-compute向下端对接的虚拟化技术交互,根据传递的参数完成虚拟机的创建。下端对接的虚拟化技术有KVM,Xen,以及VMware等。 Cinder负责存储相关服务,实现块存储。cinder与nova部件组成类似,也有接收请求的cinder-api,负责调度的cinder-scheduler,负责创卷动作的cinder-volume,另外cinder还有备份相关的cinder-backup。而且,cinder创建卷的流程是基于task-flow机制进行创建的。每一步流程进入工作流中,如果失败,会自动回退。 Swift实现对象存储。 Neutron实现网络相关服务。 Ceilometer作为监控计费组件,也是我们的“钢铁战衣仓库”得以运行下去的关键部分。不仅监控着整个云计算平台正常运转,还担任着“售票员”的角色。Ceilometer主要部件有polling-agent与notification-agent。这两个代理对应着两种不同的获取监控信息的方式,polling-agent会加载各种各样的插件,包含对服务器硬件的监控,以及对虚拟机性能等的监控的插件,他会按照pipeline文件中的配置参数,按照一定的时间间隔主动的向以上的各个部件获取监控参数,主要获取的是具体的数学类型的监控数据。而Notification-agent主要是被动监听在消息队列上的消息。Openstack云计算平台各个组件在开始某个动作或者结束某个动作或者是某个动作失败时,都会向消息队列发送信息。就相当于几个村干部在干某件事情的时候会下村大队的大喇叭上喊一声一样,而notification-agent的做的事情,就像一个认真的村民,把他关心的大队通知都认真的记下来。 Ceilometer还有collector收集器组件已完成与后端数据库的对接等等,在这里就不在赘述。 最后总结:当用户都是钢铁侠时,计算机就是钢铁战衣,云计算平台就是钢铁战衣仓库,而我们的云计算平台就是为钢铁侠实时分配战衣的人工智能贾维斯。而我们的级联场景就是由于管理的服务器集群庞大,会有一个主管贾维斯,下设多个贾维斯助手,由主管贾维斯与用户钢铁侠交互,将指令下达给贾维斯助手,由贾维斯助手完成钢铁战衣的分发。 在这里,还有一个不成熟的设想:手机作为计算机的替代品已经完美的完成了计算机在普通用户生活中的作用,手机的性能也日趋固定。有没有可能在5G场景下保证网络极速的前提下,完成手机向瘦终端的转变呢?高品质高质量的服务在云端,手机只提供上网的功能呢?
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第三期2026/08/21 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;念擎-华为云AI开发者运营案例开发专家
本期直播内容:AI六层能力首次详细解读 + 新一代华为云开发者空间亮相 + 校园案例直播带练
正在直播
热门标签