作者:mobiledu2502871077 | 来源:互联网 | 2014-05-27 20:08
什么是OpenvSwitch顾名思义,OpenvSwitch即开放虚拟交换标准。具体点说,OpenvSwitch是在开源的Apache2.0许可下的产品级质量的多层虚拟交换标准!旨在通过编程扩展,使庞大的网络自动化(配置、管理、维护)。同时,还支持标准的管理接口和协议(如NetFlo
什么是Open vSwitch
顾名思义,Open vSwitch即开放虚拟交换标准。具体点说,Open
vSwitch是在开源的Apache2.0许可下的产品级质量的多层虚拟交换标准!旨在通过编程扩展,使庞大的网络自动化(配置、管理、维护)。同时,还支持标准的管理接口和协议(如NetFlow,
sFlow, SPAN, RSPAN, CLI, LACP,
802.1ag)。总的来说,它被设计为支持分布在多个物理服务器,例如VMware的vNetwork分布式vSwitch或思科的
Nexus 1000V。详细请参阅Open vSwitch官方文档http://openvswitch.org。
Open vSwitch可以解决如下几种需求:
网络隔离:Open
vSwitch通过在Host上虚拟出一个软件交换机,等于在物理交换机上级联了一台新的交换机,所有VM通过级联交换机接入,管理员能够像配置物理交换机一样把同一台Host上的众多VM分配到不同VLAN中去。
QoS配置:在共享同一个物理网卡的众多VM中,我们期望给每台VM配置不同的速度和带宽,以保证核心业务VM的网络性能。通过在Open
vSwitch端口上,给各个VM配置QoS,可以实现物理交换机的traffic queuing和traffic
shaping功能。
流量监控Netflow/sFlow:物理交换机通过xxFlow技术对数据包采样,记录关键域,发往Analyzer处理。进而实现包括网络监控、应用软件监控、用户监控、网络规划、安全分析、会计和结算、以及网络流量数据库分析和挖掘在内的各项操作。
Open vSwitch官网列出了对SPAN, RSPAN, and GRE-tunneled
mirrors的支持。关于具体功能,就不一一赘述了
下面详细介绍一下Open vSwitch在CloudStack 4.2(KVM)中的应用。
在CentOS6.4中安装Open vSwitch
环境准备:
在一台支持虚拟化的主机上安装CentOS 6.4 X64bit Mininal Server来作为KVM。
配置好CloudStack 4.2的环境(Manage Server)
登录到CentOS 6.4上,安装虚拟化工具
# yum install hypervkvpd libguestfs libvirt libvirt-client
python-virtinst qemu-kvm
virt-manager virt-top virt-viewer virt-who
在CentOS 6.4上,安装rpm build环境
# yum install rpmdevtools openssl-devel kernel-devel gcc
redhat-rpm-config
编译适合CentOS 6.4的Open
vSwitch的rpm包(需要下载源码文件,目前尚未找到适合centos6.4的rpm包),选择最新的openvswitch-1.11.0.tar.gz,也可以选择Open
vSwitch的LTS版本。
# mkdir -p ~/rpmbuild/SOURCES
# curl -O
http://openvswitch.org/releases/openvswitch-1.11.0.tar.gz
# cp openvswitch-1.11.0.tar.gz ~/rpmbuild/SOURCES
# tar -xzf openvswitch-1.11.0.tar.gz
# cd openvswitch-1.11.0
# rpmbuild -bb rhel/openvswitch.spec
# rpmbuild -bb rhel/openvswitch-kmod-rhel6.spec
会在相关目录下产生如下的三个rpm包:
kmod-openvswitch-1.11.0-1.el6.x86_64.rpm
openvswitch-1.11.0-1.x86_64.rpm
openvswitch-debuginfo-1.11.0-1.x86_64.rpm
安装build好的openvswitch
rpm。注:该rpm可以移植到其他CentOS6.4环境中。
# rpm -ivh openvswitch-1.11.0-1.x86_64.rpm
kmod-openvswitch-1.11.0-1.el6.x86_64.rpm
# echo ‘blacklist bridge’ >>
/etc/modprobe.d/blacklist.conf
# reboot
验证Open vSwitch是否正确安装
# lsmod |grep openvswitch
openvswitch
78045 0
# ovs-vsctl -V
ovs-vsctl (Open vSwitch) 1.11.0
Compiled Sep 4 2013 17:42:03
安装CloudStack 4.2 的ManageMent和Agent
# yum install cloudstack-management
# yum install cloudstack-agent
详细步骤请参考CloudStack安装文档。
在CloudStack中添加启用Open vSwitch的KVM主机
添加如下配置信息到/etc/cloudstack/agent/agent.properties,以便CloudStack可以识别KVM上的Open
vSwitch。
network.bridge.type=openvswitch
libvirt.vif.driver=com.cloud.hypervisor.kvm.resource.OvsVifDriver
直接登录Management
UI界面,将该CentOS6.4版本的kvm主机加入CloudStack相关集群中即可。自动生成如下信息:
# more /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=OVSPort
UUID=5af85653-ab2b-4288-bbed-744cd70ea7af
OnBOOT=yes
NM_COnTROLLED=no
BOOTPROTO=none
NETMASK=255.255.255.0
GATEWAY=172.16.235.254
#HWADDR=00:50:56:AF:7E:CC
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME=”System eth0″
DEVICETYPE=ovs
OVS_BRIDGE=cloudbr0
# more /etc/sysconfig/network-scripts/ifcfg-cloudbr0
DEVICE=cloudbr0
TYPE=OVSBridge
OnBOOT=yes
NM_COnTROLLED=no
BOOTPROTO=none
IPADDR=172.16.235.228
NETMASK=255.255.255.0
GATEWAY=172.16.235.254
#HWADDR=00:50:56:AF:7E:CC
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME=”System eth0″
STP=yes
DEVICETYPE=ovs
# ovs-vsctl show
4bc7fc91-56a1-4588-9a20-2a61e422b68c
Bridge “cloud0″
Port “cloud0″
Interface “cloud0″
type: internal
Bridge “cloudbr0″
Port “vnet0″
tag: 440
Interface “vnet0″
Port “eth0″
Interface “eth0″
Port “cloudbr0″
Interface “cloudbr0″
type: internal
ovs_version: “1.11.0″
网络规划:
cloudbr0 (Management, Storage)
ip: 172.16.235.10/24
gateway: 172.16.235.254
eth0 (physical port, no vlans)
cloudbr1 (Guest, Public)
eth1 (physical port, vlan trunk)
ip: none
需要手动配置网卡的相关信息,之后登录Management
UI界面,将该CentOS6.4版本的kvm主机加入CloudStack相关集群中。
# more /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
IPV6INIT=no
NM_COnTROLLED=no
OnBOOT=yes
TYPE=OVSPort
DEVICETYPE=ovs
OVS_BRIDGE=cloudbr0
# more /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=none
IPV6INIT=no
NM_COnTROLLED=no
OnBOOT=yes
TYPE=OVSPort
DEVICETYPE=ovs
OVS_BRIDGE=cloudbr1
# more /etc/sysconfig/network-scripts/ifcfg-cloudbr0
DEVICE=cloudbr0
OnBOOT=yes
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=static
IPADDR=172.16.235.227
GATEWAY=172.16.235.254
NETMASK=255.255.255.0
HOTPLUG=no
# more /etc/sysconfig/network-scripts/ifcfg-cloudbr1
DEVICE=cloudbr1
OnBOOT=yes
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=none
HOTPLUG=no
登录Management UI界面创建虚拟机,至此CloudStack(KVM)环境中使用Open
vSwitch环境搭建成功。
后续会和大家分享一些关于Open vSwitch的功能以及使用CloudStack4.2的经验。
注:一旦CloudStack对该KVM管理,该KVM上的Open vSwitch不可以单独操作,会报如下的错误。
# ovsdb-server
2013-09-05T08:12:49Z|00001|lockfile|WARN|/etc/openvswitch/.conf.db.~lock~:
cannot lock file because it is already locked by pid 972
ovsdb-server: I/O error: /etc/openvswitch/conf.db: failed to lock
lockfile (Resource temporarily unavailable)