node1:192.168.1.50 docker 127.17.1.1
node2:192.168.1.52 docker 127.17.2.1
1.1
关闭selinux
setenforce 0(立即生效)
vi /etc/selinux/config ,(重启生效)
#SELINUX=enforcing
SELINUX=disabled
1.2
关闭firewall
centos7默认开启了firewall,需关闭。
systemctl stop firewalld(立即生效)
systemctl disable firewalld(重启生效)
2
安装相关软件包
yum install docker
service docker start
chkconfig docker on
yum install net-tools
yum install bridge-utils
编译安装ovs
node01和node02 安装openvswitch
最新的为openvswitch-2.4.0.tar.gz,
3.1源码安装。
root用户执行:
yum -y install wget openssl-devel kernel-devel
yum groupinstall “Development Tools”
adduser ovswitch
ovswitch用户执行:
su – ovswitch
wget http://openvswitch.org/releases/openvswitch-2.4.0.tar.gz
tar -zxvpf openvswitch-2.4.0.tar.gz
mkdir -p ~/rpmbuild/SOURCES
sed ‘s/openvswitch-kmod, //g’ openvswitch-2.4.0/rhel/openvswitch.spec > openvswitch-2.4.0/rhel/openvswitch_no_kmod.spec
cp openvswitch-2.4.0.tar.gz rpmbuild/SOURCES/
rpmbuild -bb –without check ~/openvswitch-2.4.0/rhel/openvswitch_no_kmod.spec
exit
root用户执行:
yum localinstall /home/ovswitch/rpmbuild/RPMS/x86_64/openvswitch-2.4.0-1.x86_64.rpm
或者下载安装包
http://pan.baidu.com/s/1c0x7Wcw
rpm -ivh openvswitch-2.4.0-1.x86_64.rpm
3.3启动openvswitch
systemctl start openvswitch.service (立即生效)
chkconfig openvswitch on (重启生效)
查看状态:
systemctl status openvswitch.service -l
===========配置篇======
4.node01和node02 配置OVS Bridge及GRE
规划:
node01:容器内地址段172.17.1.0/24,新网桥:kbr0,GRE:gre0
node02:容器内地址段172.17.2.0/24,新网桥:kbr0,GRE:gre0
4.1 node01:部署
开启ip转发:cat /proc/sys/net/ipv4/ip_forward,显示为1,表示开启。
ovs-vsctl add-br obr0
ovs-vsctl add-port obr0 gre0 -- set Interface gre0 type=gre options:remote_ip=192.168.1.52 #node1上执行
ovs-vsctl add-port obr0 gre0 -- set Interface gre0 type=gre options:remote_ip=192.168.1.50 #node2上执行
service docker stop
brctl addbr kbr0
brctl addif kbr0 obr0
ip link set dev docker0 down
ip link del dev docker0
vi /etc/sysconfig/network-scripts/ifcfg-kbr0
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.17.1.1 #node1上配置
IPADDR=172.17.2.1 #node2上配置
NETMASK=255.255.255.0
GATEWAY=172.17.1.0 #node1上配置
GATEWAY=172.17.2.0 #node2上配置
USERCTL=no
TYPE=Bridge
IPV6INIT=no
vi /etc/sysconfig/network-scripts/route-ens192 #(ip -a 查看网卡)这里route-ens192是和 该目录下的ifcfg-ens192对应的
172.17.2.0/24 via 192.168.12.196 dev ens192 #这里ens192是 ip a命令看到的本地网卡不同的机器可能不一样
修改docker配置文件,添加-b参数
vi /etc/sysconfig/docker
OPTIONS='--selinux-enabled -b=kbr0' #docker1.9貌似不修改不起作用
reboot
说一下中间会遇到的坑
1.ip转发
Linux系统缺省并没有打开IP转发功能,要确认IP转发功能的状态,可以查看/proc文件系统,使用下面命令:
cat /proc/sys/net/ipv4/ip_forward
如果上述文件中的值为0,说明禁止进行IP转发;如果是1,则说明IP转发功能已经打开。
要想打开IP转发功能,可以直接修改上述文件:
echo 1 > /proc/sys/net/ipv4/ip_forward
把文件的内容由0修改为1。禁用IP转发则把1改为0。
上面的命令并没有保存对IP转发配置的更改,下次系统启动时仍会使用原来的值,要想永久修改IP转发,需要修改/etc/sysctl.conf文件,修改下面一行的值:
net.ipv4.ip_forward = 1
修改后可以重启系统来使修改生效,也可以执行下面的命令来使修改生效:
sysctl -p /etc/sysctl.conf
进行了上面的配置后,IP转发功能就永久使能了
2.openvswitch无法打开提示 XX.db找不到
/usr/share/openvswitch/scripts/ovs-ctl start
3.docker网卡修改,针对centos7:vi /etc/sysconfig/docker
OPTIONS='--selinux-enabled -b=kbr0'