nova与neutron交互

1     nova命令

先介绍一下nova命令中与网络相关的一些参数。

 

1.1   指定网络启动虚机

usage: nova boot [--flavor <flavor>] [--image <image>]

                 [--image-with <key=value>] [--boot-volume <volume_id>]

                 [--snapshot <snapshot_id>] [--min-count <number>]

                 [--max-count <number>] [--meta <key=value>]

                 [--file <dst-path=src-path>] [--key-name <key-name>]

                 [--user-data <user-data>]

                 [--availability-zone <availability-zone>]

                 [--security-groups <security-groups>]

                 [--block-device-mapping <dev-name=mapping>]

                 [--block-device key1=value1[,key2=value2...]]

                 [--swap <swap_size>]

                 [--ephemeral size=<size>[,format=<format>]]

                 [--hint <key=value>]

                 [--nic <net-id=net-uuid,v4-fixed-ip=ip-addr,v6-fixed-ip=ip-addr,port-id=port-uuid>]

                 [--config-drive <value>] [--poll]

                 <name>

 

其中,v4/6-fixed-ip不能单独配置,必须和net-id一起配置;在一个--nic中net-id与port-id只能选择一个。

 

命令示例:

根据Port-ID启动虚机:

# neutron port-create  accd72eb-2cd0-4961-ad67-d028c92e5254  --fixed-ip ip_address=1.2.3.20

# nova boot --flavor 100 --image 18f8b6e1-a957-4d94-a3dd-eca757afdeb9  \

  --nic port-id=10e7e093-156e-402b-9a45-ff8ab13dfb03 test_vm_1

 

启动虚机时指定网络,指定IP:

# nova boot --flavor 100 --image 18f8b6e1-a957-4d94-a3dd-eca757afdeb9 \

  --nic net-id=accd72eb-2cd0-4961-ad67-d028c92e5254,v4-fixed-ip=1.2.3.10 test_vm_2

 

创建多网络虚机:

# nova boot --flavor 100 --image 18f8b6e1-a957-4d94-a3dd-eca757afdeb9 \

  --nic net-id=accd72eb-2cd0-4961-ad67-d028c92e5254 \

  --nic net-id= 2125e96e-d2a3-42b3-931f-5a90149d0f90 test_vm_3

 

 

1.2   修改虚机网络

nova支持对于active的虚机添加或删除网卡,对应命令如下:

 

interface-attach            Attach a network interface to a server.

interface-detach            Detach a network interface from a server.

interface-list              List interfaces attached to a server.

 

用法:

nova interface-attach [--port-id <port_id>] [--net-id <net_id>]

                             [--fixed-ip <fixed_ip>]

                             <server>

nova interface-detach <server> <port_id>

 

命令示例:

 

绑定一个端口、网络或者IP地址到虚机:

nova interface-attach 06fd79d1-99a8-451d-955c-f466b8986f34 --port-id c310babc-c833-4b10-9d76-78d60a58af98

将port-id从虚机解绑:

nova interface-detach 8dd2fb5d-30a9-45c7-8931-ba039adcd20f  5138a9ce-7114-4126-82e8-8685a6aeccee

 

查看虚机对应的Port端口:

[root@node-82 ~]# nova interface-list   f09c0b84-8e5a-4a3d-8da9-7d57d105e0e3

+------------+--------------------------------------+--------------------------------------+--------------+-------------------+

| Port State | Port ID                              | Net ID                               | IP addresses | MAC Addr          |

+------------+--------------------------------------+--------------------------------------+--------------+-------------------+

| 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 |

+------------+--------------------------------------+--------------------------------------+--------------+-------------------+

2     nova介绍

2.1   Nova服务

nova主要服务包括:

nova-api:对外提供rest-api。

nova-conductor:用于分发消息。

nova-scheduler:在创建虚机时,选择计算节点。

nova-compute:在计算节点上运行,负责管理虚机的生命周期。

 

3     处理流程

3.1   创建虚机流程


用户创建虚机的命令到达nova-api后,通过rpc发给nova-conductor处理。conductor中,先通过nova-scheduler选择虚机调度到的主机,然后发送到对应主机的nova-compute上进行处理。

 

如下是nova-compute处理虚机创建的详细流程。

 

与网络相关的部分,简要地可以分为几部:

1)  创建网络资源,此时更新neutron port,或者创建neutron port,返回VIF列表

2)  libvirt spawn,根据VIF列表,配置虚机底层网络,然后起虚机进程,并等待虚机启动完成。

3)  ovs-agent捕获到虚机网卡添加到br-int中,发送rpc给plugin更新neutron db port状态为up。

4)  neutron db检测到端口up,发送network-vif-plug event通知nova端口。

 

l  日志分析

创建虚机,通过查看nova-computedebug日志,可以大致了解虚机启动过程。

allocate_for_instance /usr/lib/python2.7/site-packages/nova/network/neutronv2/api.py

GET http://controller:9696/v2.0/networks.json?id=2

GET http://controller:9696/v2.0/security-groups.json?tenant_id=

 POST http://controller:9696/v2.0/ports.json

'{"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 http://controller:9696/v2.0/ports.json?tenant_id=47227b9865f64869aee959af81caf8dd&device_id=74f3bd67-4362-477d-b700-c10866dea8a6

GET http://controller:9696/v2.0/floatingips.json?fixed_ip_address=1.1.1.4&port_id=2cbc7875-b460-4c59-b87f-078e1ff1d5b6

GET 

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
neutron私有云网络的配置可以通过以下步骤进行: 1. 在控制节点上,使用以下命令来初始化数据并检测数据的情况: ```shell su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron mysql -u neutron -pNEUTRON_CXK_DBPASS -e "use neutron;show tables;" ``` 这些命令将执行数据初始化并检查数据库表的存在情况。`部分,并进行以下配置: ```shell [neutron] url = http://vip:9696 auth_url = http://vip:5000 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = neutron password = NEUTRON_CXK_PASS ``` 在这些配置中,根据实际情况修改`url`、`auth_url`、`project_name`、`username`和`password`等参数,以确保nova服务与neutron服务可以正确进行交互。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [企业自建私有云-openstack-neutron网络服务(控制节点)](https://blog.csdn.net/qq_39122260/article/details/124410263)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [企业自建私有云-openstack-neutron网络服务(计算节点=网络节点)](https://blog.csdn.net/qq_39122260/article/details/124410483)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值