openvswitch-vlan-(libvirt虚拟机) 配置实例

一: 编译安装openvwitch和libvirt 源码:

1    编译安装openvswitch:  

    (参考: http://networkstatic.net/configuring-vxlan-and-gre-tunnels-on-openvswitch/ )

apt-get update
apt-get install -y git automake autoconf gcc uml-utilities libtool build-essential git pkg-config linux-headers-`uname -r`
wget http://openvswitch.org/releases/openvswitch-1.10.0.tar.gz
tar zxvf openvswitch-1.10.0.tar.gz
cd openvswitch-1.10.0
./boot.sh
./configure --with-linux=/lib/modules/`uname -r`/build
make && make install
make modules_install
insmod datapath/linux/openvswitch.ko
mkdir -p /usr/local/etc/openvswitch
ovsdb-tool create /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema
ovsdb-server -v --remote=punix:/usr/local/var/run/openvswitch/db.sock \
                     --remote=db:Open_vSwitch,manager_options \
                     --private-key=db:SSL,private_key \
                     --certificate=db:SSL,certificate \
                     --pidfile --detach --log-file
ovs-vsctl --no-wait init
ovs-vswitchd --pidfile --detach
ovs-vsctl show

2    编译安装并启动libvirt

      ( 参考: http://blog.csdn.net/u011740215/article/details/10064527  )


二 : 配置网桥: 

        ovs-vsctl add-br br0
ovs-vsctl add-port br0 eth0
ifconfig eth0 0 && ifconfig br0  10.100.5.247  netmask 255.255.0.0
route add default gw 10.100.0.254  br0

         (备注: 其中10.100.5.247为eth0 的ip ,255.255.0.0为原来的子网掩码。10.100.0.254为原来的网关。上述命令将eth0 设置为0,并把原来的ip 付给桥br0中的端口,: br0 .注意,当建立起一个网桥以后,就会自动在此网桥下建立起一个和桥名字一样的端口。 )

 三: 安装qemu相关的内核模块和包 

   dpkg -l |  grep  qemu
ii  ipxe-qemu                                 1.0.0+git-4.d6b0b76-0ubuntu2        all          Virtual package to support use of kvm-ipxe with qemu
ii  qemu-common                               1.4.0+dfsg-1expubuntu4              all          dummy transitional package from qemu-common to qemu-keymaps
ii  qemu-keymaps                              1.4.0+dfsg-1expubuntu4              all          QEMU keyboard maps
ii  qemu-kvm                                  1.4.0+dfsg-1expubuntu4              amd64        QEMU Full virtualization on x86 hardware (transitional package)
ii  qemu-system-common                        1.4.0+dfsg-1expubuntu4              amd64        QEMU full system emulation binaries (common files)
ii  qemu-system-x86                           1.4.0+dfsg-1expubuntu4              amd64        QEMU full system emulation binaries (x86)
ii  qemu-utils                                1.4.0+dfsg-1expubuntu4              amd64        QEMU utilities


四: 编写xml文件,并定义和启动虚拟机:

  1  编写xml文档,命名为1.xml  


  vm21
  d80b5017-d0a1-4daf-9058-74922b4cf0b8
  2536000
  1553600
  1
 
    hvm
   
 

 
   
   
 

 
  destroy
  restart
  destroy
 
    /usr/bin/qemu-system-x86_64
   
     
     
     
     
     


   

     
     
     
   

   
     
     

   
   
     
     
     
     
     
     
     

   
   
     
     
     
   

   
     
   
   
   
     
   

   


   
   
     
     

   
 
 
   
    libvirt-d80b5017-d0a1-4daf-9058-74922b4cf0b8
 


 

注意其中的:

a        

       domain 的类型详见libvirt xml的相关解释

b  vm21
   d80b5017-d0a1-4daf-9058-74922b4cf0b8

     每个虚拟机的唯一标示

c  2536000

     memory分配的很小,会导致接下来的安装系统过程出错。


d  hvm

e    /usr/bin/qemu-system-x86_64

f    

     系统被安装在的位置, 需要使用命令 qemu-img create -f qcow2 disk.img 5G     创建。(参考:http://wiki.centos.org/HowTos/KVM ) 

g   

     

     使得能够总镜像安装系统。CentOS-6.4-x86_64-minimal.iso 镜像需要在制定的目录下。

h  
     
   

    设置vnc连接的端口和ip. 使得能够通过VNC 连接到虚拟机。 eg:  10.100.5.247:5900.注意每个新虚拟机vnc的端口应该不同。eg;5901,5902......

i     
     
     
     
     
     
     
     


   

 设置网络连接方式,桥接。每个新虚拟机的mac 应该唯一。


2  定义域并启动虚拟机

    virsh define  1.xml

    virsh  start  vm21  

   此时便可通过vnc连接到正在安装的虚拟机,eg  10.100.5.247:5900


五:通过VNC 连接到虚拟机内部,设置虚拟机的ip  地址,建立vlan 并将虚拟机加入其中。

      此时在宿主机上,通过ip addr 命令  可以查得有vnet0 存在,即刚启动的虚拟机的ip,;

      在宿主机上,运行命令ovs-vsctl  show  命令,可以看到  

     root@hwbi-HVM-domU:~/xml# ovs-vsctl  show
260c025a-6a59-45f9-9f60-9700cf91f5fa
    Bridge "br0"
        Port "vnet0"
            Interface "vnet0"
        Port "eth0"
            Interface "eth0"
        Port "br0"
            Interface "br0"
                type: internal
    ovs_version: "1.9.0"

表明vnet0已经在网桥br0中了。

    运行命令   ovs-v=vsctl set  port vnet0  tag=2   :  将vnet0 加入到tag为2  的vlan( 如果tag为2 的vnal  不存在,这条命令则首先新建tag为2的vlan)

   此时宿主机上再次运行命令: ovs-vsctl  show  

  结果如下:

260c025a-6a59-45f9-9f60-9700cf91f5fa
    Bridge "br0"
        Port "vnet0"
            tag: 2
            Interface "vnet0"
        Port "eth0"
            Interface "eth0"
        Port "br0"
            Interface "br0"
                type: internal
    ovs_version: "1.9.0"


至此即完成了全部工作。  按照上述的步骤可以在同一台宿主机上建立另一台虚拟机,并分到与上述机器同一个或者不同的vlan 中,进行vlan 的测试工作。


(备注: 如果通过命令ovs-vsctl del-port  vnet0 删除了br0中的端口vnet0,可以直接通过命令ovs-vsctl  add-port br0   vnet0   tag=2,将vnet0 加入到br0 ,并分到tag为2 的vlan   中。 注意tag  为0  的含义)


注意: 对于第五步,可以有更方便的方法,即在xml文件中直接设定vlan的tag. 

           修改方法: 在原来的xml文件中添加如下几行:

 
   
   


你可能感兴趣的:(virtualization)