云计算openstack——虚拟机获取不到ip(13)

摘要:
1、 现象描述:在openstack平台中创建虚拟机后,虚拟机在网页上显示已获得IP地址,但打开虚拟机控制台后,会检查网络状态。虚拟机没有IP地址。下图是故障截图:II。分析思路:(1)检查中立服务的状态,确保dchp服务正常运行root@controller22:15:11~#中微子列表中微子CL已弃用并将被删除
一、现象描述:

openstack平台中创建虚拟机后,虚拟机在web页面中显示获取到了ip,但是打开虚拟机控制台后查看网络状态,虚拟机没有ip地址,下图为故障截图:

云计算openstack——虚拟机获取不到ip(13)第1张

云计算openstack——虚拟机获取不到ip(13)第2张

二、分析思路:

(1)查看neutron服务状态,确保dchp服务正常运行

root@controller22:15:11~#neutron agent-list
neutron CLI is deprecated and will be removed inthe future. Use openstack CLI instead.
+--------------------------------------+--------------------+------------+-------------------+-------+----------------+---------------------------+
| id                                   | agent_type         | host       | availability_zone | alive | admin_state_up | binary                    |
+--------------------------------------+--------------------+------------+-------------------+-------+----------------+---------------------------+
| 3812cb30-7440-4080-bd75-9634687937f6 | DHCP agent         | controller | nova              | :-)   | True           | neutron-dhcp-agent        |
| 51a30db0-9525-42de-b5d8-6b04e2a13baf | Open vSwitch agent | storage    |                   | :-)   | True           | neutron-openvswitch-agent |
| 63416b42-376b-4576-b89d-12694faa2bf9 | L3 agent           | controller | nova              | :-)   | True           | neutron-l3-agent          |
| 7ce3b592-240f-4090-bf09-9a7ecbfa7d3c | Open vSwitch agent | controller |                   | :-)   | True           | neutron-openvswitch-agent |
| 851ccdd9-ff14-4e8f-971c-9343787ef056 | Open vSwitch agent | compute    |                   | :-)   | True           | neutron-openvswitch-agent |
| 8c458dca-a306-4882-a851-1c47a19ab3c1 | Metadata agent     | controller |                   | :-)   | True           | neutron-metadata-agent    |
+--------------------------------------+--------------------+------------+-------------------+-------+----------------+---------------------------+root@controller22:16:24~#

(2)查看dnsmsp进程是否正常

root@controller22:48:28/var/log/neutron#ps aux | grepdnsmasq
nobody   28488  0.0  0.0  53888  1164 ?        S    21:51   0:00 dnsmasq --no-hosts --no-resolv --strict-order --except-interface=lo --pid-file=/var/lib/neutron/dhcp/1a426ffe-2bf0-4785-96a5-74402004a17b/pid --dhcp-hostsfile=/var/lib/neutron/dhcp/1a426ffe-2bf0-4785-96a5-74402004a17b/host --addn-hosts=/var/lib/neutron/dhcp/1a426ffe-2bf0-4785-96a5-74402004a17b/addn_hosts --dhcp-optsfile=/var/lib/neutron/dhcp/1a426ffe-2bf0-4785-96a5-74402004a17b/opts --dhcp-leasefile=/var/lib/neutron/dhcp/1a426ffe-2bf0-4785-96a5-74402004a17b/leases --dhcp-match=set:ipxe,175 --bind-interfaces --interface=tap2c7d9cb9-96 --dhcp-range=set:tag0,172.16.0.0,static,86400s --dhcp-option-force=option:mtu,1450 --dhcp-lease-max=65536 --conf-file= --domain=openstacklocal
root     30314  0.0  0.0 112724   988 pts/0    R+   22:48   0:00 grep --color=auto dnsmasq
root@controller22:48:52/var/log/neutron#

(3)检查ovs网桥中的 br-int 集成网桥是否有 tap设备 连接到了dchp-agent 的 namesapce上

root@controller22:16:29~#ovs-vsctl show
552eea67-4365-410a-b683-644af569c52d
    Manager "ptcp:6640:127.0.0.1"is_connected: trueBridge br-ex
        Port "eth2"Interface "eth2"Port br-ex
            Interface br-ex
                type: internal
        Port "qg-91819abf-e1"Interface "qg-91819abf-e1"type: internal
    Bridge br-intController "tcp:127.0.0.1:6633"is_connected: truefail_mode: secure
        Port "tap2c7d9cb9-96"tag: 2Interface "tap2c7d9cb9-96"type: internal
        Port br-intInterface br-inttype: internal
        Port patch-tun
            Interface patch-tun
                type: patchoptions: {peer=patch-int}
        Port "qr-4056447b-ea"tag: 1Interface "qr-4056447b-ea"type: internal
    Bridge br-tun
        Controller "tcp:127.0.0.1:6633"is_connected: truefail_mode: secure
        Port "vxlan-c0a8fe97"Interface "vxlan-c0a8fe97"type: vxlan
                options: {df_default="true", in_key=flow, local_ip="192.168.254.150", out_key=flow, remote_ip="192.168.254.151"}
        Port patch-intInterface patch-inttype: patchoptions: {peer=patch-tun}
        Port br-tun
            Interface br-tun
                type: internal
    ovs_version: "2.9.0"root@controller22:16:48~#i

在dhcp命名空间中找到对应网络的 namespace 中找到 br-int 网桥上对应的tap 设备,然后查看 ip 配置:

root@controller22:26:29/var/log/neutron#ip netns show
qrouter-3028515a-106a-4d77-b2bb-edd34ddbc7c7 (id: 1)
qdhcp-1a426ffe-2bf0-4785-96a5-74402004a17b (id: 0)
root@controller22:26:44/var/log/neutron#
root@controller22:27:14/var/log/neutron#
root@controller22:27:14/var/log/neutron#ip netns exec qdhcp-1a426ffe-2bf0-4785-96a5-74402004a17b ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128scope host 
       valid_lft forever preferred_lft forever
15: tap2c7d9cb9-96: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN group default qlen 1000link/ether fa:16:3e:18:16:47brd ff:ff:ff:ff:ff:ff
    inet 172.16.199.10/16 brd 172.16.255.255 scope global tap2c7d9cb9-96valid_lft forever preferred_lft forever
    inet 169.254.169.254/16 brd 169.254.255.255 scope global tap2c7d9cb9-96valid_lft forever preferred_lft forever
    inet6 fe80::f816:3eff:fe18:1647/64scope link 
       valid_lft forever preferred_lft forever
root@controller22:27:47/var/log/neutron#
三、定位问题:

通过以上排查思路分析,br-int 上是有 tap设备 连接到了dhcp-namespace 中,但却是外部网络的dhcp服务ip,没有发现虚拟机所连接的192.168.168.0/24的dhcp-namespace

四、故障处理流程:

(1)找到对应网络的subnet,把 dchp 功能启用,打对勾

云计算openstack——虚拟机获取不到ip(13)第3张

(2)然后到 subnet 中查看时候有 dhcp 端口且有ip,并检查 dhcp-namespace 中的 tap设备是否有了ip

云计算openstack——虚拟机获取不到ip(13)第4张

(3)在次查看namespace发现多了一个dhcp-namespace

root@controller23:26:15/var/log/neutron#ip netns show
qdhcp-cb06eada-2249-46e7-bcd8-c9c07937231d (id: 2)
qrouter-3028515a-106a-4d77-b2bb-edd34ddbc7c7 (id: 1)
qdhcp-1a426ffe-2bf0-4785-96a5-74402004a17b (id: 0)

(4)查看dhcp-namespace的 ip 配置,正好是dhcp的服务ip

root@controller23:26:20/var/log/neutron#ip netns exec qdhcp-cb06eada-2249-46e7-bcd8-c9c07937231d ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128scope host 
       valid_lft forever preferred_lft forever
21: tap865fcb34-fc: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN group default qlen 1000link/ether fa:16:3e:ce:2f:9b brd ff:ff:ff:ff:ff:ff
    inet 192.168.168.2/24 brd 192.168.168.255 scope global tap865fcb34-fc
       valid_lft forever preferred_lft forever
    inet 169.254.169.254/16 brd 169.254.255.255 scope global tap865fcb34-fc
       valid_lft forever preferred_lft forever
    inet6 fe80::f816:3eff:fece:2f9b/64scope link 
       valid_lft forever preferred_lft forever
root@controller23:26:54/var/log/neutron#

(5)重启虚拟机虚拟机,发现获取到 ip 了

云计算openstack——虚拟机获取不到ip(13)第5张

五、总结

在创建虚拟机下发请求后,dnsmasq进程会给虚拟机分配好mac地址和ip地址,并写入到/var/lib/neutron/dhcp/network-id 目录下的host文件中。虚拟机在内网中发送广播来获取ip的过程中,dnsmasq 会监听到然后将host文件中的对应ip通过dchp-namespace分配给虚拟机。

所以,在虚拟机获取ip过程中,必须虚拟机发出的包可以到达dhcp-namespace 经过的虚拟网络设备都存在且正常工作。

如果没有在subnet中开启上述的dhcp功能,那就少了一个对应网络的name-sapce dhcp服务了,所以虚拟机获取不到 ip。

免责声明:文章转载自《云计算openstack——虚拟机获取不到ip(13)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Kafka实战宝典:如何跨机房传输数据WiFi密码破解详细图文教程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

内网开发机虚拟化(kvm+qemu)

CentOS 7 安装 a. U盘安装,请选择minimal版本。(DVD那个版本,后面需要把DVD的iso还要放在u盘目录下,但DVD超过4G,用ntfs不好搞) b. 制作启动盘,Mac可用unetbootin,win下可以用大白菜那个启动u盘制作工具,把iso写入u盘,同时把iso原始文件复制到u盘目录下 c. 机器插上u盘启动 d. 启动菜单按ta...

【摘】把vmware的虚拟机硬盘vmdk文件分割成多个2G文件

vmware在host为ntfs的文件系统中创建虚拟机时,虚拟硬盘可指定为一个大的vmdk文件。但如果把这个虚拟机复制到FAT32的文件系统中后,可能将不能启动,提示如下错误信息: VMware Workstation 无法打开该虚拟机所需的一个虚拟磁盘,因为它的大小大于主机文件系统支持的最大大小。某些远程文件系统不支持大于 2 GB 的文件,即使服务器上...

交换机修改IP地址池租约时间

具体思路: 进入地址池视图,使用expired命令修改时间。 1.telnet 登录交换机 2.查看当前配置 dis cu 3.找到dhcp server ip-pool XXX XXX就是地址池名字 4.system-view 进入系统视图 5.dhcp server ip-pool XXX 进入地址池视图 6.expired day 0 hour 5...

JVM(三)JVM对象创建与内存分配机制学习

一、对象创建的过程 我们先画一个流程图来看一下对象在创建的过程中,经历了哪些步骤: 类加载检查   虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那就会先执行相应的类加载过程。 分配内存   在类加载检查通过后,接下来虚拟机将为新生对象...

openstack计算节点的zone划分

初步了解了一些openstack zone的使用方法,觉得比较实用,在此分享给大家: # nova aggregate-list   Print a list of all aggregates.   # nova aggregate-create <name> <availability-zone>   Create a new...

Redhat6.x下如何制作虚拟机快照和镜像封装

一、虚拟机快照 1、确认你的物理机上的vg还有足够的剩余空间 [root@hacker ~]# vgsVG #PV #LV #SN Attr VSize VFree vg_hacker 1 6 4 wz--n- 95.80g 57.80g 2、建立一个至少4G(此处以8G为例)的lv逻辑卷,将虚拟机装在此逻辑卷中 [root@hacker ~]# lvcr...