OpenStack Nova 安装后的 FlatManager 网络配置

这篇在 Ubuntu 上安装和配置 OpenStack Nova 的评论比较多,至少有6位网友遇到 ping 不通的问题,说实话 ping 不通的原因有很多(最常见的是 euca-authorize 授权问题),如果没有提供有用信息只是留下一句“ping 不通”很难判断问题所在,建议大家以后留言的时候尽量把自己的情况说清楚,尽量多的提供一些信息。OpenStack Nova 的网络设置很复杂,controller 上可以有多个网卡,compute 上也可以有多网卡,controller 和 compute 的网络设置还可以不同,并且每个设置还可以分为 FlatManager, FlatDHCPManager, VlanManager,每个 project 允许不同的网络设置,并且每个 user 可以创建多个 project 和 network,晕了吧-~

这里只介绍最简单的一种情况,只有一个网卡、一个 user 创建一个 project 和 network、直接使用现有的局域网 IP 地址不干扰现有网络。就是说把安装好的 OpenStack Nova Controller/Compute 并入到现有的局域网里,在 Nova 上创建的 instance 通过 bridge 使用现有局域网的 IP(而不是另建一个私有网络)。比如 VPSee 实验室现在已经有了 172.16.38.0/23 这个网络,如何利用这个网络和配置 OpenStack Nova 呢?

先检查一下 Nova 的配置文件:

$ sudo vi /etc/nova/nova.conf
--logdir=/var/log/nova
--state_path=/var/lib/nova
--lock_path=/var/lock/nova
--verbose
--s3_host=172.16.39.111
--rabbit_host=172.16.39.111
--cc_host=172.16.39.111
--ec2_url=http://172.16.39.111:8773/services/Cloud
--FAKE_subdomain=ec2
--sql_connection=mysql://root:vpsee@172.16.39.111/nova
--glance_host=172.16.39.111
--image_service=nova.image.glance.GlanceImageService
--my_ip=172.16.39.111
--network_manager=nova.network.manager.FlatManager
--fixed_range=172.16.38.0/23
--num_networks=1
--flat_injected=true

看看 bridge 网卡配置是否正确:

$ sudo vi /etc/network/interfaces
auto lo
iface lo inet loopback

auto br100
iface br100 inet static
address 172.16.39.111
netmask 255.255.254.0
gateway 172.16.38.1
bridge_ports eth0
bridge_stp off
bridge_maxwait 0
bridge_fd 0

如果修改了上面的配置需要重启 Nova 的各个模块和 Ubuntu 的网络,怕麻烦的话还是直接重启系统吧:

$ sudo reboot

如果 nova-manage network list 发现有以前留下的网络需要 delete 掉,删除所有以前残留的网络然后重新创建一个 172.16.38.0/23 新网络:

$ sudo nova-manage network delete 192.168.3.0/24 1 255

$ sudo nova-manage network create 172.16.38.0/23 1 512

$ sudo nova-manage network list
network           	netmask        	start address  	DNS            
172.16.38.0/23    	255.255.254.0  	172.16.38.2    	8.8.4.4

因为有些 IP 地址是我们局域网正在用的,新建的 VM 不能占用这些 IP,所以需要划分一些 IP 留给 OpenStack Nova 用,需要进入数据库后修改 fixed_ips 这个表的 reserved 为 0,比如我们想把 172.16.39.222-226 这5个 IP 留给 OpenStack Nova instances:

$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 135
Server version: 5.1.54-1ubuntu4 (Ubuntu)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use nova;
Database changed

mysql> update fixed_ips set reserved = '1';
Query OK, 6 rows affected (0.00 sec)
Rows matched: 1448  Changed: 6  Warnings: 0

mysql> update fixed_ips set reserved = '0' where address='172.16.39.222';
mysql> update fixed_ips set reserved = '0' where address='172.16.39.223';
mysql> update fixed_ips set reserved = '0' where address='172.16.39.224';
mysql> update fixed_ips set reserved = '0' where address='172.16.39.225';
mysql> update fixed_ips set reserved = '0' where address='172.16.39.226';

重启 OpenStack Nova 的各个模块,然后新建一个 ubuntu instance 测试一下是否得到了正确的 IP 并能 ping 通网关(172.16.38.1)。

评论 (48 Comments)

  1. Vpsee,您好,我最近也遇到了ping不通正在运行示例的问题,我是用的两台机器配置nova的,一台安装了所有的nova服务,作为controller node,第二台只安装了nova-compute,作为compute node。现在只能ping通和ssh访问controller上面的实例,compute node上面的实例ping不通,也不能ssh访问。两台机器都是双网卡。估计还是我的网络配置有问题。

    今天早上看到您的这个帖子,想跟您请教一下,FlatManager的网络配置方式,适用于多台机器么,如果我有一台controller 是按您上面说的这种方式,我还可以再添加一个compute node吗,compute node 应该如何配置呢?

    谢谢!建了一个openstack的讨论群,方便大家讨论。129535701

  2. 换DNS。。赶快去换he.net或dnspod,狗爹35.36.37.38.42.43.56都被墙了。域名没事有木有!!!!!hold住!!!!!!!!!!!!!!!!

  3. @finalsatan
    嗯,可以添加 compute node,也需要 bridge。上面的例子是 controller + compute 的。

  4. @deef
    嗯,过段时间再看看,还不行的话就用别的 NS;~

  5. @vpsee dns设置直接用其他的DNS服务器不久好了,譬如dns.he.net很稳定的。我现在就在用。GD权限DNS被封不远啦

  6. HI,您好。
    你能写一篇一台电脑一张网卡搭建OPENSTACK环境的教程吗??

  7. 我完全按照您的配置,看到虚机已经获得地址,但是在主机上无法ping通虚机。请问可能是什么原因

  8. @vpsee
    请问如何分配公网IP? 我采用的vlanManage的网络模式.这种模式下, 所有实例会使用 SNAT 访问外网.如果我手动在iptables里添加DNAT条目就可以访问了,但问题我这么做会很麻烦,有什么办法能解决吗?

  9. $ sudo nova-manage network create 172.16.38.0/23 1 512

    $ sudo nova-manage network list
    network netmask start address DNS
    172.16.38.0/23 255.255.254.0 172.16.38.2 8.8.4.4
    为什么我的创建网络后显示的DNS确是none而不是你这里有8.8.4.4呢?

  10. 不好意思,显示的有8.8.4.4了。跟自己本身所在的局域网设置的一样就出现了8.8.4.4了。
    $ sudo vi /etc/network/interfaces
    auto lo
    iface lo inet loopback

    auto br100
    iface br100 inet static
    address 172.16.39.111
    netmask 255.255.254.0
    gateway 172.16.38.1
    bridge_ports eth0
    bridge_stp off
    bridge_maxwait 0
    bridge_fd 0
    想确定一下,这里面怎么没有auto eth0?eth0可以在这静态配置么?

  11. 查看实例运行状态时显示如下结果,不知道是为什么?
    RESERVATION r-8m9p2q0p cloud default
    INSTANCE i-00000003 ami-00000001 networking admin (cloud, ubuntu) 0 m1.tiny 2011-10-17T08:10:07Z nova
    RESERVATION r-ylmip43u cloud default
    INSTANCE i-00000004 ami-00000001 networking admin (cloud, ubuntu) 0 m1.tiny 2011-10-17T08:36:46Z nova

  12. @longhudou
    instance 停在 networking 状态表示网络不成功,可以通过查看相关日志 nova-networking.log 获得更多信息。RESERVATION 表示当前资源不够分配给 instance,预留。

  13. instance虽然running,但是ping不通,授权也做了,不知道该从哪里查找原因呢?

    还有RESERVATION状态表示资源不够吗?如果不够的话都有那些可能?从哪里可以看到到底是什么资源不够呢?

  14. @vpsee

    我用ssh登录虚拟机的时候提示输入密码,不过老是错误,这个密码是什么时候设置的呢?如果忘记了怎么办?

  15. @longhudou
    你用的是哪个虚拟机阿?自己安装的虚拟机还是下载的虚拟机镜像,比如 ubuntu1010-UEC-localuser-image.tar.gz?ubuntu1010-UEC-localuser-image.tar.gz 的默认用户名和密码都是 ubuntu

  16. 我用ssh 10.0.0.3然后输入密码就可以登录了,不过前边用的是ssh ubuntu@10.0.0.3或者@前面是别的什么都不行。

    在问一下,那个搭建多节点openstack环境最好需要几个机器(4个就足够了是吧?),硬件配置一定需要官方网站推荐的那么高吗?控制节点16G内存或者计算节点32G内存(科研用途,非商用)?

  17. @longhudou
    如果自己搭建玩多结点的话,3个就足够了,一个控制结点,一个镜像服务结点,一个计算结点。如果商用的话当然是成本一定配置越高越好。

  18. @vpsee

    我看到openstack的wiki上显示不支持XenServer的Live migration,并且不支持kvm的resize,不知道这是过时的还是现在依然如此?

  19. @longhudou @vpsee
    instance虽然running,但是ping不通,授权也做了,不知道该从哪里查找原因呢?
    还有RESERVATION状态表示资源不够吗?如果不够的话都有那些可能?从哪里可以看到到底是什么资源不够呢?

    请问这个是什么原因?我也碰到了,谢谢。

  20. @albaniliu
    instance 显示在 running 并不代表就真的在 running,用 virsh 和 vnc 等工具亲自登陆到 instance 虚拟机上看看是不是在运行,并且看看 instance 的网络配置是否正确。

  21. @vpsee
    感谢您的回答,您的这个image还是ping不通
    后来下了一个ubuntu的image是能ping通,但是不能ssh
    用了vnc登录就是显示个输入用户名的界面没反映

  22. @vpsee
    我想咨询一下,我所有的原件的是安装到一个机器上,但是我只有一个网卡,我现在instances 可以running 但是euca-get-consolo-output显示网络不通,我想问具体的一个网卡的话是如何分配的ip,我基本上是按照上面的做了,还是不行~~~

  23. @vpsee
    谢谢,已经登录上了,之前没有装kvm,装好重启就好了

  24. @openstack_new
    嗯,这篇文章讲的就是一个网卡的情况,通过 sudo nova-manage network create 172.16.38.0/23 1 512 来分配 IP,并且保证数据库里面有 172.16.38. 这些 IP。

  25. @vpsee
    大神,我出现的问题在ping不通实例,我的网桥设定和你的一样,有个instance有ip:172.16.39.222
    现在还是ping不通,授权也做过了

  26. @vpsee
    大神能给个完整的授权命令吗?

  27. @vpsee
    你好,我按照你的说明配置了网络,网桥信息什么的都和你一样
    但是我的instance在running,可是ping不通,网关172.16.38.1可以ping通
    但是我的实例ip:172.16.39.222 这个ping不通
    请问怎么办?

  28. @vpsee
    执行命令nova-manage network create 10.40.36.0/24 1 512
    报错误:
    (nova): TRACE: Traceback (most recent call last):
    (nova): TRACE: File “/usr/bin/nova-manage”, line 2141, in
    (nova): TRACE: main()
    (nova): TRACE: File “/usr/bin/nova-manage”, line 2129, in main
    (nova): TRACE: fn(*fn_args, **fn_kwargs)
    (nova): TRACE: File “/usr/bin/nova-manage”, line 766, in create
    (nova): TRACE: raise exception.NetworkNotCreated(req=’–bridge’)
    (nova): TRACE: NetworkNotCreated: –bridge is required to create a network.
    事实上网桥和您说的是一样配置的,只是根据自己网络环境做了相应的修改,能帮忙分析下问题可能出在哪么?感谢!

  29. @aufemercury
    需要有 bridge,用 ifconfig 检查是否有 br100:
    br100 Link encap:Ethernet HWaddr 00:0c:29:63:c1:cd
    inet addr:10.0.0.1 Bcast:10.0.0.255 Mask:255.255.255.0
    inet6 addr: fe80::20c:29ff:fe63:c1cd/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:2238168 errors:0 dropped:33754 overruns:0 frame:0
    TX packets:22841 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:152099001 (952.0 MB) TX bytes:3776648 (93.7 MB)

  30. @vpsee
    我遇到了和@aufemercury一样的错误,log如下
    2012-02-24 15:26:38,239 CRITICAL nova [-] –bridge is required to create a network.
    (nova): TRACE: Traceback (most recent call last):
    (nova): TRACE: File “/usr/bin/nova-manage”, line 2141, in
    (nova): TRACE: main()
    (nova): TRACE: File “/usr/bin/nova-manage”, line 2129, in main
    (nova): TRACE: fn(*fn_args, **fn_kwargs)
    (nova): TRACE: File “/usr/bin/nova-manage”, line 766, in create
    (nova): TRACE: raise exception.NetworkNotCreated(req=’–bridge’)
    (nova): TRACE: NetworkNotCreated: –bridge is required to create a network.
    本来我用的是Flatdhcp,后来改成和你一样的flat模式,但是结果依旧,ifconfig结果表示
    br100正常接受和发送数据,请教一下可能是什么问题。
    (PS:之前nova-manage create能正常执行,但是实例ping不同,再后来就instance直接一直pending mykey了,我就重新装了一遍nova,结network就出问题了,请指教。)

  31. @boxwh
    上面错误提示很清楚 –bridge is required to create a network,需要有 bridge,检查一下是否有 br100,没有的话需要安装 apt-get install bridge-utils 并且配置 /etc/network/interface
    $ ifconfig
    br100 Link encap:Ethernet HWaddr 00:1b:24:92:a2:42

  32. @vpsee
    我安装了bridge-utils的,ifconfig结果如下:
    br100 Link encap:以太网 硬件地址 00:e0:81:b7:27:1a
    能正常接收数据的,interfaces文件和你的配置一样的,只是把ip等改成我的固定的ip。
    不仅network create会报错,连network list也会报同样的错。
    请问这可能和nona.conf文件的配置有关系么?还是其他哪个地方出错,谢谢解答。

  33. @boxwh
    很多原因导致出错,需要看日志 /var/log/nova/nova-network.log 获得进一步出错信息。

  34. 你说已经存在38这个网段了,那配置里的39那个网段是哪里?

  35. @ffb
    38 和 39 是一个网段,172.16.38.0 – 172.16.39.255 = 172.16.38.0/23

  36. flatDHCP 和flat mode 的区别是什么呢

  37. 重启服务后有些服务不启动不了,但是用euca-describe-availability-zones 确能得到和你相似的结果,这是成功了吗,我是在一台机器,单网卡上搭控制结点,我下面应该怎么做,需要把这些服务调试成功吗,还是做下面的镜像?
    root@ubuntu:~# restart nova-network; restart nova-api; restart nova-objectstore; restart nova-scheduler; restart glance-api;
    nova-network start/running, process 3390
    nova-api start/running, process 3401
    restart: Unknown instance:
    restart: Unknown instance:
    glance-api start/running, process 3413
    root@ubuntu:~# restart glance-registry
    glance-registry start/running, process 3416
    root@ubuntu:~# euca-describe-availability-zones verboseAVAILABILITYZONE nova available
    AVAILABILITYZONE |- ubuntu
    AVAILABILITYZONE | |- nova-scheduler enabled XXX None
    AVAILABILITYZONE | |- nova-network enabled XXX None
    AVAILABILITYZONE | |- nova-compute enabled XXX None

  38. @sujing
    看上面的输出结果是,没有一个服务成功运行,只有 nova 各个服务组件都正常运行了才能做其他的。

  39. 你好, 我按着这个nova.conf已经配置好nova, 但是每次执行nova-manage时都有一个DEBEG信息:
    2012-05-24 16:18:31 DEBUG nova.utils [req-f4659665-1995-4b2f-b318-e169e4fc444c None None] backend from (pid=5312) __get_backend /usr/lib/python2.7/dist-packages/nova/utils.py:658

    请问这个该怎么解决。

  40. 大哥,你没有在nova.conf里配置:
    –connection_type=libvirt
    起不来nova-compuate的!!!!!!

  41. @figo
    这个是默认配置,不用写出来,除非 connection_type 不是 libvirt 才需要明确写出来。

  42. sudo restart libvirt-bin; sudo restart nova-network; sudo restart nova-compute; sudo restart nova-api; sudo restart nova-objectstore; sudo restart nova-scheduler; sudo restart nova-volume; sudo restart glance-api; sudo restart glance-registry
    libvirt-bin start/running, process 1261
    restart: Unknown instance:
    restart: Unknown instance:
    restart: Unknown instance:
    restart: Unknown instance:
    restart: Unknown instance:
    restart: Unknown instance:
    glance-api start/running, process 3080
    glance-registry start/running, process 3084

    上面是我运行的结果!!!郁闷中。。。。

  43. 我设置网桥后,重启系统,就没有网络了。怎么解决呀 ?

  44. 你好,你有没有碰见过,在创建网络时修改floating ip时,我先删除以前的ip: nova-manage floating delete –ip_range=10.37.44.1/18,然后再create,但是以前的ip在列表中还有,但是,在输入 nova-manage floating delete –ip_range=10.37.44.1/18命令时,提示:找不到该IP了。这个问题你有解决的办法没。

  45. @yao
    我一般解决类似删除删不掉的问题都是直接从数据库里删。参考:
    删除 OpenStack Nova Volume 时遇到的 error_deleting 问题
    如何删除 OpenStack Nova 僵尸实例

  46. vpsee 你好。
    ubuntu 12.04 安装完nova glance keystone 所有进程启动正常。进入dashboard 从image启动instance。 instance 状态为active。但 vnc只有启动那会是能连进去。过几十秒就断了。ping也无法ping通。IP可以获取。 我发现启动的时候可以加载一个虚拟网卡VNET0. brctl show br100 也能看到。但vnc不能连以后。这网卡也消失了。dmesg错误:[ 1746.868447] device vnet0 entered promiscuous mode
    [ 1746.884603] br100: port 2(vnet0) entered forwarding state
    [ 1746.884613] br100: port 2(vnet0) entered forwarding state
    [ 1765.832006] br100: port 2(vnet0) entered disabled state
    [ 1765.833316] device vnet0 left promiscuous mode
    [ 1765.833340] br100: port 2(vnet0) entered disabled state
    [ 1766.492699] type=1400 audit(1404892355.547:51): apparmor=”STATUS” operation=”profile_remove” parent=10335 profile=”unconfined” name=”libvirt-1595f5f5-2650-489c-8b68-a9534d710c9f” pid=10336 comm=”apparmor_parser”。
    tail -f /var/log/libvirt/libvirtd.log:
    2014-07-09 07:35:21.660+0000: 1736: error : virNetDevGetIndex:656 : Unable to get index for interface vnet0: No such device
    2014-07-09 07:52:34.887+0000: 8208: info : libvirt version: 0.9.8
    2014-07-09 07:52:34.887+0000: 8208: error : qemuMonitorIO:603 : internal error End of file from monitor

    还有一个问题 运行euca2ools相关命令报错:Unauthorized: Not Authorized
    请问大神 这是什么原因。

  47. 请问这种模式下如何给一台vm分配多个ip呢?

  48. 打开你的站好卡不知是何原因。

发表评论