初始化环境
安装EPEL
rpm -ivh https://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
更新系统软件包
yum update
安装必要工具
yum install htop net-tools bridge-utils
禁用SELinux
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
重启服务器。
安装Docker
安装最新版本Docker
curl -sSL https://get.daocloud.io/docker | sh
添加到Daocloud集群监控
curl -sSL https://get.daocloud.io/daomonit/install.sh | sh -s [key]
安装OpenVSwitch
准备基础环境
yum -y install wget openssl-devel gcc make python-devel openssl-devel kernel-devel graphviz kernel-debug-devel autoconf automake rpm-build redhat-rpm-config libtool adduser ovs su - ovs
构建安装OpenVSwitch,只需要构建一次,其他机器直接使用RPM包
mkdir -p ~/rpmbuild/SOURCES wget http://openvswitch.org/releases/openvswitch-2.3.1.tar.gz cp openvswitch-2.3.1.tar.gz ~/rpmbuild/SOURCES/ tar xfz openvswitch-2.3.1.tar.gz sed 's/openvswitch-kmod, //g' openvswitch-2.3.1/rhel/openvswitch.spec > openvswitch-2.3.1/rhel/openvswitch_no_kmod.spec rpmbuild -bb --nocheck ~/openvswitch-2.3.1/rhel/openvswitch_no_kmod.spec exit
安装OpenVSwitch
yum localinstall /home/ovs/rpmbuild/RPMS/x86_64/openvswitch-2.3.1-1.x86_64.rpm
检查OpenVSwitch运行情况
ovs-vsctl -V
如果开启了SELinux,还需要执行:
yum install policycoreutils-python mkdir /etc/openvswitch semanage fcontext -a -t openvswitch_rw_t "/etc/openvswitch(/.*)?" restorecon -Rv /etc/openvswitch
将OpenVSwitch设为开机自动启动,并立即启动:
chkconfig openvswitch on systemctl start openvswitch.service
配置OpenVSwitch网络
添加OpenVSwitch网桥
ovs-vsctl add-br ovsbr0
增加网桥配置:
vi /etc/sysconfig/network-scripts/ifcfg-ovsbr0
配置为:
DEVICE=ovsbr0 ONBOOT=yes DEVICETYPE=ovs TYPE=OVSBridge HOTPLUG=no USERCTL=no
建立基于物理网络的连接,可以使用gre或者vxlan。
GRE隧道
ovs-vsctl add-port ovsbr0 gre0 -- set interface gre0 type=gre options:remote_ip=192.168.24.2
VXLAN
ovs-vsctl add-port ovsbr0 vxlan0 -- set interface vxlan0 type=vxlan options:remote_ip=192.168.24.2
注意,如果开启了防火墙,需要开放相应端口。
使用PING命令来检测网络是否畅通吧:
ping 10.0.0.2 ping 10.0.0.3
配置Docker使用OpenVSwitch
停止Docker
systemctl stop docker
关闭并删除默认的docker0网桥
ip link set dev docker0 down brctl delbr docker0 iptables -t nat -F POSTROUTING
创建自定义的docker0网桥,桥接到ovsbr0上
vi /etc/sysconfig/network-scripts/ifcfg-docker0
配置为:
DEVICE=docker0 ONBOOT=yes TYPE=Bridge OVS_BRIDGE=ovsbr0 USERCTL=no BOOTPROTO=none HOTPLUG=no IPADDR0=10.0.1.1 PREFIX0=24 MTU=1446
重启网络,启动docker
systemctl restart network systemctl start docker
重启网络后,需要重新建立隧道连接!
注意事项
- MTU需要仔细设置,会影响网络速度,GRE方式设为1462,vxlan设为1450。
《Docker使用OpenVSwitch实现跨主机网络互通》有1个想法