9. docker网络--Open vSwtich使用和跨容器实战

 

简介:

实现主机 172.31.179.140 和 172.31.179.141 之间docker的通信, 图例如下

Open vSwtich

Open vSwtich 翻译成中文就是开放虚拟交换机, 是使用软件方式实现交换机的功能, 也就是虚拟出来的一个交换机,  因为 docker的容器是在一台主机上面虚拟出来的, 不可能在上面接一个物理的交换机, 只能采用虚拟化技术, 并且 Open vSwtich 虚拟出来的交换机功能也是很强大的 

通过 Open vSwtich 和 docker 结合, 可以发挥他的强大作用

安装Open vSwtich(两台服务器都安装)

安装所需的依赖

[root@talon ~]# yum -y install make gcc openssl-devel autoconf automake rpm-build redhat-rpm-config

安装完成

访问官网下载安装包 http://www.openvswitch.org/download/, 右键复制下载链接, wget下载

[root@talon ~]# wget https://www.openvswitch.org/releases/openvswitch-2.5.8.tar.gz

下载完成, 之后为构建rpm包做一些预处理, 首先建一个文件夹, 把包解压开

[root@talon ~]# mkdir -p ~/rpmbuild/SOURCES
[root@talon ~]# cp openvswitch-2.5.8.tar.gz  ~/rpmbuild/SOURCES/
[root@talon ~]# cd ~/rpmbuild/SOURCES
[root@talon SOURCES]# tar -zxf openvswitch-2.5.8.tar.gz 

之后修改一下解压的文件

[root@talon SOURCES]# sed 's/openvswitch-kmod, //g' openvswitch-2.5.8/rhel/openvswitch.spec > openvswitch-2.5.8/rhel/openvswitch_no_kmod.spec

构建rpm包

[root@talon SOURCES]# rpmbuild -bb --nocheck openvswitch-2.5.8/rhel/openvswitch_no_kmod.spec

执行构建的包

[root@talon SOURCES]# yum localinstall ~/rpmbuild/RPMS/x86_64/openvswitch-2.5.8-1.x86_64.rpm

输入y

完成

启动服务

[root@talon SOURCES]# systemctl start openvswitch

查看状态

配置docker

修改两台服务器的docker0

172.31.179.140的网段改成172.17.42.1/24   此处最好使用  /24 也就是 255.255.255.0 作为子网掩码, 应为 接下来的路由配置要是两个主机网段的上级网络, 使用 255.255.0.0 作为子网掩码

修改172.31.179.140的docker0

[root@talon ~]# vim /etc/docker/daemon.json 
{
"bip": "172.17.42.1/24"
}

修改 172.31.179.141 的 docker0 为 172.17.43.1/24

[root@iZm5e06w0dz0mm8v7hxhdhZ ~]# vim /etc/docker/daemon.json 
{
"bip": "172.17.43.1/24"
}

配置两台服务器的 open vSwtich

配置172.31.179.140 

在172.31.179.140 上添加一个网桥并且在上面加一个到 172.31.179.141的网口

[root@talon ~]# ovs-vsctl add-br br0                                                             
[root@talon ~]# ovs-vsctl add-port br0 gre1 -- set interface gre1 type=gre option:remote_ip=172.31.179.141  

查看配置

[root@talon ~]# ovs-vsctl show

把刚刚新建的网桥挂载到docker0,  brctl 无法执行, 可以使用 yum install -y bridge-utils 安装

[root@talon ~]# brctl addif docker0 br0

完成后重启网卡关闭iptables

[root@talon ~]# ip link set dev br0 up
[root@talon ~]# ip link set dev docker0 up
[root@talon ~]# iptables -t nat -F; iptables -F

添加路由

[root@talon ~]# ip route add 172.17.0.0/16 dev docker0

查看路由

[root@talon ~]# ip route

配置172.31.179.141

同样在172.31.179.141 上添加一个网桥并且在上面加一个到 172.31.179.140的网口

[root@iZm5e06w0dz0mm8v7hxhdhZ ~]# ovs-vsctl add-br br0                                                             
[root@iZm5e06w0dz0mm8v7hxhdhZ ~]# ovs-vsctl add-port br0 gre1 -- set interface gre1 type=gre option:remote_ip=172.31.179.140  

查看配置

[root@iZm5e06w0dz0mm8v7hxhdhZ ~]# ovs-vsctl show

同样也是刚刚建的网桥挂载到docker0

[root@iZm5e06w0dz0mm8v7hxhdhZ ~]# brctl addif docker0 br0

一样的启动网卡关闭 iptables

[root@iZm5e06w0dz0mm8v7hxhdhZ ~]# ip link set dev br0 up
[root@iZm5e06w0dz0mm8v7hxhdhZ ~]# ip link set dev docker0 up
[root@iZm5e06w0dz0mm8v7hxhdhZ ~]# iptables -t nat -F; iptables -F

添加路由规则

[root@iZm5e06w0dz0mm8v7hxhdhZ ~]# ip route add 172.17.0.0/16 dev docker0

查看路由

[root@iZm5e06w0dz0mm8v7hxhdhZ ~]# ip route

相互链接测试

在 172.31.179.140 上面ping  172.31.179.141的docker0 

在 172.31.179.141 上面ping  172.31.179.140的docker0 

如果还是ping不通 , 检查一下两边docker0 网桥, 确定状态是 UP

[root@iZm5e06w0dz0mm8v7hxhdhZ ~]# ip a

如果不是 UP , 可是尝试再次执行 brctl addif docker0 br0,  把br0 接到dcoker0, 会自动启动docker0 的, 再次查看状态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值