kvm虚拟化方案(2)_openvswith安装

git 源码安装

参考: Installing OpenVSwitch on CentOS 6 (6.5)

yum install kernel-headers kernel-devel gcc make python-devel openssl-devel kernel-devel, graphviz kernel-debug-devel automake rpm-build redhat-rpm-config libtool git

cd /root/
wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.64.tar.gz
tar xvf autoconf-2.64.tar.gz
cd autoconf-2.64/
./configure
make
make install

cd /root/
git clone git://git.openvswitch.org/openvswitch
cd openvswitch/
./boot.sh;./configure; make dist
mkdir /root/rpmbuild/SOURCES
cp openvswitch*.tar.gz /root/rpmbuild/SOURCES/# 
cp rhel/openvswitch-kmod.files  /root/rpmbuild/SOURCES/
rpmbuild -bb rhel/openvswitch.spec
rpmbuild -bb rhel/openvswitch-kmod-rhel6.spec
cd /root/rpmbuild/RPMS/x86_64/ 目录

安装rpm包

rpm -ivh *.rpm

编绎成功!

常见问题

rpmbuild的时候出错 Dependency tokens must begin with alpha-numeric, ‘_’ or ‘/’: BuildRequires: %kernel_module_package_buildreqs

参考: http://www.soliddb.org/2010/07/16/88/

安装 redhat-rpm-config 包即可

error: conflicting types for 'netdev_features_t'

参考: http://n40lab.wordpress.com/2014/01/11/centos-6-5-openvswitch-1-9-3-lts-installation/

使用

启用 openvswitch

注意,我们禁用 NetworkManager 服务,使用 network 服务:

# chkconfig NetworkManager off
# chkconfig network on
# service NetworkManager stop
# service network start

启动 OVS 服务,首次使用添加 br0 网口:

# /etc/init.d/openvswitch start
# ovs-vsctl add-br br0

编辑 /etc/sysconfig/network-scripts/ifcfg-br0 文件,如下:

DEVICE=br0
ONBOOT=yes
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=static
IPADDR=192.168.1.15
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
HOTPLUG=no

编辑 /etc/sysconfig/network-scripts/ifcfg-eth0 文件,如下:

DEVICE=eth0
ONBOOT=yes
DEVICETYPE=ovs
TYPE=OVSPort
OVS_BRIDGE=br0
BOOTPROTO=none
HOTPLUG=no

重启 network 服务:

# /etc/init.d/network restart

在 KVM 命令行具中使用 OVS

参考: How to Use Open vSwitch with KVM

CentOS 下需要使用 tunctl 命令, 安装:

# yum install bridge-utils tunctl

创建 /etc/ovs-ifup 脚本 :

#!/bin/sh

switch='br0'
/sbin/ifconfig $1 0.0.0.0 up
ovs-vsctl add-port ${switch} $1

创建 /etc/ovs-ifdown 脚本 :

#!/bin/sh

switch='br0'
/sbin/ifconfig $1 0.0.0.0 down
ovs-vsctl del-port ${switch} $1

给脚本添加可执行权限 :

# chmod a+x /etc/ovs-if*

启动虚拟机 :

# /usr/libexec/qemu-kvm -m 2048 -name WIN7-TEST -drive file=/data/jian/vos/win7.img -vga qxl -spice port=5910,addr=0.0.0.0,disable-ticketing -usbdevice tablet -soundhw ac97 -device virtio-serial -chardev spicevmc,id=vdagent,name=vdagent -device virtserialport,chardev=vdagent,name=com.redhat.spice.0 -net nic,model=rtl8139 -net tap,script=/etc/ovs-ifup,downscript=/etc/ovs-ifdown

现在可以使用 spice client 连接机器的 5910 端口。

使用 virtio

参考: kvm安装windows xp、windows7时磁盘使用virtio驱动

加截驱动 iso :

-drive file=/path/to/virtio-win-VERSION.iso,index=1,media=cdrom -boot once=d

我的 KVM 安装 OS 示例 :

/usr/libexec/qemu-kvm -m 2048 -smp 2 -name WIN7-TEST -drive file=/data/jian/vos/win7_x64.img,if=virtio -vga qxl -spice port=5910,addr=0.0.0.0,disable-ticketing -usbdevice tablet -soundhw ac97 -device virtio-serial -chardev spicevmc,id=vdagent,name=vdagent -device virtserialport,chardev=vdagent,name=com.redhat.spice.0 -net nic,model=virtio -net tap,script=/data/jian/ooclab/kvm/scripts/ovs-ifup,downscript=/data/jian/ooclab/kvm/scripts/ovs-ifdown -drive file=/data/isos/windows/cn_windows_7_ultimate_with_sp1_x64_dvd_618537.iso,index=0,media=cdrom -drive file=/data/virtio-win-0.1-74.iso,index=1,media=cdrom -boot once=d

常用问题

Device 'tap' could not be initialized

参考: KVM “qemu-ifup: could not configure /dev/net/tun: Operation not permitted”解决方案

这个问题很常见,我的原因是 ovs-ifup, ovs-ifdown 没有执权限,加上即可:

# chmod a+x ovs-if*

OVS中的bridge

上面,说到,一个桥就是一个交换机。在OVS中,

ovs-vsctl add-br brname(br-int)

root@Compute2:~# ifconfig
      br-int    Link encap:Ethernet  HWaddr 1a:09:56:ea:0b:49  
      inet6 addr: fe80::1809:56ff:feea:b49/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:1584 errors:0 dropped:0 overruns:0 frame:0
      TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
      RX bytes:316502 (316.5 KB)  TX bytes:468 (468.0 B)

当我们创建了一个交换机(网桥)以后,此时网络功能不受影响,但是会产生一个虚拟网卡,名字就是brname,之所以会产生一个虚拟网卡,是为了实现接下来的网桥(交换机)功能。有了这个交换机以后,我还需要为这个交换机增加端口(port),一个端口,就是一个物理网卡,当网卡加入到这个交换机之后,其工作方式就和普通交换机的一个端口的工作方式类似了。

ovs-vsctl add-port brname port

这里要特别注意,网卡加入网桥以后,要按照网桥的工作标准工作,那么加入的一个端口就必须是以混杂模式工作,工作在链路层,处理2层的帧,所以这个port就不需要配置IP了。(你没见过哪个交换的端口有IP的吧)

那么接下来你可能会问,通常的交换机不都是有一个管理接口,可以telnet到交换机上进行配置吧,那么在OVS中创建的虚拟交换机有木有这种呢,有的!上面既然创建交换机brname的时候产生了一个虚拟网口brname,那么,你给这个虚拟网卡配置了IP以后,就相当于给交换机的管理接口配置了IP,此时一个正常的虚拟交换机就搞定了。

ip address add 192.168.1.1/24 dev brname

最后,我们来看看一个br的具体信息:

添加网桥br0

[root@localhost ~]# ovs-vsctl add-br br0

激活网桥br0

[root@localhost ~]# ifconfig br0 up

配置网桥br0的ip地址和子网掩码

[root@localhost ~]# ifconfig br0 192.168.203.100/24

将需要添加到网桥br0上的网络接口添加到br0中

[root@localhost ~]# ovs-vsctl add-port br0 peth0

[root@localhost ~]# ovs-vsctl add-port br0 vif0.0

#ovs-vsctladd-br br0
#ovs-vsctl add-port br0 vif1.0
#ovs-vsctl add-port br0 eth0
#ifconfigbr up
root@Compute2:~# ovs-vsctl show
bc12c8d2-6900-42dd-9c1c-30e8ecb99a1b
Bridge "br0"
    Port "eth0"
        Interface "eth0"
    Port "br0"
        Interface "br0"
            type: internal
ovs_version: "1.4.0+build0"


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值