Docker容器跨主机通信之:OVS+GRE】的更多相关文章

默认情况下Docker容器需要跨主机通信两个主机节点都需要在同一个网段下,这时只要两个Docker容器的宿主机能相互通信并且该容器使用net网络模式,改实现方式为网桥模式通信: 除此之外我们还可以通过使用第三方工具为不同主机间创建一个覆盖网络,使之能够跨节点通信,这里将使用Flanneld实现: 安装etcd 创建 cat /etc/etcd/etcd.conf文件 # [member] ETCD_NAME=infra1 ETCD_DATA_DIR="/var/lib/etcd" ET…
一.Docker网络基本原理 直观上看,要实现网络通信,机器需要至少一个网络接口(物理接口或虚拟接口)与外界相通,并可以收发数据包:此外,如果不同子网之间要进行通信,需要额外的路由机制. Docker中的网络接口默认都是虚拟的接口.虚拟接口的最大优势就是转发效率极高.这是因为Linux通过在内核中进行数据复制来实现虚拟接口之间的数据转发,即发送接口的发送缓存中的数据包将被直接复制到接收接口的接收缓存中,而无需通过外部物理网络设备进行交换.对于本地系统和容器内系统来看,虚拟接口跟一个正常的以太网卡…
一.概述 由于docker自身还未支持跨主机容器通信,需要借助docker网络开源解决方案 OVS OpenVSwich即开放式虚拟交换机实现,简称OVS,OVS在云计算领域应用广泛,值得我们去学习使用. OpenVSwich OpenVSwich是一种开源软件,通过软件的方式实现二层交换机功能,专门管理多租赁云计算网络环境,提供虚拟网络中的访问策略.网络隔离.流量监控等. 既然是虚拟交换机,自然与传统的物理交换机有着相同的特性,操作中可以按照理解物理交换机的方式去操作,有助于对虚拟交换机的认识…
一.Docker主机间容器通信的解决方案 Docker网络驱动 Overlay: 基于VXLAN封装实现Docker原生Overlay网络 Macvlan: Docker主机网卡接口逻辑上分为多个子接口,每个子接口标识一个VLAN.容器接口直接连接Docker主机 网卡接口: 通过路由策略转发到另一台Docker主机 第三方网络项目       隧道方案 -- Flannel: 支持UDP和VLAN封装传输方式 -- Weave: 支持UDP(sleeve模式)和 VXLAN(优先fastdb模…
本节内容: Docker容器跨主机通信方案 环境信息 升级内核 安装docker 防火墙设置和开启内核转发 安装启动consul 启动Docker 创建overlay network 创建容器 测试容器跨主机通信 网络拓扑 抓包分析 一.Docker容器跨主机通信方案 实现跨主机的容器通信有很多种方案,需要看实际的网络状况,是云上环境,私有云环境,还是混合云环境:是否有SDN对网络做特殊控制等等.网络状况不一样,适用的方案也会不一样.比如有的环境可以使用路由的方案,有的却不能使用.不考虑网络模型…
1.网络模式 docker支持四种网络模式,使用--net选项指定: host,--net=host,如果指定此模式,容器将不会获得一个独立的network namespace,而是和宿主机共用一个.容器将不会虚拟出自己的网卡,IP等,而是使用宿主机的IP和端口,也就是说如果容器是个web,那直接访问宿主机:端口,不需要做NAT转换,跟在宿主机跑web一样.容器中除了网络,其他都还是隔离的. container,--net=container:NAME_or_ID,与指定的容器共同使用网络,也没…
写在前面的话 目前解决容器跨主机通信的方案有很多种,这里给出的只是其中的一种,而且还不是最好的方案,不过归根结底,大同小异.在学习 docker swarm 之前,大家可以先看看这种. 啥是 overlay 和 etcd 从这里开始正式引入 overlay 网络这个概念,那啥是 overlay 呢? 可以这样理解,在原本主机通信之上开通的通信隧道,覆盖于原本的主机网络之上,所以叫 overlay. 那 etcd 又是啥?它源于 zookeeper,一个用于分享配置和服务发现的分布式一致性 KV…
修改主机docker默认的虚拟网段,然后在各自主机上分别把对方的docker网段加入到路由表中,配合iptables即可实现docker容器夸主机通信.配置方法如下: 设有三台虚拟机 v1: 10.108.8.200 v2: 10.108.8.205 v3: 10.108.8.202 更改虚拟机docker0网段,v1为172.17.1.1/24,v2为172.17.2.1/24,v3为172.17.3.1/24 #v1 sudo ifconfig docker0 172.17.1.1 netm…
一.什么是macvlan 1.macvlan 本身是 linux kernel 模块,其功能是允许在同一个物理网卡上配置多个 MAC 地址, 2.即多个 interface,每个 interface 可以配置自己的 IP. 3.macvlan 本质上是一种网卡虚拟化技术 二.跨主机通信 1.创建macvlan 1.主机luoahong [root@luoahong ~]# docker network create --driver macvlan --subnet 10.0.0.0/24 --…
Docker默认的网络环境下,单台主机上的Docker容器可以通过docker0网桥直接通信,而不同主机上的Docker容器之间只能通过在主机上做端口映射进行通信.这种端口映射方式对很多集群应用来说极不方便.如果能让Docker容器之间直接使用自己的IP地址进行通信,会解决很多问题.按实现原理可分别直接路由方式.桥接方式(如pipework).Overlay隧道方式(如flannel.ovs+gre)等.   docker0网关修改: 首先删除旧的网络 $ sudo ip link set de…
前提:已部署好docker服务服务预计部署情况如下10.0.0.134 Consul服务10.0.0.135 host1  主机名mcw510.0.0.134 host2  主机名mcw6host1与host2通过Consul这个key-value数据库,来报错网络状态信息,用于跨主机容器间通信.包括Network.Endpoint.IP等.其它数据库还可以使用Etcd,Zookeeper 拉取镜像,运行容器 [root@mcw4 ~]$ docker run -d -p 8500:8500 -…
flannel是由CoreOS研究的一种覆盖网络(overlay network)网络工具,目的是帮助每一个host主机有一个完整的子网: 功能是:让集群中不同节点的主机创建的容器都有一个唯一的虚拟IP 工作原理:将TCP数据包装在另一种网络包里进行路由转发和通信,目前已经支持UDP,Vxlan,AWS,APC和GRE等路由转发的模式.默认节点间通过UDP进行转发 1.安装配置etcd etcd功能:与consul的功能差不多,维护主机间的路由表,flannel的配置信息全部存放在etcd里面,…
上一节我们在 host1 中运行了容器 bbox1,今天将详细讨论 overlay 网络跨主机通信的原理. 在 host2 中运行容器 bbox2: bbox2 IP 为 10.0.0.3,可以直接 ping bbox1: 可见 overlay 网络中的容器可以直接通信,同时 docker 也实现了 DNS 服务. 下面我们讨论一下 overlay 网络的具体实现: docker 会为每个 overlay 网络创建一个独立的 network namespace,其中会有一个 linux brid…
Docker的四种网络模式Bridge模式 当Docker进程启动时,会在主机上创建一个名为docker0... Docker的四种网络模式 Bridge模式 当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上.虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中. 从docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关.在主机上创建一对虚拟网卡v…
Docker的四种网络模式 Bridge模式 当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上.虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中. 从docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关.在主机上创建一对虚拟网卡veth pair设备,Docker将veth pair设备的一端放在新创建的容器中,并命名为eth0(容器的网卡)…
文章转载自:http://www.a-site.cn/article/169899.html   Docker的四种网络模式Bridge模式 当Docker进程启动时,会在主机上创建一个名为docker0... Docker的四种网络模式 Bridge模式 当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上.虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中. 从docker0子网中…
文章转载自:http://www.a-site.cn/article/169899.html   Docker的四种网络模式Bridge模式 当Docker进程启动时,会在主机上创建一个名为docker0... Docker的四种网络模式 Bridge模式 当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上.虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中. 从docker0子网中…
容器网络 在前面的博客中已经详细讲解了几种网络方案: none, host, bridge,user-defined.但是他们只是解决了单个主机间的容器的通信问题,并不能实现多个主机容器之间的通信.本篇博客将详细介绍如何实现该功能. 跨主机网络方案包括两大类: docker原生的:overlay和macvlan 第三方方案:flannel.weave和calico 本篇博客将详细讲解overlay以及weave两种方案. overlay Docerk overlay 网络需要一个 key-val…
overlay 如何实现跨主机通信? 在 host2 中运行容器 bbox2: docker run -itd --name bbox2 --network ov_net1 busybox bbox2 IP 为 10.0.0.4,可以直接 ping bbox1: 可见 overlay 网络中的容器可以直接通信,同时 docker 也实现了 DNS 服务. overlay 网络的具体实现: docker 会为每个 overlay 网络创建一个独立的 network namespace,其中会有一个…
容器网络 在前面的博客中已经详细讲解了几种网络方案: none, host, bridge,user-defined.但是他们只是解决了单个主机间的容器的通信问题,并不能实现多个主机容器之间的通信.本篇博客将详细介绍如何实现该功能. 跨主机网络方案包括两大类: docker原生的:overlay和macvlan 第三方方案:flannel.weave和calico 本篇博客将详细讲解overlay以及weave两种方案. overlay Docerk overlay 网络需要一个 key-val…
实验环境: centos7系统 host1:192.168.42.128 host2:192.168.42.129 dokcer容器跨主机连接 1.使用网桥实现跨主机容器连接 2.使用Open vSwitch实现跨主机容器连接 3.使用weave实现跨主机连接 open vSwitch 1.建立ovs网桥 2.添加gre连接 3.配置docker容器虚拟网桥 4.为虚拟网桥添加ovs接口 5.添加不同Docker容器网段路由1.启动ovs服务 $ systemctl start openvswi…
参考https://www.cnblogs.com/CloudMan6/p/7305989.html   今天开始学习 overlay 网络跨主机通信的原理   root@host01:~# ufw allow 4789/udp root@host01:~# ufw status numbered Status: active      To                         Action      From      --                         ----…
上一节我们在 host1 中运行了容器 bbox1,今天将详细讨论 overlay 网络跨主机通信的原理. 在 host2 中运行容器 bbox2: bbox2 IP 为 10.0.0.3,可以直接 ping bbox1: 可见 overlay 网络中的容器可以直接通信,同时 docker 也实现了 DNS 服务. 下面我们讨论一下 overlay 网络的具体实现: docker 会为每个 overlay 网络创建一个独立的 network namespace,其中会有一个 linux brid…
继上篇文章:[Kubernetes]浅谈容器网络,自己给自己挖的坑,这篇文章来谈谈容器跨主机网络. 要理解容器"跨主通信"的原理,就要来谈谈 Flannel 这个项目. Flannel 项目是 CoreOS 公司主推的容器网络方案.提供容器网络功能的,分别是: VXLAN , host-gw , UDP . 这三种不同的实现,代表了三种容器跨主机网络的主流实现方法.这里主要讲 VXLAN 和 UDP 模式. 先从 UDP 模式讲起. 假设,我有两台宿主机: 宿主机 Node 1 上有一…
Calico是一个纯三层的虚拟网络方案,Calico为每个容器分配一个IP,每个host都是router,把不同host的容器连接起来.与vxlan不同的是:calico不对数据包进行封装,不需要NAT和端口映射,扩展性和性能都很好 与其他容器网络相比,calico还有一个优势:network policy.用户可以动态定义ACL规则,控制进出容器的数据包,实现业务需求 calico依赖etcd在不同主机间共享和交换信息,存储calico网络状态.calico网络中每个主机都要运行calico组…
端口映射.ovs. fannel,weave 1.使用网桥实现跨主机容器连接 使用Open vSwitch实现跨主机容器连接…
1使用网桥实现跨主机容器连接. 2使用open vswitch虚礼的交换机实现跨主机容器连接. 3使用weave开源项目工具实现跨主机连接. 使用网桥实现跨主机容器连接:在同一个docker的主机中docker容器使用默认的docker0网桥来进行网络的通信,如果将连接容器的网桥也桥接到docker主机的网卡上,并且将网桥分配的ip地址与docker主机分配的ip地址设置为同一ip段,就相当于将容器与docker主机的网咯连接在了一起,就实现了跨主机的容器间的通信. 在不同的docker主机中分…
open vswitch 实现跨主机容器连接          准备条件   将本地的网卡 与新建的网桥建立连接   配置 docker 启动项       weave实现跨主机容器连接   null…
一.什么是容器网络栈 所谓容器能看见的"网络栈",被隔离在自己的Network Namespace当中 1.网卡(network interface) 2.回环设备(loopback device) 3.路由表(Routing Table) 4.iptables规则 当然 ,容器可以直接声明使用宿主机的网络栈:-net=host(不开启Network Namespace),这样可以为容器提供良好的网络性能,但是也引入了共享网络资源的问题,比如端口冲突. 大多数情况下,我们希望容器能使用…
一.配置overlay类型网络准备工作 1.在luoahong3主机上 docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap [root@luoahong3 ~]# docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap Unable to find image '…