OpenVSwitch GitHub上有详细的构建手册。
执行下列命令来构建安装包(新版请按要求修改):
#获取最新存档
wget http://openvswitch.org/releases/openvswitch-2.3.1.tar.gz
tar xzvf openvswitch-2.3.1.tar.gz
cd openvswitch-2.3.1#安装依赖
sudo apt-get install -y build-essential fakeroot debhelper
autoconf automake bzip2 libssl-dev
openssl graphviz python-all procps
python-qt4 python-zopeinterface
python-twisted-conch libtool
# 构建(不使用并行检查)
DEB_BUILD_OPTIONS='parallel=8 nocheck' fakeroot debian/rules binary
# 得到最新deb文件并复制到某处
cd ..
ls -al *deb
现在你有了新的.deb安装包,接下来将其推送并安装到所有主机上。
# 复制包到各主机并ssh登录
scp -r *deb user@remote_host:~/.
ssh user@remote_host# 安装一些依赖(后面需要)并安装包
sudo apt-get install -y bridge-utils
sudo dpkg -i openvswitch-common_2.3.1-1_amd64.deb
openvswitch-switch_2.3.1-1_amd64.deb
配置
网络
你可以使用OpenVSwitch提供的不同命令行工具来构建网状网络(比如ovs-vsctl),不过Ubuntu提供了一个辅助工具让你可以通过/etc/network/interfaces文件定义网络。
假定三台主机:1.1.1.1、2.2.2.2和3.3.3.3,可以通过上述IP相互ping通,它们是在公网或内网上并不重要。host1的/etc/network/interfaces大概如下。
...
# eth0、eth1和lo配置
...# auto:为了有效地在主机启动时启动它
# br0=br0:防止在`ifquery --list`时被找到
auto br0=br0
allow-ovs br0
iface br0 inet manual
ovs_type OVSBridge
ovs_ports gre1 gre2
ovs_extra set bridge ${IFACE} stp_enable=true
mtu 1462
# 没有auto,这是ovs的一个额外配置
# 两台主机的gre名字必须相符
allow-br0 gre1
iface gre1 inet manual
ovs_type OVSPort
ovs_bridge br0
ovs_extra set interface ${IFACE} type=gre options:remote_ip=2.2.2.2
allow-br0 gre2
iface gre2 inet manual
ovs_type OVSPort
ovs_bridge br0
ovs_extra set interface ${IFACE} type=gre options:remote_ip=3.3.3.3
# auto:启动时创建
# 定义docker要使用的docker0,并(在可用时)连接到到OpenVSwitch创建的br0网桥上
# 每台主机需要使用不同的IP地址(不要相互冲突!)
auto docker0=docker0
iface docker0 inet static
address 172.17.42.1
network 172.17.0.0
netmask 255.255.0.0
bridge_ports br0
mtu 1462
在其它主机上要对这个配置上做些调整:remote_ip的IP地址要相互配对。
几点说明:










