热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

OpenvSwitch,libvirt,KVM

虚拟化网络+虚拟机,说大一点手工搭个openstack出来…环境Ubuntu12.04server,64bit,更新至最新OpenvSwitch简称ovs,一个虚拟的,支持openflow协议的交换机.据说以后会替代掉linux自带的bridge,但是现在的整合还比较欠缺,比如网络接口用系统命令和ovs

虚拟化网络+虚拟机,说大一点手工搭个openstack出来…

环境

Ubuntu 12.04 server, 64bit, 更新至最新

Open vSwitch

简称ovs, 一个虚拟的,支持openflow协议的交换机. 据说以后会替代掉linux自带的bridge, 但是现在的整合还比较欠缺,比如网络接口用系统命令和ovs的命令看到的状态可能会是不一致的…当然不影响使用

首先去官网下载最新的稳定版.在我写这篇文字的时候是1.7.1

然后安装各种依赖:

apt-get install python-simplejson python-qt4 python-twisted-conch automake autoconf gcc uml-utilities libtool build-essential autoconf automake pkg-config libssl-dev iproute tcpdump module-assistant debhelper python-all
apt-get install linux-headers-`uname -r`

解压缩下载到的.tar.gz包,然后改名这个包为openvswitch_1.7.1.orig.tar.gz(“-”改成下划线,加个”orig”)

这个时候你应该能看见名为openvswitch-1.7.1的文件夹,和名为openvswitch_1.7.1.orig.tar.gz的压缩包

然后进入openvswitch-1.7.1这个文件夹,执行:

dpkg-buildpackage

之后退回到上一级目录,你就会看到各种编译好的deb包

其实ovs对Ubuntu的支持还是多友好的嘛,这时你就可以用dpkg命令安装自己需要的包了…

如果需要安装ovs的内核模块,就需要装openvswitch-datapath-source_1.7.1-1_all.deb这个包,之后执行:

module-assistant auto-install openvswitch-datapath

执行

service openvswitch-switch start

命令来启动ovs.

另外建议开启ovs与linux bridge的兼容模式,方法是修改/etc/default/openvswitch-switch文件,把#BRCOMPAT=no改为BRCOMPAT=yes.改动将会在重启后生效

libvirt 与 kvm

libvirt顾名思义是一个跟虚拟化有关的库(“virtualization library”),kvm全称”kernel-based virtual machine”,跟qemu结合比较紧密,相当于qemu的内核模块

使用这俩东西最简单的方法就是virt-manager这个GUI工具,安装:

apt-get install kvm virt-manager

(libvirt会作为virt-manager的依赖而自动安装)

(另.有些CPU不支持kvm, 首先用kvm-ok工具检查一下= =…)

其实Ubuntu源里的libvirt版本略老,not ovs-aware,建议用新版本覆盖掉

仍然是去官网下载最新版本(本文为1.0),之后解压,安装依赖,configure,make install:

apt-get install gcc  make  pkg-config libxml2-dev  libgnutls-dev  libdevmapper-dev  libcurl4-gnutls-dev python-dev  libyajl-dev libnl-dev pm-utils
./configure --prefix=/usr --localstatedir=/var --syscOnfdir=/etc
make
make install

(注意configure的时候调整了安装位置以覆盖旧版本)

这时候执行initctl start libvirt-bin启动libvirt,就可以用virt-manager来管理虚拟机了

整合

装上libvirt之后,它会自动添加一个叫做”virbr0″的虚拟交换机,并且使用iptables做路由,使得虚拟机也能连接到外网,如果不折腾的话…其实够用了

如果非要折腾一下,下面是一些提示

1.熟读ovs的FAQ,尤其是”Configuration Problems”部分

2.ovs-vsctl show显示系统内虚拟网络的连接情况,ovs-ofctl show显示某个虚拟交换机的各个端口连接情况

3.最好是能有一个非网络的控制方式,免得一遍遍地跑机房T_T…

4.用ovs-ofctl命令手工折腾流表前,把man page过一遍,确保你明白flow description的”normal form”


推荐阅读
author-avatar
励志要成为明星的张佳楠
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有