OpenStack原理
1、云计算和虚拟化的区别虚拟化是一种具体的技术而云计算是一种通过技术组合实现的服务模式可以这样比喻虚拟化 是制造砖块、钢筋、水泥的技术。它把一堆原始的物理材料服务器、存储、网络标准化、模块化。云计算 是用这些标准化模块快速构建和交付一栋功能齐全、可按需租用的公寓楼或酒店的完整体系。这栋大楼提供自来水对象存储、电力计算、燃气数据库等各种按需服务。2、云计算是一个操作系统云计算扮演了“数据中心资源的管理者、抽象者和服务提供者”的核心角色。 它将庞大、复杂、异构的数据中心硬件变成一个简单、灵活、可按需取用的“超级电脑”让用户像使用个人电脑一样通过简单的界面或指令来使用超大规模的计算力。3、云计算的定义计算资源Bare Metal物理服务器 Virtual Machines虚拟机 Containers容器存储资源Object Storage对象存储 File Storage文件存储 Block Storage块存储OpenStack is a cloud operating system that controls large pools of compute, storage, and networking resources throughout a datacenter, all managed through a dashboard that gives administrators control while empowering their users to provision resources through a web interface.翻译openstack是一个云操作系统控制着一个大规模数据中心级别的资源池资源池包含计算、存储和网络。给管理员提供一个仪表盘去控制资源池里所有资源最终用户可以通过web页面下发获得这些资源。OpenStack官网https://www.openstack.org/software/4、OpenStack的定位OpenStack只是云计算系统的控制面Cloud Console控制面板Cloud Services云服务提供的是一些API用户需要通过Console界面去控制这些服务Cloud Services云服务OpenStack也会提供一些服务直接使用起来比较复杂因此会封装一些更方便使用的服务如华为云的ECS、BMS等Cloud BSS运营系统可以用来计费等Resource Pool资源池用到的虚拟化技术如KVM、qemu、Xen、华为的FusionCompute5、OpenStack的设计理念开放Open开源尽最大可能重用已有开源项目灵活Flexible不使用任何不可替代的私有/商业组件大量使用插件化方式进行架构设计与实现可扩展Scalable由多个相互独立的项目组成每个项目包含多个独立服务组件无中心架构无状态架构6、OpenStack的项目分层圆框第三方软件数据库默认使用MySQL消息队列默认使用RabbitMQ方框OpenStack本身的组件IaaS服务为什么叫IaaS级别的服务因为IaaS上的这些服务已经类似于PaaS阶段的服务了因此增加“”Ceilometer计量服务输出话单信息可用于计费Heat编排服务可一自定义一个装机的组网等配置以后每次装机都使用这个自定义的配置进行装机7、OpenStack各主要项目间相互关系在Dashboard[Horizon]上申请一台云主机流程Network[Neutron]提供网络Block Storage[Cinder]提供卷image[Glance]提供操作系统镜像image不存储镜像只存镜像目录镜像实际存储在Object Storage[Swift]然后交由Compute[Nova]创建虚拟机。在这个过程中Identity[Keystone]为各个独立的服务提供认证、鉴权服务8、OpenStack的物理部署示例9、Nova原理9.1、什么是NovaOpenStack中提供计算资源服务的项目Nova负责虚拟机生命周期管理其他计算资源生命周期管理Nova不负责承载虚拟机的物理主机自身的管理全面的系统状态监控Nova是OpenStack事实上最核心的项目9.2、Nova逻辑架构API接收简单请求如开关机直接去Compute(计算节点)处理请求API接收复杂请求如创建云主机由于需要查询配额、分配资源需要调度器介入因此先到Conductor(指令器)下达创建指令再到Scheduler(调度器)选择空闲的Compute计算节点最后Conductor指令器发送指令给Compute计算节点处理请求9.3、Nova物理部署示例nova-api、nova-scheduler调度器、nova-conductor指令器组件部署在控制节点|OpenStack控制面nova-compute部署在计算节点|OpenStack数据面组件间交互使用消息队列通信持久化信息存储使用MySQL9.4、Nova中的核心概念和操作1、层级地区地理概念如东北区、华北区、华东区、华南区等推荐用户就近获取资源可用区一个可用区内使用同一套电力、网络等系统即处于同一故障域推荐用户在不同可用区做主备提高可靠性即使一个区域断电也不影响备机继续提供服务主机组对用户不可见将相同规格的主机归入一个主机组如高cpu的主机、高内存的主机根据用户业务需要高并发还是高内存调度对应的主机组进行服务主机对用户不可见主机组内部有多台主机2、名词名称简介说明Server/Instance虚拟机Nova管理提供的云服务资源。Nova中最重要的数据对象。Server metadata虚拟机元数据通常用于为虚拟机附加必要描述信息如虚拟机创建时间、创建人。key/value。Flavor虚拟机规格模板用于定义一种虚拟机类型如一种具有2个VCPU、4GB内、40GB本地存储空间的虚拟机。Flavor由系统管理员创建供普通用户在创建虚拟机时使用。Quota资源配额用于指定租户最多能够使用的逻辑资源上限。Hypervisor / node节点对于KVM、Xen等虚拟化技术一个node即对应于一个物理主机。对于vCenter , 一个node对应于一个cluster。Host主机对于KVM、Xen等虚拟化技术一个host即对应于一个物理主机同时对应于一个node。对于vCenter,一个host对应于—套vCenter部著。Host Aggregate主机聚合—个HA内包含若干host。一个HA内的物理主机通常具有相同的CPU型号等物理资源特性。Server Group虚拟机亲和性/反亲和组同一个亲和性组的虚拟机在创建时会被调度到相同的物理主机上。同一个反亲和性组的虚拟机在创建时会被调度到不同的物理主机上如主备系统。3、Nova的典型操作分组说明虚拟机生命周期管理虚拟机创建、删除、启动、关机、重启、重建、规格更改、暂停、解除暂停、挂起、继续、迁移、在线迁移、锁定、解锁、疏散拯救解拯救搁置删除搁置恢复搁置备份虚拟机导出镜像、列表、详细信息、信息查询更改密码修改卷和快照管理操作本质上是对Cinder API的封装。卷创建、删除、列表、详细信息查询。快照创建、删除、列表、详细信息查询虚拟机卷操作虚拟机挂卷、虚拟机卸卷、虚拟机挂卷列表、虚拟机挂卷详细信息查询虚拟网络操作本质上是对Neutron API的封装。虚拟网络创建、删除、列表、详细信息查询虚拟机虚拟网卡操作虚拟机挂载网卡、虚拟机卸载网卡、虚拟机网卡列表。虚拟机镜像的操作本质上是对Glance API的封装支持镜像的创建、删除、列表、详细信息查询。虚拟机HA自研虚拟机的可靠性操作。可手动触发(FS5.1)。其他资源其他操作Flavor主机组keypairs , quota等10、Cinder原理10.1、Cinder是什么为云平台提供统一接口按需分配的持久化的块存储512字节服务。核心功能是对卷的管理允许对卷、卷的类型、卷的快照、卷备份进行操作。为后端不同的存储设备提供了统一的接口不同的块设备服务厂商在Cinder 中实现其驱动支持以与OpenStack进行整合。#除了块存储还有文件存储、对象存储等类型Cinder用的是块存储10.2、Nova的逻辑架构Cinder-API接收创建卷请求分给Cinder-Scheduler调度器去合适的Cinder-Volume存储节点获取卷于Nova不同的是Cinder没有指令器组件10.3、Cinder的典型组网以SAN存储为例Cinder-Volume存储节点通过SSH/REST协议给后端存储Controller interface控制面下发创建卷的指令将数据面的块存储LUN映射给Nova主机去使用会用到ISCSI/FC协议10.4、Cinder物理部署示例内部Cinder-API、Cinder-Scheduler调度器、Cinder-Volume存储节点均部署在OpenStack的控制面互相之间通过消息队列进行交互外部Cinder-API通过REST接口走HAproxy负载均衡对外提供服务后端SAN等就是后端存储10.5、Cinder的典型操作功能分类功能描述功能分类功能描述功能分类功能描述卷操作create创建快照操作snapshot-create创建type 操作type-create创建卷操作delete删除快照操作snapshot-delete删除type 操作type-delete删除卷操作show查询快照操作snapshot-list列出所有快照type 操作type-key设置 type kV卷操作rename重命名快照操作snapshot-rename重命名type 操作type list列出所有 type卷操作upload-to-image上传卷到镜像快照操作snapshot-reset-state重置状态type 操作extra-specs-list显示 type 及其 spec卷操作extend扩容快照操作snapshot-show查询某个快照type 操作qos-associate设置 QOS 与 type 关联卷操作force-delete强制删除快照操作snapshot-metadata设置快照元数据type 操作qos-create创建 qos卷操作list列出所有卷快照操作snapshot-metadata-show显示快照元数据type 操作qos-delete删除 qos卷操作migrate卷迁移快照操作snapshot-metadata-update-all更新快照元数据type 操作qos-disassociate解关联 qos 和 type卷操作reset-state强制重置卷状态tran 操作transfer-accept接受卷 transfertype 操作qos-disassociate-all解关联 qos 的所有关联卷操作rate-limits限速tran 操作transfer-create创建卷 transfertype 操作qos-get-association查询 qos 的所有关联卷操作readonly-mode update只读模式设置tran 操作transfer-delete删除卷 transfertype 操作qos-key设置 Qos KV卷操作retype更新卷 Type 类型tran 操作transfer-list列出所有卷 transfertype 操作qos-list列出所有 qos卷操作set-bootable设置启动卷tran 操作transfer-show查询某个卷 transfertype 操作qos-show查询某个 qos卷操作manage导入卷加密操作encryption-type-create为 type 增加加密配额操作quota-defaults查询租户缺省配额卷操作unmanage导出卷加密操作encryption-type-delete删除加密配额操作quota-show查询租户当前配额卷操作metadata设置卷元数据加密操作encryption-type list列出所有加密配额操作quota-update更新租户配额卷操作metadata-show显示卷元数据加密操作encryption-type-show查询某个加密配额操作quota-usage显示租户配额使用情况卷操作metadata-update-all更新卷元数据一致性组cgsnapshot-create创建一致性组快照配额操作absolute-limits显示所有租户绝对限额和使用情况备份操作backup-create创建一致性组cgsnapshot-delete删除一致性组快照Cinder 整体availability-zone-list列出所有 az备份操作backup-delete删除一致性组cgsnapshot-list列出所有一致性组快照Cinder 整体endpoints列出 Cinder 所有接口备份操作backup-list列出所有备份一致性组cgsnapshot-show查询一致性组详细快照Cinder 整体list-extensions所有扩展 api备份操作backup-restore恢复备份一致性组consisgroup-create创建一致性组Cinder 整体credentials所有用户信息备份操作backup-show查询一致性组consisgroup-delete删除一致性组service 操作service-disable去激活备份操作backup-export导出卷一致性组consisgroup-list列出所有一致性组service 操作service-enable激活备份操作backup-export导入卷一致性组consisgroup-show查询一致性组详细service 操作service-list所有 service复制replication-promote对备卷升主复制replication-reenable重新启动复制11、Neutron原理11.1、Neutron是什么Neutron是在OpenStack中是提供网络连接服务的11.2、Neutron的逻辑架构#Neutron-Server - Core Plugin - 各种Advanced Service PluginL3 Service Plugin、lB Service Plugin、Firewall、VPN#各种AgentL2 ( ovs-agent )、L3 Agent、DHCP Agent、MetaData AgentL2 Agent二层网络服务提供基础服务部署在所有计算节点L3 Agent三层网络服务提供IP、交换、路由服务根据业务情况部署在网络节点或者计算节点。例如华为云部署在计算节点DHCP AgentDHCP服务Adv Services高级网络服务如负载均衡neutron组件之间通过消息队列通信11.3、Neutron网络虚拟化实现原理在二层网络中即就是虚拟机之间互相通信的网络Vlan100和Vlan200是两个不同的网络因此在三层网络这里使用Vlan100和使用Vlan200的虚拟机即使IP在同一网段也是不能通信的做到了虚拟机间网络隔离。绿色的VM是Vlan 100网络的虚拟机黄色的VM是Vlan 200网络的虚拟机。在服务者视图中可以看到两个绿色的VM并不在一个物理主机上Neutron通过一系列的网络转换功能将两个绿色的VM网络打通。11.4、Neutron物理部署示例Neutron openvswitch-agent部署在每一个计算节点上为虚拟机提供网络连接功能Neutron Server在实际应用中一般会部署到控制节点Neutron ML2 Plugin也是Neutron Server的一部分网络节点只保留Neutron metadata-agent、Neutron L3/dhcp-agentNeutron Server下发网络配置的时候会通过管理平面网络和Neutron openvswitch-agent进行通信然后下发相应配置。当Nova Compute创建的虚拟机执行业务通信的时候会在数据平面网络进行11.5、Neutron的典型操作ObjectOperationMethodURINetworkListGET/v2.0/networksNetworkCreatePOST/v2.0/networksNetworkShowGET/v2.0/networks/{network_id}NetworkUpdatePUT/v2.0/networks/{network_id}NetworkDeleteDELETE/v2.0/networks/{network_id}SubnetListGET/v2.0/subnetsSubnetCreatePOST/v2.0/subnetsSubnetShowGET/v2.0/subnets/{subnet_id}SubnetUpdatePUT/v2.0/subnets/{subnet_id}SubnetDeleteDELETE/v2.0/subnets/{subnet_id}PortListGET/v2.0/portsPortCreatePOST/v2.0/portsPortShowGET/v2.0/ports/{port_id}PortUpdatePUT/v2.0/ports/{port_id}PortDeleteDELETE/v2.0/ports/{port_id}Security-groupListGET/v2.0/security-groupsSecurity-groupCreatePOST/v2.0/security-groupsSecurity-groupShowGET/v2.0/security-groups/{security-groups_id}Security-groupUpdatePUT/v2.0/security-groups/{security-groups_id}Security-groupDeleteDELETE/v2.0/security-groups/{security-groups_id}