CentOS Docker跨宿主机通讯Open vSwitch(一)

Open vSwith 安装

1、安装依赖包:yum -y install openssl-devel wget kernel-devel
2、安装开发工具:yum groupinstall “Development Tools”
3、添加用户:adduser ovswitch,切换用户并跳转至用户文件夹:su - ovswitch //此步骤并不是必须,仅仅为为了有一个用户文件夹好用来执行后面的命令,可以是用当前的非root 用户执行下面相关的命令
4、下载源码:wget http://openvswitch.org/releases/openvswitch-2.5.1.tar.gz
5、解压:tar xfz openvswitch-2.5.1.tar.gz
6、创建编译目录:mkdir -p ~/rpmbuild/SOURCES
7、从spec文件中删除openvswitch-kmod的依赖包,并创建一个新的spec文件:
sed ‘s/openvswitch-kmod, //g’ openvswitch-2.5.1/rhel/openvswitch.spec > openvswitch-2.5.1/rhel/openvswitch_no_kmod.spec
8、开始编译:rpmbuild -bb –without=check ~/openvswitch-2.5.1/rhel/openvswitch_no_kmod.spec
可能出现以下错误:
error: File /home/ovswitch/rpmbuild/SOURCES/openvswitch-2.5.1.tar.gz: No such file or directory
解决办法:cp openvswitch-2.5.1.tar.gz rpmbuild/SOURCES
9、退出当前用户使用root: exit
10、安装编译生成的rpm文件:
yum localinstall /home/ovswitch/rpmbuild/RPMS/x86_64/openvswitch-2.5.1-1.x86_64.rpm

11、启动服务:systemctl start openvswitch.service
12、查看服务状态:systemctl -l status openvswitch.service
可能出现以下错误:

openvswitch.service - LSB: Open vSwitch switch
Loaded: loaded (/etc/rc.d/init.d/openvswitch)
Active: activating (start) since 四 2014-12-04 18:35:32 CST; 1min 30s ago
Control: 13694 (openvswitch)
CGroup: /system.slice/openvswitch.service
├─13694 /bin/sh /etc/rc.d/init.d/openvswitch start
├─13696 /bin/sh /usr/share/openvswitch/scripts/ovs-ctl start –system-id=random
├─13697 tee -a /var/log/openvswitch/ovs-ctl.log
├─13723 ovs-vswitchd unix:/var/run/openvswitch/db.sock -vconsole:emer -vsyslog:err -vfile:info –mlockall –no-chdir –log-file=/var/log/openvswitch/ovs-vswitchd.log –pidfile=/var/run/openvswitch/ovs-vswitchd.pid –detach –monitor
├─13724 ovs-vswitchd unix:/var/run/openvswitch/db.sock -vconsole:emer -vsyslog:err -vfile:info –mlockall –no-chdir –log-file=/var/log/openvswitch/ovs-vswitchd.log –pidfile=/var/run/openvswitch/ovs-vswitchd.pid –detach –monitor
└─13725 ovs-vswitchd unix:/var/run/openvswitch/db.sock -vconsole:emer -vsyslog:err -vfile:info –mlockall –no-chdir –log-file=/var/log/openvswitch/ovs-vswitchd.log –pidfile=/var/run/openvswitch/ovs-vswitchd.pid –detach –monitor

12月 04 18:35:33 localhost.localdomain openvswitch[13694]: /etc/openvswitch/conf.db does not exist … (warning).
12月 04 18:35:33 localhost.localdomain openvswitch[13694]: Creating empty database /etc/openvswitch/conf.db ovsdb-tool: I/O error: /etc/openvswitch/conf.db: failed to lock lockfile (Resource temporarily unavailable)
12月 04 18:35:33 localhost.localdomain openvswitch[13694]: [FAILED]
12月 04 18:35:33 localhost.localdomain openvswitch[13694]: Inserting openvswitch module [ OK ]

解决办法:
yum install policycoreutils-python.x86_64 0:2.2.5-11.el7
mkdir /etc/openvswitch
semanage fcontext -a -t openvswitch_rw_t “/etc/openvswitch(/.*)?”
restorecon -Rv /etc/openvswitch

再次使用:
systemctl stop openvswitch.service
systemctl start openvswitch.service

再次查看服务状态:systemctl -l status openvswitch.service


安装 bridge-utils

yum install bridge-utils


环境

宿主机1 ip:172.123.111.1
宿主机2 ip:172.123.222.2

这里写图片描述

配置docker1网桥

1、配置新桥。

$ sudo brctl addbr bridge0

$ sudo ip addr add 172.17.111.1/24 dev bridge0

$ sudo ip link set dev bridge0 up

确认新桥的设置
$ ip addr show bridge0

bridge0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state UP group default
link/ether 66:38:d0:0d:76:18 brd ff:ff:ff:ff:ff:ff
inet 172.17.111.1/24 scope global bridge0
   valid_lft forever preferred_lft forever

2、通过设置daemon.json位于/etc/docker/Linux或C:\ProgramData\docker\config\Windows Server 上的文件中的选项,将Docker配置为使用新网桥 。在Docker for Mac或Docker for Windows上,单击Docker图标,选择首选项,然后转到守护程序。

如果daemon.json文件不存在,请创建它。假设文件中没有其他设置,它应该具有以下内容:

{
“bridge”: “bridge0”
}
重新启动Docker以使更改生效。

3、确认新的出站NAT伪装已设置。

$ sudo iptables -t nat -L -n

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all – 172.17.111.0/24 0.0.0.0/0

4、删除现在未使用的docker0桥。

$ sudo ip link set dev docker0 down

$ sudo brctl delbr docker0

$ sudo iptables -t nat -F POSTROUTING

5、开启ip_forward:
$ sysctl -w net.ipv4.ip_forward=1

6、然后通过ovs-vsctl创建ob0网桥并绑定IP:
sudo ovs-vsctl add-br ob0

sudo ovs-vsctl add-port ob0 gre0 – set Interface gre0 type=gre options:remote_ip=docker1

7、通过brctl创建kbr0网桥和ob0关联,并删除docker0网桥的关联:

sudo brctl addif bridge0 ob0

sudo ip link set dev docker0 down

sudo ip link del dev docker0

8、创建或修改 /etc/sysconfig/network-scripts/route-eth0(eth0为实际网卡),内容如下:
172.17.222.1/24 via 172.123.222.2 dev eth0

9、配置完成后,重启网络服务:
systemctl restart network.service

配置docker2网桥

1、配置新桥。

$ sudo brctl addbr bridge0

$ sudo ip addr add 172.17.222.1/24 dev bridge0

$ sudo ip link set dev bridge0 up

确认新桥的设置
$ ip addr show bridge0

bridge0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state UP group default
link/ether 66:38:d0:0d:76:18 brd ff:ff:ff:ff:ff:ff
inet 172.17.222.1/24 scope global bridge0
   valid_lft forever preferred_lft forever

2、通过设置daemon.json位于/etc/docker/Linux或C:\ProgramData\docker\config\Windows Server 上的文件中的选项,将Docker配置为使用新网桥 。在Docker for Mac或Docker for Windows上,单击Docker图标,选择首选项,然后转到守护程序。

如果daemon.json文件不存在,请创建它。假设文件中没有其他设置,它应该具有以下内容:

{
“bridge”: “bridge0”
}
重新启动Docker以使更改生效。

3、确认新的出站NAT伪装已设置。

$ sudo iptables -t nat -L -n

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all – 172.17.222.0/24 0.0.0.0/0

4、删除现在未使用的docker0桥。

$ sudo ip link set dev docker0 down

$ sudo brctl delbr docker0

$ sudo iptables -t nat -F POSTROUTING

5、开启ip_forward:
$ sysctl -w net.ipv4.ip_forward=1

6、然后通过ovs-vsctl创建ob0网桥并绑定IP:
sudo ovs-vsctl add-br ob0

sudo ovs-vsctl add-port ob0 gre0 – set Interface gre0 type=gre options:remote_ip=docker1

7、通过brctl创建bridge0 网桥和ob0关联,并删除docker0网桥的关联:

sudo brctl addif bridge0 ob0

sudo ip link set dev docker0 down

sudo ip link del dev docker0

8、创建或修改 /etc/sysconfig/network-scripts/route-eth0(eth0为实际网卡),内容如下:
172.17.111.1/24 via 172.123.111.1 dev eth0

9、配置完成后,重启网络服务:
systemctl restart network.service

这里写图片描述

参考:
资料1

docker官网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值