您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > nova与Neutron交互
Nova与neutron交互1nova命令先介绍一下nova命令中与网络相关的一些参数。1.1指定网络启动虚机usage:novaboot[--flavorflavor][--imageimage][--image-withkey=value][--boot-volumevolume_id][--snapshotsnapshot_id][--min-countnumber][--max-countnumber][--metakey=value][--filedst-path=src-path][--key-namekey-name][--user-datauser-data][--availability-zoneavailability-zone][--security-groupssecurity-groups][--block-device-mappingdev-name=mapping][--block-devicekey1=value1[,key2=value2...]][--swapswap_size][--ephemeralsize=size[,format=format]][--hintkey=value][--nicnet-id=net-uuid,v4-fixed-ip=ip-addr,v6-fixed-ip=ip-addr,port-id=port-uuid][--config-drivevalue][--poll]name其中,v4/6-fixed-ip不能单独配置,必须和net-id一起配置;在一个--nic中net-id与port-id只能选择一个。命令示例:根据Port-ID启动虚机:#neutronport-createaccd72eb-2cd0-4961-ad67-d028c92e5254--fixed-ipip_address=1.2.3.20#novaboot--flavor100--image18f8b6e1-a957-4d94-a3dd-eca757afdeb9\--nicport-id=10e7e093-156e-402b-9a45-ff8ab13dfb03test_vm_1启动虚机时指定网络,指定IP:#novaboot--flavor100--image18f8b6e1-a957-4d94-a3dd-eca757afdeb9\--nicnet-id=accd72eb-2cd0-4961-ad67-d028c92e5254,v4-fixed-ip=1.2.3.10test_vm_2创建多网络虚机:#novaboot--flavor100--image18f8b6e1-a957-4d94-a3dd-eca757afdeb9\--nicnet-id=accd72eb-2cd0-4961-ad67-d028c92e5254\--nicnet-id=2125e96e-d2a3-42b3-931f-5a90149d0f90test_vm_31.2修改虚机网络nova支持对于active的虚机添加或删除网卡,对应命令如下:interface-attachAttachanetworkinterfacetoaserver.interface-detachDetachanetworkinterfacefromaserver.interface-listListinterfacesattachedtoaserver.用法:novainterface-attach[--port-idport_id][--net-idnet_id][--fixed-ipfixed_ip]servernovainterface-detachserverport_id命令示例:绑定一个端口、网络或者IP地址到虚机:novainterface-attach06fd79d1-99a8-451d-955c-f466b8986f34--port-idc310babc-c833-4b10-9d76-78d60a58af98将port-id从虚机解绑:novainterface-detach8dd2fb5d-30a9-45c7-8931-ba039adcd20f5138a9ce-7114-4126-82e8-8685a6aeccee查看虚机对应的Port端口:[root@node-82~]#novainterface-listf09c0b84-8e5a-4a3d-8da9-7d57d105e0e3+------------+--------------------------------------+--------------------------------------+--------------+-------------------+|PortState|PortID|NetID|IPaddresses|MACAddr|+------------+--------------------------------------+--------------------------------------+--------------+-------------------+|ACTIVE|182b1ed7-beab-46cd-84b1-1daf72f4e266|accd72eb-2cd0-4961-ad67-d028c92e5254|1.2.3.12|fa:16:3e:3f:3a:91||ACTIVE|51b10239-005d-4d20-8d03-269bc85bacc6|2125e96e-d2a3-42b3-931f-5a90149d0f90|1.1.1.32|fa:16:3e:d5:6c:5a|+------------+--------------------------------------+--------------------------------------+--------------+-------------------+2nova介绍2.1Nova服务nova主要服务包括:nova-api:对外提供rest-api。nova-conductor:用于分发消息。nova-scheduler:在创建虚机时,选择计算节点。nova-compute:在计算节点上运行,负责管理虚机的生命周期。3处理流程3.1创建虚机流程用户nova-api1.createVMnova-conductornova-scheduler3.build_instances4.select_destinations5.returnhostsnova-compute6.build_and_run_instance用户创建虚机的命令到达nova-api后,通过rpc发给nova-conductor处理。conductor中,先通过nova-scheduler选择虚机调度到的主机,然后发送到对应主机的nova-compute上进行处理。如下是nova-compute处理虚机创建的详细流程。_allocate_network_async_build_resourcesbuild_and_run_instance开始通过spawn执行_do_build_and_run_instance如果失败,清除网络资源;也可能重新调度。结束记录虚机状态为BUILDING_build_and_run_instance_build_resources总入口:build_and_run_instance开始_build_resources-_build_networks_for_instance是否是重调度通过neutronclient的update_port,更新host信息是否结束_allocate_network异步创建网络_allocate_network_async如果失败,会重试开始_allocate_network_async-allocate_for_instance通过neutron-client获取net/port/sg遍历虚机网络信息列表是否指定port-id是否neutronclient的update_port更新device_iddevice_ownerneutronclient的create_portfixed_ips,network_idadmin_state_up,tenant_id,security_groups,device_id,device_ownerget_instance_nw_info返回NetworkInfomodel类型的列表,包含虚机VIF信息,用于后面的spawn结束spawn13212LibvirtDriver.spawn开始下载image生成xml文件,并写入磁盘_create_domain_and_network结束plug_vifs根据不同的vif_type添加网络。如果是ovs_hybrid,创建qbr/qvb/qvo,并将qvo加入br-int启动虚机。然后等待收到neutron发来的network-vif-plugged事件LibvirtDriver.spawn等待power_state是running3Nova-compute创建虚机过程与网络相关的部分,简要地可以分为几部:1)创建网络资源,此时更新neutronport,或者创建neutronport,返回VIF列表2)libvirtspawn,根据VIF列表,配置虚机底层网络,然后起虚机进程,并等待虚机启动完成。3)ovs-agent捕获到虚机网卡添加到br-int中,发送rpc给plugin更新neutrondbport状态为up。4)neutrondb检测到端口up,发送network-vif-plugevent通知nova端口。日志分析创建虚机,通过查看nova-computedebug日志,可以大致了解虚机启动过程。allocate_for_instance/usr/lib/python2.7/site-packages/nova/network/neutronv2/api.pyGET=2GET=POST{port:{binding:host_id:compute1,admin_state_up:true,network_id:2337cce4-512c-4b36-a5a7-6af99bfe21d2,tenant_id:47227b9865f64869aee959af81caf8dd,device_owner:compute:nova,security_groups:[17be47bc-1629-4266-812f-a0750975f89f],device_id:74f3bd67-4362-477d-b700-c10866dea8a6}}'GET=47227b9865f64869aee959af81caf8dd&device_id=74f3bd67-4362-477d-b700-c10866dea8a6GET=1.1.1.4&port_id=2cbc7875-b460-4c59-b87f-078e1ff1d5b6GET=dd0e
本文标题:nova与Neutron交互
链接地址:https://www.777doc.com/doc-7429010 .html