Nov 132012
 

现在搞Openstack的Folsom很累,一直都没搞定,其实是因为Quantum很复杂,quantum复杂,是因为他使用了Open vSwith. 看来要搞明白Quantum,就必须先对Open vSwith熟悉一点,文档里就简称 OVS。

刚好看到两篇文档介绍这个

http://www.vpsee.com/2012/11/install-openvswitch-on-ubuntu-12-04/

http://blog.scottlowe.org/2012/08/17/installing-kvm-and-open-vswitch-on-ubuntu/

第一篇是vpsee写的,第二篇是Intel的员工罗钟悦 quantum介绍文档里推荐。我现在有cobbler,搞一个干净的系统是非常简单的事情。

OS:ubuntu 12.04.1,发现调试网络的东西比较头疼,一旦网络无法连接,你就需要到机器前面,所以你最好有IPMI或者虚拟机里测试。调试这个累死了。

查看网络

# cat /etc/network/interfaces 
# This file describes network interfaces avaiulable on your system
# and how to activate them. For more information, see interfaces(5).
# Modified by convert_static.sh.
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 10.1.199.53
hwaddress ether 00:25:90:2d:7a:18  
netmask 255.255.255.0
network 10.1.199.0
gateway 10.1.199.1
dns-search chenshake.com
dns-nameservers 8.8.8.8

更新源

apt-get update && apt-get dist-upgrade

KVM包

apt-get install kvm libvirt-bin virtinst

装完后,你用ifconfig,就会发现多了一个virbr0 的bridge。

快照41

我们需要删掉

virsh net-destroy default
virsh net-autostart --disable default
aptitude purge ebtables

OVS

apt-get install openvswitch-controller openvswitch-brcompat \
openvswitch-switch openvswitch-datapath-source

总共是140M,我是本地源,1分钟搞定,估计你需要耐心点等待。

OVS兼容linux的bridge

编辑 /etc/default/openvswitch-switch

BRCOMPAT=yes

或者直接使用命令修改

sed -i 's/# BRCOMPAT=no/BRCOMPAT=yes/g' /etc/default/openvswitch-switch

启动OVS服务

# service openvswitch-switch start
 * Inserting openvswitch module
 * Inserting brcompat module
 * /etc/openvswitch/conf.db does not exist
 * Creating empty database /etc/openvswitch/conf.db
 * Starting ovsdb-server
 * Configuring Open vSwitch system IDs
 * Starting ovs-vswitchd
 * Starting ovs-brcompatd
 * Enabling gre with iptables

重启机器

 

检查内核是否加载OVS

# lsmod | grep brcom
brcompat_mod           13512  0 
openvswitch_mod        83993  2 brcompat_mod

OVS运行状态

# service openvswitch-switch status
ovsdb-server is running with pid 12343
ovs-vswitchd is running with pid 12352
ovs-brcompatd is running with pid 12355

查看OVS配置

# ovs-vsctl show
ae727ded-25b5-44fa-9111-a1407ea68598
    ovs_version: "1.4.0+build0"

创建Bridge

如果直接设置bridge,会导致网络中断,这时候你就没法再配置你的网络,所以我就一个命令行过去,执行创建bridge和修改网络。

先创建一个 /root/interfaces 文件

# The loopback network interface
auto lo
iface lo inet loopback

# The OVS bridge interface
auto br0
iface br0 inet static
address 10.1.199.53
netmask 255.255.255.0
gateway 10.1.199.1
dns-nameservers 8.8.8.8
bridge_ports eth0
bridge_hello 2
bridge_maxage 12
bridge_stp off

# The primary network interface
auto eth0
iface eth0 inet manual
up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE down

然后创建bridge,设置网络

ovs-vsctl add-br br0 && ovs-vsctl add-port br0 eth0 && cp /root/interfaces /etc/network/ && /etc/init.d/networking restart && service openvswitch-switch restart

看图

快照42

失败了无数次,终于搞定。

查看OVS配置

# ovs-vsctl show
ae727ded-25b5-44fa-9111-a1407ea68598
    Bridge "br0"
        Port "br0"
            Interface "br0"
                type: internal
        Port "eth0"
            Interface "eth0"
    ovs_version: "1.4.0+build0"

不过如果重启系统后,很有可能报错。还没找到原因。

  16 Responses to “Ubuntu 12.04 上安装 Open vSwitch”

  1. 老师我配置好openstack,在new一个实例出来后里面ifconfig看下网络情况,没有virbr0这个会怎么样。。。。这个instance怎么不能ssh我分配给他的外部ip,但是他却能ssh其他instance,而且是ssh另外的instance的外部ip的。。

  2. 还想问下instance中ifconfig后怎么没有显示分配给他的外部ip?

    • 所谓外部IP,就是类似防火墙给你映射的IP,虚拟机里是看不到的。

      • 谢谢老师回答,再继续请教下。。
        对于instance来说的话,就是系统防火墙起映射作用吗? instance要访问外部局域网的ip是要让系统防火墙给他映射ip才能访问吗?

        另外instance怎么感觉挺不稳定的啊 。。经常性ssh中断了,连接不上了。。。

    • 您好,想请问您一个关于controller的问题
      看到您给的链接,里面的安装过程是先通过apt-get下载安装包,其中包括了controller、brcompat等(应该还没写完吧?)。而我用的是redhat安装,直接从openvswitch.org这个官网里下载下来的程序,直接make安装了。但是在使用过程中发现,缺少ovs-controller这个命令,系统会提示没有安装,但是看了一下Makefile什么的里面都确实有编译过关于controller的代码,并且生成了一些相关文件的。
      想请问您是否也遇到这个问题

  3. 您好,我按您写的配置重启机器后openvswitch-switch服务就不再运行,service openvswitch-switch start会报错没有openvswitch_mod模块,按照您博文中提到的另两篇文章所说编译openvswitch会出错,提示没有openssl,我又安装了openssl,但仍然提示编译不成功,但日志文件里看不出错误,不知道为什么。

  4. 谢谢,重设后我机器还没重启过:-)。您有没有涉及到openvswitch划分vlan的内容呢

  5. 请问老师,openstack镜像文件只能用img格式的镜像吗? 我用iso的windows2003,能上传镜像并创建instance,但是貌似连接不上啊?

  6. 老师你好。我按照OpenStack Network (Quantum) Administration Guide的说明,使用tunnel模式部署,连接到同一router的内部网络中的vm可以ping通,但是内部vm(已经分配了floatingip)却不能ping通外部网络的主机,这是怎么回事呢?

    此外,我切换到vlan模式下,内部网络的vm如果在同一台host上,那可以互相ping通,但不在同一台host则不能ping通。此外也ping不通内网的网关和dhcp服务器,这是为什么呢?

    • 我也是这样的问题。目前还没解决。虚拟机无法访问互联网。

      • How did you configure the virbr0?

        Try to add to the configuration XML and the virtual network will work in NAT mode. Thus the VM should be able to connect to the Internet.

  7. 在安装open vswitch的主机上安装两个虚拟机,把两个虚拟机的网卡都挂接在open vswitch的网桥上。在VirtualBox上是如何实现“把两个虚拟机的网卡都挂接在open vswitch的网桥上”?

  8. checking for Linux build directory… /lib/modules/3.11.0-23-generic/build
    checking for Linux source directory… /lib/modules/3.11.0-23-generic/build
    checking for kernel version… 3.11.10
    configure: error: Linux kernel source in /lib/modules/3.11.0-23-generic/build is not configured

    请问大师,编译OVS提示如上错误

 Leave a Reply

(required)

(required)