zoukankan      html  css  js  c++  java
  • Docker多主机网络 OpenvSwitch

    一、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
    

     

  • 相关阅读:
    Android studio 3+版本apk安装失败问题
    解决华为手机图片选择无效及产生的open failed: EACCES (Permission denied)错误
    Caused by:java.lang.IllegalStateException at android.media.MediaPlayer._setDataSource(Native Method)
    android尺子的自定义view——RulerView
    自定义shareSDK的验证码短信内容
    解决java.lang.IllegalStateException: The application’s PagerAdapter changed the adapter’s content
    解决Android 7.0 App内切换语言不生效的问题
    ClassNotFoundException和NoClassDefFoundError的解决办法
    viewpager+fragment滑动切换卡顿问题
    ios的并发队列控制库
  • 原文地址:https://www.cnblogs.com/bigberg/p/8717974.html
Copyright © 2011-2022 走看看