OpenStack云计算实战第7章课件_第1页
OpenStack云计算实战第7章课件_第2页
OpenStack云计算实战第7章课件_第3页
OpenStack云计算实战第7章课件_第4页
OpenStack云计算实战第7章课件_第5页
已阅读5页,还剩111页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《OpenStack云计算实战》大数据创新人才培养系列第7章人民邮电出版社OpenStack计算服务《OpenStack云计算实战》大数据创新人才培养系列第7章1OpenStack计算服务基础Nova部署架构Nova的元数据工作机制使用和管理计算服务手动安装和部署NovaOpenStack计算服务基础Nova部署架构Nova的元数27.1OpenStack计算服务基础Nova是OpenStack中的计算服务项目,计算实例生命周期的所有活动都由Nova管理。Nova支持创建虚拟机和裸金属服务器(通过使用Ironic),并且有限支持系统容器。Nova需要下列OpenStack其他服务的支持。KeystoneGlanceNeutronCinder和Swift什么是Nova7.1OpenStack计算服务基础Nova是OpenS37.1OpenStack计算服务基础Nova系统架构7.1OpenStack计算服务基础Nova系统架构47.1OpenStack计算服务基础API是客户(Client)访问Nova的HTTP接口。它由nova-api服务实现。nova-api服务接收和响应来自最终用户的计算API请求。nova-api提供了一个集中的可以查询所有API的端点。它作为整个Nova组件的门户,所有对Nova的请求都首先由nova-api处理。nova-api对接收到的HTTPAPI请求会做如下处理:API组件(nova-api服务)(1)检查客户端传入的参数是否合法有效。(2)调用Nova其他服务的处理客户端HTTP请求。(3)格式化Nova其他子服务返回的结果并返回给客户端。7.1OpenStack计算服务基础API是客户(Cli57.1OpenStack计算服务基础Nova调度器类型随机调度器(ChanceScheduler)过滤器调度器(FilterScheduler)缓存调度器(CachingScheduler)过滤器调度器调度过程Scheduler组件7.1OpenStack计算服务基础Nova调度器类型S67.1OpenStack计算服务基础过滤器(Filter)RetryFilter(再审过滤器)AvailabilityZoneFilter(可用区域过滤器)RamFilter(内存过滤器)DiskFilter(磁盘过滤器)CoreFilter(核心过滤器)ComputeFilter(计算过滤器)ComputeCapabilitiesFilter(计算能力过滤器)ImagePropertiesFilter(镜像属性过滤器)ServerGroupAntiAffinityFilter(服务器组反亲和性过滤器)ServerGroupAffinityFilter(服务器组亲和性过滤器)Scheduler组件7.1OpenStack计算服务基础过滤器(Filter77.1OpenStack计算服务基础权重(Weight)nova-scheduler服务可以使用多个过滤器依次进行过滤,过滤之后的节点再通过计算权重选出最适合的能够部署实例的节点。所有的权重实现模块位于nova/scheduler/weights目录。目前nova-scheduler的默认实现是RAMWeighter,根据计算节点空闲的内存量计算权重值,空闲内存越多,权重越大,实例将被部署到当前空闲内存最多的计算节点上。Scheduler组件7.1OpenStack计算服务基础权重(Weight)87.1OpenStack计算服务基础通过Driver(驱动)架构支持多种Hypervisor虚拟机管理器面对多种Hypervisor,nova-compute为这些Hypervisor定义统一的接口.Hypervisor只需要实现这些接口,就可以Driver的形式即插即用到OpenStack系统中Compute组件7.1OpenStack计算服务基础通过Driver(驱97.1OpenStack计算服务基础定期向OpenStack报告计算节点的状态每隔一段时间,nova-compute就会报告当前计算节点的资源使用情况和nova-compute服务状态。nova-compute是通过Hypervisor的驱动获取这些信息的。实现虚拟机实例生命周期的管理OpenStack对虚拟机实例最主要的操作都是通过nova-compute实现的。以实例创建为例来说明nova-compute的实现过程。Compute组件(1)为实例准备资源。(2)创建实例的镜像文件。(3)创建实例的XML定义文件。(4)创建虚拟网络并启动虚拟机。7.1OpenStack计算服务基础定期向OpenSta107.1OpenStack计算服务基础Conductor组件由nova-conductor模块实现,旨在为数据库的访问提供一层安全保障。nova-compute需要获取和更新数据库中虚拟机实例的信息。nova-conductor可以解决这些问题,将nova-compute访问数据库的全部操作都改到nova-conductor中,nova-conductor作为对此数据库操作的一个代理,而且nova-conductor是部署在控制节点上的。nova-conductor也有助于提供数据库访问的性能,nova-compute可以创建多个线程使用RPC(远程过程调用)访问nova-conductor。nova-conductor将nova-compute与数据库分离之后提高了Nova的伸缩性。Conductor组件7.1OpenStack计算服务基础Conductor组117.1OpenStack计算服务基础OpenStack从Newton版本开始引入PlacementAPI,由nova-placement-api服务来实现,旨在追踪记录资源提供者(resourcesprovider)的目录和资源使用情况。被消费的资源类型是按类跟踪的。nova-placement-api服务提供一套标准的资源类(如DISK_GB、MEMORY_MB和VCPU),也支持按需自定义的资源类。PlacementAPI组件7.1OpenStack计算服务基础OpenStack从127.1OpenStack计算服务基础nova-novncproxy守护进程nova-spicehtml5proxy守护进程nova-xvpvncproxy守护进程nova-consoleauth守护进程控制台接口7.1OpenStack计算服务基础nova-novnc137.1OpenStack计算服务基础虚拟机实例化流程(1)首先用户(可以是OpenStack最终用户,也可以是其他程序)执行NovaClient提供的用于创建虚拟机的命令。(2)nova-api服务监听到来自于NovaClient的HTTP请求,并将这些请求转换为AMQP消息之后加入消息队列。(3)通过消息队列调用nova-conductor服务。(4)nova-conductor服务从消息队列中接收到虚拟机实例化请求消息后,进行一些准备工作。(5)nova-conductor服务通过消息队列告诉nova-scheduler服务去选择一个合适的计算节点来创建虚拟机,此时nova-scheduler会读取数据库的内容。(6)nova-conductor服务从nova-scheduler服务得到了合适的将计算节点的信息后,在通过消息队列来通知nova-compute服务实现虚拟机的创建。7.1OpenStack计算服务基础虚拟机实例化流程(114OpenStack计算服务基础Nova部署架构Nova的元数据工作机制使用和管理计算服务手动安装和部署NovaOpenStack计算服务基础Nova部署架构Nova的元数157.2Nova部署架构Nova物理部署Nova经典部署模式Nova负载均衡部署模式7.2Nova部署架构Nova物理部署Nova经典部署模167.2Nova部署架构CellsV2的架构Nova的Cell架构7.2Nova部署架构CellsV2的架构Nova的C177.2Nova部署架构API节点上的数据库nova_api数据库中存放全局信息,这些全局数据表是从nova库迁过来的,如flavor(实例模型)、instancegroups(实例组)、quota(配额)。nova_cell0数据库的模式与nova一样,主要用途就是当实例调度失败时,实例的信息不属于任何一个Cell,因而存放到nova_cell0数据库中。Nova的Cell架构7.2Nova部署架构API节点上的数据库Nova的Ce187.2Nova部署架构Cell部署单Cell部署Nova的Cell架构7.2Nova部署架构Cell部署Nova的Cell架构197.2Nova部署架构Cell部署多Cell部署Nova的Cell架构7.2Nova部署架构Cell部署Nova的Cell架构207.2Nova部署架构Cell管理主要使用nova-managecell_v2命令来管理。下列命令用于查看Cell:nova-managecell_v2list_cells--verbose添加Cell的命令:nova-managecell_v2create_cell--verbose--namecell1--database_connectionmysql+pymysql://nova:magine1989@6/nova_cell1--transport-urlrabbit://guest:guest@6:5672/发现主机:nova-managecell_v2discover_hostsNova的Cell架构7.2Nova部署架构Cell管理Nova的Cell架构21OpenStack计算服务基础Nova部署架构Nova的元数据工作机制使用和管理计算服务手动安装和部署NovaOpenStack计算服务基础Nova部署架构Nova的元数227.3Nova的元数据工作机制OpenStack的实例是基于镜像部署的,镜像中包含了操作系统、最常用的软件(如SSH)以及最通用的配置(如网卡设置)。OpenStack将cloud-init定制虚拟机实例配置时获取的元数据信息元数据(metadata)用户数据(userdata)机制OpenStack将元数据和用户数据的配置信息注入机制配置驱动器(configdrive)机制元数据服务(metadataservice)机制元数据及其注入7.3Nova的元数据工作机制OpenStack的实例是237.3Nova的元数据工作机制SSH密钥注入实现过程元数据及其注入(1)OpenStack创建一个SSH密钥对,将其中的公钥(publickey)存放在OpenStack数据库中,而将私钥(privatekey)提供给用户(可下载)。(2)创建一个实例时选择该SSH密钥对,完成实例创建之后,cloud-init将其中的公钥写入到实例,一般会保存到.ssh/authorized_keys目录中。(3)用户可以用该SSH密钥对的私钥直接登录该实例。7.3Nova的元数据工作机制SSH密钥注入实现过程元数247.3Nova的元数据工作机制实现机制OpenStack将元数据信息写入实例的一个特殊的配置设备中,然后在实例启动时,自动挂载该设备,并由cloud-init读取其中的元数据信息,从而实现配置信息注入。配置驱动器的具体实现会根据Hypervisor的不同和配置有所不同。应用场合如果实例无法通过DHCP正确获取网络信息时,则使用配置驱动器就非常必要。配置驱动器主要用于配置实例的网络信息,包括IP、子网掩码、网关等。对计算主机和镜像的要求使用配置驱动器对计算主机和镜像有一定的要求。配置驱动器7.3Nova的元数据工作机制实现机制配置驱动器257.3Nova的元数据工作机制启用和访问配置驱动器要启用配置驱动器,将--config-drivetrue参数传入到openstackservercreate命令。可以在/etc/nova/nova.conf配置文件中设置以下选项,来设置计算服务在创建实例时默认使用配置驱动器机制。配置驱动器openstackservercreate--config-drivetrue--imagemy-image-name\--flavor1--key-namemykey--user-data./my-user-data.txt\--file/etc/network/interfaces=/home/myuser/instance-interfaces\--fileknown_hosts=/home/myuser/.ssh/known_hosts\--propertyrole=webservers--propertyessential=falseMYINSTANCEforce_config_drive=true7.3Nova的元数据工作机制启用和访问配置驱动器配置驱267.3Nova的元数据工作机制配置驱动器格式配置驱动器默认格式是ISO9660文件系统。可在/etc/nova/nova.conf文件中明确定义。默认情况下不能将配置驱动器镜像作为一个CDROM来替换磁盘驱动器。为添加CDROM,可以在/etc/nova/nova.conf文件中定义。配置驱动器config_drive_format=iso9660config_drive_cdrom=true7.3Nova的元数据工作机制配置驱动器格式配置驱动器c277.3Nova的元数据工作机制元数据服务的基本架构元数据服务7.3Nova的元数据工作机制元数据服务的基本架构元数据287.3Nova的元数据工作机制虚拟机实例获取元数据的大致流程元数据服务(1)实例通过项目网络将元数据请求发送到neutron-ns-metadata-proxy,此时会在请求中添加router-id和network-id。(2)neutron-ns-metadata-proxy通过unixdomainsocket将请求发送给neutron-metadata-agent。此时根据请求中的router-id、network-id和IP,获取端口信息,从而获得instance-id和project-id(tenant-id)并加入到请求中。(3)neutron-metadata-agent通过内部管理网络将请求转发给nova-api-metadata。此时利用instance-id和project-id(tenant-id)获取实例的元数据。(4)将获取的元数据原路返回给发出请求的实例。7.3Nova的元数据工作机制虚拟机实例获取元数据的大致297.3Nova的元数据工作机制计算节点为虚拟机实例使用元数据服务来获取指定实例的数据。元数据和用户数据都可以由实例访问。只有当--user-data选项和包含用户内容的文件被传入到openstackservercreate命令,或者在图形界面通过配置驱动器注入用户数据时,才会出现像user_data这样的用户数据文件,不过user_data不是JSON格式。虚拟机实例访问元数据服务7.3Nova的元数据工作机制计算节点为虚拟机实例使用元30OpenStack计算服务基础Nova部署架构Nova的元数据工作机制使用和管理计算服务手动安装和部署NovaOpenStack计算服务基础Nova部署架构Nova的元数317.4使用和管理计算服务Horizon(Dashboard):OpenStack项目的Web图形界面。OpenStack客户端(openstack):OpenStack项目的命令行。Nova客户端(nova):对于Nova的一些高级特性或管理命令,需要使用该工具。创建和管理服务器(虚拟机实例)的工具7.4使用和管理计算服务Horizon(Dashboar327.4使用和管理计算服务在创建实例之前需要确定以下基本要素源:源是用来创建实例的模板。实例类型:也就是实例规格,定义实例可使用的CPU、内存和存储容量等硬件资源。密钥对:密钥对允许用户使用SSH访问新创建的实例。安全组:通过访问规则定义防火墙策略,控制实例的网络通信。虚拟网络:在云中为实例提供通信通道,可以是提供者网络和私有网络。生成一个SSH密钥对添加安全组规则部署虚拟机实例的前提ssh-keygen-q-N""openstackkeypaircreate--public-key~/.ssh/id_rsa.pubmykeyopenstacksecuritygrouprulecreate--protoicmpdefaultopenstacksecuritygrouprulecreate--prototcp--dst-port22default7.4使用和管理计算服务在创建实例之前需要确定以下基本要337.4使用和管理计算服务实例创建命令创建虚拟机实例openstackservercreate(--image<镜像>|--volume<卷>)--flavor<实例类型>[--security-group<安全组>][--key-name<密钥对>][--property<服务器属性>][--file<目的文件名=源文件名>][--user-data<实例注入文件信息>][--availability-zone<域名>][--block-device-mapping<块设备映射>][--nic<net-id=网络ID,v4-fixed-ip=IP地址,v6-fixed-ip=IPv6地址,port-id=端口UUID,auto,none>][--network<网络>][--port<端口>][--hint<键=值>][--config-drive<配置驱动器卷>|True][--min<创建实例最小数量>][--max<创建实例最大数量>][--wait]<实例名>7.4使用和管理计算服务实例创建命令创建虚拟机实例ope347.4使用和管理计算服务基于镜像或卷创建虚拟机的启动盘选项--image用于指定为实例创建启动盘的镜像文件。选项--volume用于指定为实例创建启动盘的卷(块设备),这个卷必须基于一个云镜像来创建。设置元数据通过选项--property设置实例的属性,以“键=值”形式定义,可以设置多个属性,实际上是注入自定义的元数据。也提供相应的Dashboard图形界面。创建虚拟机实例设置元数据7.4使用和管理计算服务基于镜像或卷创建虚拟机的启动盘创357.4使用和管理计算服务设置用户数据使用选项--user-data设置要注入到虚拟机实例的用户数据文件,实际上是脚本文件。也提供相应的Dashboard图形界面。创建虚拟机实例设置用户数据7.4使用和管理计算服务设置用户数据创建虚拟机实例设置用367.4使用和管理计算服务设置配置驱动器使用选项--config-drive指定某卷作为配置驱动器,如果使用值“true”则表示临时驱动器。。也提供相应的Dashboard图形界面。创建虚拟机实例设置配置驱动器7.4使用和管理计算服务设置配置驱动器创建虚拟机实例设置377.4使用和管理计算服务注入文件使用选项--file设置启动前注入镜像的文件,即将本地的文件存储到虚拟机中。设置块设备映射选项--block-device-mapping设置在实例上创建的块设备映射,也就是增加多个额外的块设备。创建虚拟机实例openstackservercreate--flavorm1.tiny--imagecirros\--nicnet-id=public--security-groupdefault--key-namedemo-key\--file/root/.vimrc=/root/.vimrc--imageid_of_imagecirros2<dev-name>=<id>:<type><size(GB)>:<delete-on-terminate>7.4使用和管理计算服务注入文件创建虚拟机实例opens387.4使用和管理计算服务设置调度器提示使用选项--hint设置调度器。也提供相应的Dashboard图形界面。创建虚拟机实例设置调度器提示7.4使用和管理计算服务设置调度器提示创建虚拟机实例设置397.4使用和管理计算服务实例创建成功后可以通过多种方式访问实例。通过SSH访问Linux实例,通过RDP访问Windows实例。OpenStack也提供了两种远程访问实例桌面的方式:VNC和SPICEHTML5。使用虚拟控制台访问实例访问虚拟机实例openstackconsoleurlshowcirros7.4使用和管理计算服务实例创建成功后可以通过多种方式访407.4使用和管理计算服务在基于Web的Dashboard图形界面中管理虚拟机实例管理虚拟机实例7.4使用和管理计算服务在基于Web的Dashboard417.4使用和管理计算服务基于命令行管理虚拟机实例管理虚拟机实例(1)实例列表openstackserverlist(2)查看实例详情openstackservershow[--diagnostics]<实例名或ID>(3)实例启动openstackserverstart<实例名或ID>[<实例名或ID>...](4)实例暂停及其恢复openstackserverpause<实例名或ID>[<实例名或ID>...](5)实例挂起及其恢复openstackserversuspend<实例名或ID>[<实例名或ID>...](6)实例废弃及其恢复openstackservershelve<实例名或ID>[<实例名或ID>...]7.4使用和管理计算服务基于命令行管理虚拟机实例管理虚拟427.4使用和管理计算服务基于命令行管理虚拟机实例管理虚拟机实例(7)实例关闭openstackserverstop<实例名或ID>[<实例名或ID>...](8)实例重启openstackserverreboot[--hard|--soft][--wait]<实例名或ID>(9)调整实例大小openstackserverresize[--flavor<flavor>|--confirm|--revert][--wait]<实例名或ID>(10)实例删除openstackserverdelete<实例名或ID>[<实例名或ID>...](11)实例修改openstackserverset[--name<新名称>][--root-password][--property<键=值>][--state<状态>]<实例名或ID>7.4使用和管理计算服务基于命令行管理虚拟机实例管理虚拟437.4使用和管理计算服务通过Web界面管理实例类型管理实例类型实例类型列表7.4使用和管理计算服务通过Web界面管理实例类型管理实447.4使用和管理计算服务通过Web界面管理实例类型管理实例类型设置实例类型信息

设置实例类型使用权7.4使用和管理计算服务通过Web界面管理实例类型管理实457.4使用和管理计算服务通过命令行管理实例类型管理实例类型(1)显示实例类型列表openstackflavorlist(2)查看实例类型详情openstackflavorshowFLAVOR_ID(3)创建实例类型openstackflavorcreateFLAVOR_NAME--idFLAVOR_ID\--ramRAM_IN_MB--diskROOT_DISK_IN_GB--vcpusNUMBER_OF_VCPUS(4)设置实例类型使用openstackflavorset命令来修改其参数设置。(5)删除实例类型openstackflavordeleteFLAVOR_ID7.4使用和管理计算服务通过命令行管理实例类型管理实例类467.4使用和管理计算服务使用扩展参数定制实例类型展参数(extraspecs)使用若干键值对定义实例类型可在哪些计算节点上运行。一般用作更高级的实例配置的调度建议。所用的键值对必须符合熟知的选项。实例类型的定制会受到所用Hypervisor的限制。配置I/O限制的示例管理实例类型openstackflavorsetFLAVOR-NAME\--propertyquota:read_bytes_sec=10240000\--propertyquota:write_bytes_sec=102400007.4使用和管理计算服务使用扩展参数定制实例类型管理实例477.4使用和管理计算服务使用Dashboard界面实现密码注入编辑Dashboard的local_settings文件。基于libvirt的Hypervisor的密码注入在/etc/nova/nova.conf配置文件中启用管理员密码注入。为虚拟机实例注入管理员密码OPENSTACK_HYPERVISOR_FEATURES={...'can_set_password':False,}[libvirt]inject_password=true7.4使用和管理计算服务使用Dashboard界面实现密487.4使用和管理计算服务密码注入和Windows镜像(所有的Hypervisor)通过Nova找回密码通过自定义元数据注入密码使用用户数据提交密码修改脚本无密码认证:Nova允许X509密钥对支持Windows的无密码认证设置块设备映射选项--block-device-mapping设置在实例上创建的块设备映射,也就是增加多个额外的块设备。为虚拟机实例注入管理员密码novaboot命令行的用法:novaboot--metaadmin_pass="<密码>"...openstackservercreate命令行的用法:openstackservercreate--propertyadmin_pass="<密码>"...#ps1netuseradmin密码7.4使用和管理计算服务密码注入和Windows镜像(所49OpenStack计算服务基础Nova部署架构Nova的元数据工作机制使用和管理计算服务手动安装和部署NovaOpenStack计算服务基础Nova部署架构Nova的元数507.4手动安装和部署Nova准备工作在控制节点上安装和配置Nova组件(1)创建nova数据库分别创建名为nova_api、nova和nova_cell0的3个数据库。MariaDB[(none)]>CREATEDATABASEnova_api;MariaDB[(none)]>CREATEDATABASEnova;MariaDB[(none)]>CREATEDATABASEnova_cell0;对上述数据库授予合适的账户访问权限。MariaDB[(none)]>GRANTALLPRIVILEGESONnova_api.*TO'nova'@'localhost'\IDENTIFIEDBY'NOVA_DBPASS';MariaDB[(none)]>GRANTALLPRIVILEGESONnova_api.*TO'nova'@'%'\IDENTIFIEDBY'NOVA_DBPASS';(2)创建计算服务凭证后续命令行操作需要管理员身份,首先要加载admin凭据的环境变量。.admin-openrc创建nova用户openstackusercreate--domaindefault--password-promptnova将管理员(admin)角色授予nova用户和service项目。openstackroleadd--projectservice--usernovaadmin7.4手动安装和部署Nova准备工作在控制节点上安装和配517.4手动安装和部署Nova准备工作在控制节点上安装和配置Nova组件(3)创建计算服务的API端点openstackendpointcreate--regionRegionOnecomputepublichttp://controller:8774/v2.1openstackendpointcreate--regionRegionOnecomputeadminhttp://controller:8774/v2.1openstackendpointcreate--regionRegionOnecomputeadminhttp://controller:8774/v2.1(4)创建放置(Placement)服务凭证创建placement用户:openstackusercreate--domaindefault--password-promptplacement将管理员(admin)角色授予placement用户和service项目:openstackroleadd--projectservice--userplacementadmin在服务目录中创建PlacementAPI入口:openstackservicecreate--nameplacement--description"PlacementAPI"placement(5)创建放置服务的API服务端点openstackendpointcreate--regionRegionOneplacementpublichttp://controller:8778openstackendpointcreate--regionRegionOneplacementinternalhttp://controller:8778openstackendpointcreate--regionRegionOneplacementadminhttp://controller:87787.4手动安装和部署Nova准备工作在控制节点上安装和配527.4手动安装和部署Nova安装和配置组件在控制节点上安装和配置Nova组件(1)安装软件包yuminstallopenstack-nova-apiopenstack-nova-conductor\openstack-nova-consoleopenstack-nova-novncproxy\openstack-nova-scheduleropenstack-nova-placement-api(2)编辑/etc/nova/nova.conf配置文件(3)初始化nova-api数据库su-s/bin/sh-c"nova-manageapi_dbsync"nova(4)注册cell0数据库su-s/bin/sh-c"nova-managecell_v2map_cell0"nova(5)创建cell1单元su-s/bin/sh-c"nova-managecell_v2create_cell--name=cell1--verbose"nova(6)初始化nova数据库su-s/bin/sh-c"nova-managedbsync"nova(7)验证nova的cell0和cell1已正确注册nova-managecell_v2list_cells7.4手动安装和部署Nova安装和配置组件在控制节点上安537.4手动安装和部署Nova完成安装在控制节点上安装和配置Nova组件systemctlenableopenstack-nova-api.service\openstack-nova-consoleauth.serviceopenstack-nova-scheduler.service\openstack-nova-conductor.serviceopenstack-nova-novncproxy.servicesystemctlstartopenstack-nova-api.service\openstack-nova-consoleauth.serviceopenstack-nova-scheduler.service\openstack-nova-conductor.serviceopenstack-nova-novncproxy.service7.4手动安装和部署Nova完成安装在控制节点上安装和配547.4手动安装和部署Nova安装和配置组件在计算节点上安装和配置Nova组件(1)安装软件包yuminstallopenstack-nova-compute(2)编辑/etc/nova/nova.conf配置文件7.4手动安装和部署Nova安装和配置组件在计算节点上安557.4手动安装和部署Nova完成安装在计算节点上安装和配置Nova组件(1)确定计算节点是否支持虚拟即的硬件加速egrep-c'(vmx|svm)'/proc/cpuinfo(2)启动计算服务及其依赖,并将其配置开机自动启动。systemctlenablelibvirtd.serviceopenstack-nova-compute.servicesystemctlstartlibvirtd.serviceopenstack-nova-compute.service7.4手动安装和部署Nova完成安装在计算节点上安装和配567.4手动安装和部署Nova将计算节点添加到cell数据库在计算节点上安装和配置Nova组件(1)加载admin凭据的环境变量.admin-openrc(2)确认数据库中有哪些计算主机openstackcomputeservicelist--servicenova-compute(3)注册计算主机:su-s/bin/sh-c"nova-managecell_v2discover_hosts--verbose"nova7.4手动安装和部署Nova将计算节点添加到cell数据57THANKSTHANKS58《OpenStack云计算实战》大数据创新人才培养系列第7章人民邮电出版社OpenStack计算服务《OpenStack云计算实战》大数据创新人才培养系列第7章59OpenStack计算服务基础Nova部署架构Nova的元数据工作机制使用和管理计算服务手动安装和部署NovaOpenStack计算服务基础Nova部署架构Nova的元数607.1OpenStack计算服务基础Nova是OpenStack中的计算服务项目,计算实例生命周期的所有活动都由Nova管理。Nova支持创建虚拟机和裸金属服务器(通过使用Ironic),并且有限支持系统容器。Nova需要下列OpenStack其他服务的支持。KeystoneGlanceNeutronCinder和Swift什么是Nova7.1OpenStack计算服务基础Nova是OpenS617.1OpenStack计算服务基础Nova系统架构7.1OpenStack计算服务基础Nova系统架构627.1OpenStack计算服务基础API是客户(Client)访问Nova的HTTP接口。它由nova-api服务实现。nova-api服务接收和响应来自最终用户的计算API请求。nova-api提供了一个集中的可以查询所有API的端点。它作为整个Nova组件的门户,所有对Nova的请求都首先由nova-api处理。nova-api对接收到的HTTPAPI请求会做如下处理:API组件(nova-api服务)(1)检查客户端传入的参数是否合法有效。(2)调用Nova其他服务的处理客户端HTTP请求。(3)格式化Nova其他子服务返回的结果并返回给客户端。7.1OpenStack计算服务基础API是客户(Cli637.1OpenStack计算服务基础Nova调度器类型随机调度器(ChanceScheduler)过滤器调度器(FilterScheduler)缓存调度器(CachingScheduler)过滤器调度器调度过程Scheduler组件7.1OpenStack计算服务基础Nova调度器类型S647.1OpenStack计算服务基础过滤器(Filter)RetryFilter(再审过滤器)AvailabilityZoneFilter(可用区域过滤器)RamFilter(内存过滤器)DiskFilter(磁盘过滤器)CoreFilter(核心过滤器)ComputeFilter(计算过滤器)ComputeCapabilitiesFilter(计算能力过滤器)ImagePropertiesFilter(镜像属性过滤器)ServerGroupAntiAffinityFilter(服务器组反亲和性过滤器)ServerGroupAffinityFilter(服务器组亲和性过滤器)Scheduler组件7.1OpenStack计算服务基础过滤器(Filter657.1OpenStack计算服务基础权重(Weight)nova-scheduler服务可以使用多个过滤器依次进行过滤,过滤之后的节点再通过计算权重选出最适合的能够部署实例的节点。所有的权重实现模块位于nova/scheduler/weights目录。目前nova-scheduler的默认实现是RAMWeighter,根据计算节点空闲的内存量计算权重值,空闲内存越多,权重越大,实例将被部署到当前空闲内存最多的计算节点上。Scheduler组件7.1OpenStack计算服务基础权重(Weight)667.1OpenStack计算服务基础通过Driver(驱动)架构支持多种Hypervisor虚拟机管理器面对多种Hypervisor,nova-compute为这些Hypervisor定义统一的接口.Hypervisor只需要实现这些接口,就可以Driver的形式即插即用到OpenStack系统中Compute组件7.1OpenStack计算服务基础通过Driver(驱677.1OpenStack计算服务基础定期向OpenStack报告计算节点的状态每隔一段时间,nova-compute就会报告当前计算节点的资源使用情况和nova-compute服务状态。nova-compute是通过Hypervisor的驱动获取这些信息的。实现虚拟机实例生命周期的管理OpenStack对虚拟机实例最主要的操作都是通过nova-compute实现的。以实例创建为例来说明nova-compute的实现过程。Compute组件(1)为实例准备资源。(2)创建实例的镜像文件。(3)创建实例的XML定义文件。(4)创建虚拟网络并启动虚拟机。7.1OpenStack计算服务基础定期向OpenSta687.1OpenStack计算服务基础Conductor组件由nova-conductor模块实现,旨在为数据库的访问提供一层安全保障。nova-compute需要获取和更新数据库中虚拟机实例的信息。nova-conductor可以解决这些问题,将nova-compute访问数据库的全部操作都改到nova-conductor中,nova-conductor作为对此数据库操作的一个代理,而且nova-conductor是部署在控制节点上的。nova-conductor也有助于提供数据库访问的性能,nova-compute可以创建多个线程使用RPC(远程过程调用)访问nova-conductor。nova-conductor将nova-compute与数据库分离之后提高了Nova的伸缩性。Conductor组件7.1OpenStack计算服务基础Conductor组697.1OpenStack计算服务基础OpenStack从Newton版本开始引入PlacementAPI,由nova-placement-api服务来实现,旨在追踪记录资源提供者(resourcesprovider)的目录和资源使用情况。被消费的资源类型是按类跟踪的。nova-placement-api服务提供一套标准的资源类(如DISK_GB、MEMORY_MB和VCPU),也支持按需自定义的资源类。PlacementAPI组件7.1OpenStack计算服务基础OpenStack从707.1OpenStack计算服务基础nova-novncproxy守护进程nova-spicehtml5proxy守护进程nova-xvpvncproxy守护进程nova-consoleauth守护进程控制台接口7.1OpenStack计算服务基础nova-novnc717.1OpenStack计算服务基础虚拟机实例化流程(1)首先用户(可以是OpenStack最终用户,也可以是其他程序)执行NovaClient提供的用于创建虚拟机的命令。(2)nova-api服务监听到来自于NovaClient的HTTP请求,并将这些请求转换为AMQP消息之后加入消息队列。(3)通过消息队列调用nova-conductor服务。(4)nova-conductor服务从消息队列中接收到虚拟机实例化请求消息后,进行一些准备工作。(5)nova-conductor服务通过消息队列告诉nova-scheduler服务去选择一个合适的计算节点来创建虚拟机,此时nova-scheduler会读取数据库的内容。(6)nova-conductor服务从nova-scheduler服务得到了合适的将计算节点的信息后,在通过消息队列来通知nova-compute服务实现虚拟机的创建。7.1OpenStack计算服务基础虚拟机实例化流程(172OpenStack计算服务基础Nova部署架构Nova的元数据工作机制使用和管理计算服务手动安装和部署NovaOpenStack计算服务基础Nova部署架构Nova的元数737.2Nova部署架构Nova物理部署Nova经典部署模式Nova负载均衡部署模式7.2Nova部署架构Nova物理部署Nova经典部署模747.2Nova部署架构CellsV2的架构Nova的Cell架构7.2Nova部署架构CellsV2的架构Nova的C757.2Nova部署架构API节点上的数据库nova_api数据库中存放全局信息,这些全局数据表是从nova库迁过来的,如flavor(实例模型)、instancegroups(实例组)、quota(配额)。nova_cell0数据库的模式与nova一样,主要用途就是当实例调度失败时,实例的信息不属于任何一个Cell,因而存放到nova_cell0数据库中。Nova的Cell架构7.2Nova部署架构API节点上的数据库Nova的Ce767.2Nova部署架构Cell部署单Cell部署Nova的Cell架构7.2Nova部署架构Cell部署Nova的Cell架构777.2Nova部署架构Cell部署多Cell部署Nova的Cell架构7.2Nova部署架构Cell部署Nova的Cell架构787.2Nova部署架构Cell管理主要使用nova-managecell_v2命令来管理。下列命令用于查看Cell:nova-managecell_v2list_cells--verbose添加Cell的命令:nova-managecell_v2create_cell--verbose--namecell1--database_connectionmysql+pymysql://nova:magine1989@6/nova_cell1--transport-urlrabbit://guest:guest@6:5672/发现主机:nova-managecell_v2discover_hostsNova的Cell架构7.2Nova部署架构Cell管理Nova的Cell架构79OpenStack计算服务基础Nova部署架构Nova的元数据工作机制使用和管理计算服务手动安装和部署NovaOpenStack计算服务基础Nova部署架构Nova的元数807.3Nova的元数据工作机制OpenStack的实例是基于镜像部署的,镜像中包含了操作系统、最常用的软件(如SSH)以及最通用的配置(如网卡设置)。OpenStack将cloud-init定制虚拟机实例配置时获取的元数据信息元数据(metadata)用户数据(userdata)机制OpenStack将元数据和用户数据的配置信息注入机制配置驱动器(configdrive)机制元数据服务(metadataservice)机制元数据及其注入7.3Nova的元数据工作机制OpenStack的实例是817.3Nova的元数据工作机制SSH密钥注入实现过程元数据及其注入(1)OpenStack创建一个SSH密钥对,将其中的公钥(publickey)存放在OpenStack数据库中,而将私钥(privatekey)提供给用户(可下载)。(2)创建一个实例时选择该SSH密钥对,完成实例创建之后,cloud-init将其中的公钥写入到实例,一般会保存到.ssh/authorized_keys目录中。(3)用户可以用该SSH密钥对的私钥直接登录该实例。7.3Nova的元数据工作机制SSH密钥注入实现过程元数827.3Nova的元数据工作机制实现机制OpenStack将元数据信息写入实例的一个特殊的配置设备中,然后在实例启动时,自动挂载该设备,并由cloud-init读取其中的元数据信息,从而实现配置信息注入。配置驱动器的具体实现会根据Hypervisor的不同和配置有所不同。应用场合如果实例无法通过DHCP正确获取网络信息时,则使用配置驱动器就非常必要。配置驱动器主要用于配置实例的网络信息,包括IP、子网掩码、网关等。对计算主机和镜像的要求使用配置驱动器对计算主机和镜像有一定的要求。配置驱动器7.3Nova的元数据工作机制实现机制配置驱动器837.3Nova的元数据工作机制启用和访问配置驱动器要启用配置驱动器,将--config-drivetrue参数传入到openstackservercreate命令。可以在/etc/nova/nova.conf配置文件中设置以下选项,来设置计算服务在创建实例时默认使用配置驱动器机制。配置驱动器openstackservercreate--config-drivetrue--imagemy-image-name\--flavor1--key-namemykey--user-data./my-user-data.txt\--file/etc/network/interfaces=/home/myuser/instance-interfaces\--fileknown_hosts=/home/myuser/.ssh/known_hosts\--propertyrole=webservers--propertyessential=falseMYINSTANCEforce_config_drive=true7.3Nova的元数据工作机制启用和访问配置驱动器配置驱847.3Nova的元数据工作机制配置驱动器格式配置驱动器默认格式是ISO9660文件系统。可在/etc/nova/nova.conf文件中明确定义。默认情况下不能将配置驱动器镜像作为一个CDROM来替换磁盘驱动器。为添加CDROM,可以在/etc/nova/nova.conf文件中定义。配置驱动器config_drive_format=iso9660config_drive_cdrom=true7.3Nova的元数据工作机制配置驱动器格式配置驱动器c857.3Nova的元数据工作机制元数据服务的基本架构元数据服务7.3Nova的元数据工作机制元数据服务的基本架构元数据867.3Nova的元数据工作机制虚拟机实例获取元数据的大致流程元数据服务(1)实例通过项目网络将元数据请求发送到neutron-ns-metadata-proxy,此时会在请求中添加router-id和network-id。(2)neutron-ns-metadata-proxy通过unixdomainsocket将请求发送给neutron-metadata-agent。此时根据请求中的router-id、network-id和IP,获取端口信息,从而获得instance-id和project-id(tenant-id)并加入到请求中。(3)neutron-metadata-agent通过内部管理网络将请求转发给nova-api-metadata。此时利用instance-id和project-id(tenant-id)获取实例的元数据。(4)将获取的元数据原路返回给发出请求的实例。7.3Nova的元数据工作机制虚拟机实例获取元数据的大致877.3Nova的元数据工作机制计算节点为虚拟机实例使用元数据服务来获取指定实例的数据。元数据和用户数据都可以由实例访问。只有当--user-data选项和包含用户内容的文件被传入到openstackservercreate命令,或者在图形界面通过配置驱动器注入用户数据时,才会出现像user_data这样的用户数据文件,不过user_data不是JSON格式。虚拟机实例访问元数据服务7.3Nova的元数据工作机制计算节点为虚拟机实例使用元88OpenStack计算服务基础Nova部署架构Nova的元数据工作机制使用和管理计算服务手动安装和部署NovaOpenStack计算服务基础Nova部署架构Nova的元数897.4使用和管理计算服务Horizon(Dashboard):OpenStack项目的Web图形界面。OpenStack客户端(openstack):OpenStack项目的命令行。Nova客户端(nova):对于Nova的一些高级特性或管理命令,需要使用该工具。创建和管理服务器(虚拟机实例)的工具7.4使用和管理计算服务Horizon(Dashboar907.4使用和管理计算服务在创建实例之前需要确定以下基本要素源:源是用来创建实例的模板。实例类型:也就是实例规格,定义实例可使用的CPU、内存和存储容量等硬件资源。密钥对:密钥对允许用户使用SSH访问新创建的实例。安全组:通过访问规则定义防火墙策略,控制实例的网络通信。虚拟网络:在云中为实例提供通信通道,可以是提供者网络和私有网络。生成一个SSH密钥对添加安全组规则部署虚拟机实例的前提ssh-keygen-q-N""openstackkeypaircreate--public-key~/.ssh/id_rsa.pubmykeyopenstacksecuritygrouprulecreate--protoicmpdefaultopenstacksecuritygrouprulecreate--prototcp--dst-port22default7.4使用和管理计算服务在创建实例之前需要确定以下基本要917.4使用和管理计算服务实例创建命令创建虚拟机实例openstackservercreate(--image<镜像>|--volume<卷>)--flavor<实例类型>[--security-group<安全组>][--key-name<密钥对>][--property<服务器属性>][--file<目的文件名=源文件名>][--user-data<实例注入文件信息>][--availability-zone<域名>][--block-device-mapping<块设备映射>][--nic<net-id=网络ID,v4-fixed-ip=IP地址,v6-fixed-ip=IPv6地址,port-id=端口UUID,auto,none>][--network<网络>][--port<端口>][--hint<键=值>][--config-drive<配置驱动器卷>|True][--min<创建实例最小数量>][--max<创建实例最大数量>][--wait]<实例名>7.4使用和管理计算服务实例创建命令创建虚拟机实例ope927.4使用和管理计算服务基于镜像或卷创建虚拟机的启动盘选项--image用于指定为实例创建启动盘的镜像文件。选项--volume用于指定为实例创建启动盘的卷(块设备),这个卷必须基于一个云镜像来创建。设置元数据通过选项--property设置实例的属性,以“键=值”形式定义,可以设置多个属性,实际上是注入自定义的元数据。也提供相应的Dashboard图形界面。创建虚拟机实例设置元数据7.4使用和管理计算服务基于镜像或卷创建虚拟机的启动盘创937.4使用和管理计算服务设置用户数据使用选项--user-data设置要注入到虚拟机实例的用户数据文件,实际上是脚本文件。也提供相应的Dashboard图形界面。创建虚拟机实例设置用户数据7.4使用和管理计算服务设置用户数据创建虚拟机实例设置用947.4使用和管理计算服务设置配置驱动器使用选项--config-drive指定某卷作为配置驱动器,如果使用值“true”则表示临时驱动器。。也提供相应的Dashboard图形界面。创建虚拟机实例设置配置驱动器7.4使用和管理计算服务设置配置驱动器创建虚拟机实例设置957.4使用和管理计算服务注入文件使用选项--file设置启动前注入镜像的文件,即将本地的文件存储到虚拟机中。设置块设备映射选项--block-device-mapping设置在实例上创建的块设备映射,也就是增加多个额外的块设备。创建虚拟机实例openstackservercreate--flavorm1.tiny--imagecirros\--nicnet-id=public--security-groupdefault--key-namedemo-key\--file/root/.vimrc=/root/.vimrc--imageid_of_imagecirros2<dev-name>=<id>:<type><size(GB)>:<delete-on-terminate>7.4使用和管理计算服务注入文件创建虚拟机实例opens967.4使用和管理计算服务设置调度器提示使用选项--hint设置调度器。也提供相应的Dashboard图形界面。创建虚拟机实例设置调度器提示7.4使用和管理计算服务设置调度器提示创建虚拟机实例设置977.4使用和管理计算服务实例创建成功后可以通过多种方式访问实例。通过SSH访问Linux实例,通过RDP访问Windows实例。OpenStack也提供了两种远程访问实例桌面的方式:VNC和SPICEHTML5。使用虚拟控制台访问实例访问虚拟机实例openstackconsoleurlshowcirros7.4使用和管理计算服务实例创建成功后可以通过多种方式访987.4使用和管理计算服务在基于Web的Dashboard图形界面中管理虚拟机实例管理虚拟机实例7.4使用和管理计算服务在基于Web的Dashboard997.4使用和管理计算服务基于命令行管理虚拟机实例管理虚拟机实例(1)实例列表openstackserverlist(2)查看实例详情openstackservershow[--diagnostics]<实例名或ID>(3)实例启动openstackserverstart<实例名或ID>[<实例名或ID>...](4)实例暂停及其恢复openstackserverpause<实例名或ID>[<实例名或ID>...](5)实例挂起及其恢复openstackserversuspend<实例名或ID>[<实例名或ID>...](6)实例废弃及其恢复openstackservershelve<实例名或ID>[<实例名或ID>...]7.4使用和管理计算服务基于命令行管理虚拟机实例管理虚拟1007.4使用和管理计算服务基于命令行管理虚拟机实例管理虚拟机实例(7)实例关闭openstackserverstop<实例名或ID>[<实例名或ID>...](8)实例重启openstackserverreboot[--hard

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论