一、Open vSwitch

     Open vSwitch(以下简称为OVS),英文全称:OpenVirtual Switch,顾名思义,Open vSwitch就是开放虚拟交换。我们可以把他理解成一种标准,它旨在通过编程扩展,使庞大的网络自动化(配置、管理、维护),同时还支持标准的管理接口和协议。

    也可以把OVS理解成开源虚拟交换机,可以运行在各类虚拟化平台(如KVM,Xen)上的虚拟机交换机。在虚拟化平台上,OVS 可以为动态变化的端点提供 2 层交换功能,很好的控制虚拟网络中的访问策略、网络隔离、流量监控等等。

二、利用Open vSwitch 构建Docker多主机网络

  2.1 规划docker网段 

  默认的docker0的网段是 172.17.0.0/16,我们需要为每一个docker主机的docker0网段重新划分一个新网段

节点 IP docker0网段
openvswitch01 172.16.200.218 172.17.1.0/24
openvswitch02 172.16.200.223 172.16.2.0/24

  2.2 安装OVS 

  两台机器上都要安装  

wget http://downloads.naulinux.ru/pub/NauLinux/7x/x86_64/Extras/RPMS/Projects/OpenFlow/openvswitch-2.5.0-2.el7.x86_64.rpm

yum -y localinstall openvswitch-2.5.0-2.el7.x86_64.rpm

# 启动
systemctl start openvswitch # 查看状态
systemctl status openvswitch # 开机自启
systemctl enable openvswitch

  

  2.3 修改docker0默认网段 

vim /lib/systemd/system/docker.service

#节点1
ExecStart=/usr/bin/dockerd --bip=172.17.1.1/24 # 节点2
ExecStart=/usr/bin/dockerd --bip=172.17.2.1/24 systemctl daemon-reload systemctl restart docker

  

  2.4 创建网桥并激活

  两边都操作 

ovs-vsctl add-br br0

ip link set dev br0 up

  2.5 建立gre隧道  

# 节点1
ovs-vsctl add-port br0 gre0 -- set Interface gre0 type=gre options:remote_ip=172.16.200.223 # 如果有多个节点,需要添加多条greX(gre0,gre1,...) ## 将docker0加入br0
brctl addif docker0 br0 # 节点2
ovs-vsctl add-port br0 gre0 -- set Interface gre0 type=gre options:remote_ip=172.16.200.218 brctl addif docker0 br0

  

  查看建立的隧道

  

  查看docker0网段

  

  

  2.6 添加静态路由

  在两个节点上新建docker容器,并验证互通性

  

  

  可见,两个节点中的IP地址分别为  172.17.1.0/24 网段和 172.17.2.0/24网段,目前他们还不能相互通信

  

  添加静态路由

# 两个节点

ip route add 172.17.0.0/16 dev docker0

  验证:

  

  

  可以互通

注:以上配置重启就部分会消失,可以设置脚本启动加载 

# 启动br0网桥
ip link set dev br0 up # 将docker0添加到br0中
brctl addif docker0 br0 # 添加静态路由
ip route add 172.17.0.0/16 dev docker0 # 添加到/etc/rc.local

 

Docker多主机网络 OpenvSwitch的更多相关文章

  1. docker多主机网络方案

    本文探讨Docker多主机网络的性能. 在过去的博文里,我测试过 Docker的网络 . MySQL服务器团队 提供了他们自己的结果,和我的观察是一致的. 本文里一系列的测试,想更多关注使用多主机的D ...

  2. Docker跨主机网络——overlay

    前言 在Docker网络--单host网络一文中,我为大家总结了Docker的单机网络相关知识和操作,单机网络比较容易.本文我为大家总结Docker跨主机通信相关知识.同样本文大部分内容以CloudM ...

  3. Docker 单主机网络

    PS:欢迎大家关注我的公众号:aCloudDeveloper,专注技术分享,努力打造干货分享平台,二维码在文末可以扫,谢谢大家. 当容器逐步向容器集群,容器云技术演进的时候,一个不得不面对的问题就是各 ...

  4. Docker 多主机网络总结(非常全)

    PS:文章首发公众号,欢迎大家关注我的公众号:aCloudDeveloper,专注技术分享,努力打造干货分享平台,二维码在文末可以扫,谢谢大家. 上篇文章介绍了容器网络的单主机网络,本文将进一步介绍多 ...

  5. Docker 跨主机网络方案分析

    PS:文章首发公众号,欢迎大家关注我的公众号:aCloudDeveloper,专注技术分享,努力打造干货分享平台,二维码在文末可以扫,谢谢大家. 上篇文章介绍了容器网络的单主机网络,本文将进一步介绍多 ...

  6. Docker多主机网络

    网络术语概念 二层交换技术:工作在OSI七层网络模型的第二层,通过MAC地址进行帧转发 三层交换技术:也称为IP交换技术,工作在OSI七层网络模型的第三层,通过IP地址进行包转发.它解决了局域网中网段 ...

  7. Docker 跨主机网络

    Docker提供两种原生的跨主机网络: Overlay  和  Macvlan libnetwork & CNM libnetwork 是 docker 容器网络库,最核心的内容是其定义的 C ...

  8. docker单主机网络

    当你安装Docker时,它会自动创建三个网络.你可以使用以下docker network ls命令列出这些网络: [root@localhost ~]# docker network ls NETWO ...

  9. Docker 跨主机网络 overlay(十六)

    目录 一.跨主机网络概述 二.准备 overlay 环境 1.环境描述 2.创建 consul 3.修改 docker 配置文件 4.准备就绪 三.创建 overlay 网络 1.在 host1 中创 ...

随机推荐

  1. centos7安装oracle亲测可用

    http://www.linuxidc.com/Linux/2016-04/130559p2.htm

  2. 为什么每次进入命令都要重新source /etc/profile 才能生效?

    https://segmentfault.com/q/1010000005981201

  3. Beta阶段中间产物【欢迎来怼】

    一.版本控制 ①Git地址:https://git.coding.net/tianjiping/Android-tianjiping.git ②check in次数:7次. ③成员代码贡献 因为阚博文 ...

  4. 第三次博客作业JSF

    JSF规格化设计发展史以及为什么得到人们重视 查阅了n多资料但是仍然没找到. 就说一些jsf的优势吧. 优势:    (1)UI组件 (2)事件驱动模式 (3)用户界面到业务逻辑的直接映射 (4)程序 ...

  5. 【Coursera】线性回归和逻辑回归

    一.线性回归 1.批量梯度下降法 每次对参数进行一次迭代时,都要扫描一遍输入全集 算法可以收敛到局部最优值 当迭代多次之后,每次迭代参数的改变越小 2.随机梯度下降法 对于一个输入样本,对参数进行一次 ...

  6. 《TCP/IP 详解 卷1:协议》第 4 章:地址解析协议

    链路层是经过单一链路通信的协议层. IP 网络层协议的设计目标是为跨越不同物理类型的.多节点网络的 packet ,提供主机寻址.路由操作. 在其中要注意的一点是:网络层使用的地址和底层网络硬件使用的 ...

  7. IDE调研之二

    Eclipse和Jetbrains的IntelliJ IDEA对比: Eclipse工具 在Eclipse中,可以最大化控制台.通过双击标签或者Ctrl+M快捷键就可以实现,但是在IntelliJ I ...

  8. pxe前期网络准备

    核心交换机:[H3C12510-HEXIN]vlan 3010 //如果存在则不需要创建[H3C12510-HEXIN]dis interface Bridge-Aggregation brief / ...

  9. 在Google Chrome中快速解除网页屏蔽鼠标右键、复制等限制

    第一步,将书签栏设置为显示状态!   第二步,添加新书签——>在标签栏点击右键,选择“添加网页”. 第三步,设置新书签的内容. 1.起名.这个凭个人爱好吧 2.网址栏输入: javascript ...

  10. [转帖]HTTPS的简单说明

    HTTPS(全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,简单讲是 HTTP 的安全版,即 HTT ...