`
lp895876294
  • 浏览: 285625 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

基于openvswitch的不同宿主机docker容器网络互联

    博客分类:
  • CI
 
阅读更多

场景:同一台宿主机的docker容器之间网络是联通的,但是不同宿主机之间的docker容器之间不能直接通信。在使用docker容器为不同宿主机部署分部署服务的时候,必须要实现不同宿主机的docker容器之间的网络互通,保证服务调用端能够直接访问服务。

 

软件版本:

centos:7.1

docker版本:1.11.1

openvswitch :2.3.0

 

测试虚拟机:

server1 : 172.16.230.105

server2 : 172.16.230.109

 

安装openvswitch 



 

       分别在server1和server2上安装openvswitch 。 openvswtich不能直接安装,需要在本地重新打包后安装。安装过程参考如下:

yum -y install wget openssl-devel kernel-devel

yum groupinstall "Development Tools"

cd ~

wget http://openvswitch.org/releases/openvswitch-2.3.0.tar.gz

tar -xvf openvswitch-2.3.0.tar.gz 

mkdir -p ~/rpmbuild/SOURCES

sed 's/openvswitch-kmod, //g' openvswitch-2.3.0/rhel/openvswitch.spec > openvswitch-2.3.0/rhel/openvswitch_no_kmod.spec

cp openvswitch-2.3.0.tar.gz rpmbuild/SOURCES/

rpmbuild -bb --without check ~/openvswitch-2.3.0/rhel/openvswitch_no_kmod.spec

yum localinstall ~/rpmbuild/RPMS/x86_64/openvswitch-2.3.0-1.x86_64.rpm

mkdir /etc/openvswitch

setenforce 0

systemctl start openvswitch.service

systemctl status openvswitch.service -l

systemctl enable openvswitch.service

 

 

在server配置ovs bridge 和 路由

       在配置bridge之前需要首先规划好docker ip地址的分配,保证docker容器的ip地址够用。 此安装过程中docker地址分配方式为:

server1 docker : 172.17.1.0 / 24 , server2 docker : 172.17.2.0 /24 ,在server1和server2中各自可以同时运行253个docker实例。

       server1 和server2中docker容器ip地址掩码为255.255.255.0 , 因此,server1和server2的ip地址属于不同的网段,他们之间如果要通信,需要配置gateway 。

 

server1配置

       修改/proc/sys/net/ipv4/ip_forward的值为1,运行ip转发。虽然现在修改了此值,但是后边启动服务的时候,ip_forward的值又成了0 或着 这个值不允许通过vim命令直接修改, 可以通过sftp工具,直接替换该文件。

        创建网桥kbr0,并删除docker0网桥。

ovs-vsctl add-br obr0

ovs-vsctl add-port obr0 gre0 -- set Interface gre0 type=gre options:remote_ip=172.16.230.105

brctl addbr kbr0

brctl addif kbr0 obr0

ip link set dev docker0 down

ip link del dev docker0

       配置kbr0网卡信息:vim /etc/sysconfig/network-scripts/ifcfg-kbr0

DEVICE=kbr0
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.17.1.1
NETMASK=255.255.255.0
GATEWAY=172.17.1.0
USERCTL=no
TYPE=Bridge
IPV6INIT=no

    配置路由信息: /etc/sysconfig/network-scripts/route-eth0 , 用于转发到其它宿主机上docker容器,其中eth0为真实的网卡设备名称,需要根据虚拟机网卡配置。  

172.17.2.0/24 via 172.16.230.109 dev eth0

       重启网络:systemctl restart network.service , 如果重启失败可以通过 cat /var/log/messages | grep network 查看错误日志。 

 

server2配置

       server2和server1的配置步骤相同,不同的配置为:

ovs-vsctl add-port obr0 gre0 -- set Interface gre0 type=gre options:remote_ip=172.16.230.109

      /etc/sysconfig/network-scripts/ifcfg-kbr0 中 IPADDR=172.17.2.1   GATEWAY=172.17.2.0  

      /etc/sysconfig/network-scripts/route-eth0 中 172.17.1.0/24 via 172.16.230.105 dev eth0

 

设置docker容器网桥  

        直接修改/etc/systemd/system/docker.service ,添加参数 -b kbr0 , 重启docker服务。

ExecStart=/usr/bin/docke daemon --registry-mirror=https://u2ljumtr.mirrortaliyuncs.com -H fd:// -b kbr0

        启动一个docker容器之后,查看ip地址是否在kbr0的ip地址范围内。

 

 

配置完成之后可以看到已经存在kbr0网桥

 

可能出现问题:

        1. Bringing up interface kbr0:  Error: Connection activation failed: Connection 'Bridge kbr0' is not available on the device kbr0 at this time

        解决: 重启服务器

        2. /etc/sysconfig/network-scripts/ifcfg-kbr0中必须带着DEVICE=kbr0

        3. 不同宿主机的docker容器之间执行ping命令时 , 需要关闭防火墙

        4. 网桥查看命令 brctl show ,需要安装yum install bridge-utils 

  

参考地址:

       http://ylw6006.blog.51cto.com/470441/1606239/

       http://www.bubuko.com/infodetail-1006745.html    

       weave跨主机互连:http://blog.csdn.net/wangtaoking1/article/details/45244525

 

  • 大小: 85.1 KB
  • 大小: 79.1 KB
分享到:
评论

相关推荐

    基于macvlan的Docker容器网络系统的设计与实现1

    相较于Docker的原生网络和基于Open vSwitch(ovs)的overlay网络,macvlan方案在功能完备性和数据传输效率上有显著优势。它不仅弥补了Docker网络的缺陷,还提升了网络性能,更适合企业级的生产环境使用。 关键词:...

    利用OpenvSwitch完成Docker跨主机通信集群安装并部署Hadoop集群文档

    利用OpenvSwitch完成Docker跨主机通信集群安装并部署Hadoop集群

    openvswitch的RPM包

    - **ovsdb-server**:存储OVS的状态和配置,包括端口、流表、接口等信息,基于Open vSwitch Database (OVSDB) 协议。 - **ovs-vswitchd**:数据平面的主要组件,负责执行流表规则,进行数据包的转发。 - **ovsdb-...

    安特里亚antrea:基于Open vSwitch的Kubernetes网络

    安特里亚antrea:基于Open vSwitch的Kubernetes网络 Antrea是一个网络解决方案,旨在成为Kubernetes的本机。 它使用作为网络数据平面,在Layer3 / 4上运行,为Kubernetes集群提供网络和安全服务。 Open vSwitch是一...

    openvswitch完全使用手册

    ### OpenvSwitch完全使用手册知识点概述 #### 一、OpenvSwitch简介 OpenvSwitch(简称OVS)是一款高性能的虚拟交换软件,专为虚拟化环境设计,支持Xen/XenServer、KVM及VirtualBox等多种虚拟化技术。在单台物理机器...

    Docker如何使用OpenvSwitch网桥

    OpenvSwitch提供了比传统Linux网桥更为丰富的网络功能,使得Docker容器可以更灵活地处理网络问题,如实现更高级的网络策略,更好地进行网络隔离,以及支持大规模的虚拟网络。尽管Docker默认使用Linux网桥,但Open...

    openvswitch.pdf

    Open vSwitch(Open Virtual Switch)是一个开源的虚拟多层交换机项目,旨在实现多租户数据中心网络的自动化和扩展性。Open vSwitch 通过 OpenFlow 协议与其他网络软件协同工作,支持广泛的高级网络功能,包括虚拟机...

    Open vSwitch in Neutron

    在实际部署中,Open vSwitch通常会配合其他组件如libvirt、KVM或Docker等,提供虚拟机或容器的网络连接。同时,OVS还可以与其他网络编排系统(如OpenDaylight或ONOS)协同工作,实现更高级的网络自动化和策略驱动的...

    openvswitch

    OpenvSwitch(简称OVS)是一款开源的虚拟交换机,被广泛应用于云计算和数据中心网络环境中。它支持多种网络协议和接口类型,可以实现虚拟机之间的通信以及与物理网络的连接。在Docker容器技术中,OVS也常作为网络...

    openvswitch网络配置说明及文件含bonding

    OpenvSwitch(简称OVS)是一款开源的虚拟交换机,广泛应用于云计算、数据中心以及软件定义网络(SDN)环境中。它的主要功能是提供高性能的网络虚拟化服务,允许在网络中创建多个逻辑网络,并且可以灵活地配置这些...

    OpenvSwitch的安装及使用

    ### OpenvSwitch的安装及使用 #### OpenvSwitch简介 **1.1 概述** OpenvSwitch(OVS)是一种高性能的多层虚拟交换机,遵循Apache 2.0开源许可协议,最初由Nicira Networks开发。其核心代码采用高度可移植的C语言...

    openvswitch-2..1.0一键安装脚本

    OpenvSwitch(OVS)是一款开源的虚拟交换机软件,被广泛用于构建数据中心、云计算环境中的网络基础设施。它支持多种虚拟化技术,如KVM、Xen和VMware等,提供高性能、灵活的网络连接解决方案。`openvswitch-2.1.0一键...

    OpenVSwitch的使用

    2. **统一管理机制**:如果物理交换机也能暴露OpenVSwitch的控制抽象接口,则无论是在裸金属环境中还是在虚拟化主机环境中,都可以使用相同的机制来实现自动化网络控制,极大地简化了网络管理的复杂度。 #### 三、...

    open vSwitch完全手册

    Open vSwitch(OVS)是一款高度可扩展的高性能开源虚拟交换机,旨在为虚拟化环境提供高性能的网络连接解决方案。OVS不仅支持传统虚拟交换机的功能,还具备开放式的网络控制能力,能够集成到各种云平台和虚拟化环境中...

    CloudStack-OpenvSwitch+高级网络部署案例

    本文档主要介绍了如何在存在特定限制的现有环境中,利用CloudStack和OpenvSwitch部署一个能够满足特定需求的高级网络架构。下面将从以下几个方面详细介绍知识点: 1. 需求与现状分析: 文档首先介绍了项目需求,...

    Openstack openvswitch 介绍

    Openstack openvswitch neutron Openstack openvswitch neutron

    How to Install Open vSwitch on Linux.

    在Linux系统中安装Open vSwitch(Open vSwitch,简称OVS)是一项重要的任务,它是一个高度可扩展的虚拟交换机,适用于多种网络环境,包括数据中心、云计算平台以及企业网络。OVS支持OpenFlow协议,可以实现网络的灵活...

Global site tag (gtag.js) - Google Analytics