利用覆盖怎么实现码头工人容器间跨宿主机通信

  

这期内容当中小编将会给大家带来有关利用overlay怎么实现docker容器间跨宿主机通信,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

overlay网络解析

内置跨主机的网络通信一直是Docker备受期待的功能,在1.9版本之前,社区中就已经有许多第三方的工具或方法尝试解决这个问题,例如Macvlan、Pipework、Flannel、Weave等。

虽然这些方案在实现细节上存在很多差异,但其思路无非分为两种: 二层VLAN网络和Overlay网络

简单来说,二层VLAN网络解决跨主机通信的思路是把原先的网络架构改造为互通的大二层网络,通过特定网络设备直接路由,实现容器点到点的之间通信。这种方案在传输效率上比Overlay网络占优,然而它也存在一些固有的问题。

这种方法需要二层网络设备支持,通用性和灵活性不如后者。

由于通常交换机可用的VLAN数量都在4000个左右,这会对容器集群规模造成限制,远远不能满足公有云或大型私有云的部署需求; 大型数据中心部署VLAN,会导致任何一个VLAN的广播数据会在整个数据中心内泛滥,大量消耗网络带宽,带来维护的困难。

相比之下,Overlay网络是指在不改变现有网络基础设施的前提下,通过某种约定通信协议,把二层报文封装在IP报文之上的新的数据格式。这样不但能够充分利用成熟的IP路由协议进程数据分发;而且在Overlay技术中采用扩展的隔离标识位数,能够突破VLAN的4000数量限制支持高达16M的用户,并在必要时可将广播流量转化为组播流量,避免广播数据泛滥。

因此,Overlay网络实际上是目前最主流的容器跨节点数据传输和路由方案。

容器在两个跨主机进行通信的时候,是使用overlay network这个网络模式进行通信;如果使用host也可以实现跨主机进行通信,直接使用这个物理的ip地址就可以进行通信。overlay它会虚拟出一个网络比如10.0.2.3这个ip地址。在这个overlay网络模式里面,有类似于服务网关的地址,然后把这个包转发到物理服务器这个地址,最终通过路由和交换,到达另一个服务器的ip地址。

利用overlay怎么实现docker容器间跨宿主机通信

环境介绍


hostnameip系统版本cdh210.30.10.111centos7cdh310.30.10.112centos7

consul安装配置

要实现overlay网络,我们会有一个服务发现。比如说consul,会定义一个ip地址池,比如10.0.2.0/24之类的。上面会有容器,容器的ip地址会从上面去获取。获取完了后,会通过ens33来进行通信,这样就可以实现跨主机的通信。

利用overlay怎么实现docker容器间跨宿主机通信

consul通过docker部署在cdh2,首先需要修改cdh2中的docker配置并重启

[root@cdh2 /]# vim /etc/docker/daemon.json//添加以下配置
  “live-restore":没错
  [root@cdh2 /] #, systemctl  restart 码头工人

“live-restore”:真正的此配置的作用为在码头工人守护程序停止或重启的时候,容器依然可以保持运行

在cdh2下载领事镜像并启动

[root@cdh2 /] #, docker  pull 领事   [root@cdh2 /] #, docker  run  -d  -p  8500:8500  -h  consul ——name  consul 高

修改cdh2中的码头工人配置并重启

[root@cdh2 /] #, vim /etc/码头工人/daemon.json   #,添加以下两行配置   “cluster-store":“领事://10.30.10.111:8500"   “cluster-advertise":“10.30.10.111:2375"   [root@cdh2 /] #, systemctl  restart 码头工人

修改cdh3中的码头工人配置并重启

[root@cdh3 /] #, vim /etc/码头工人/daemon.json   #,添加以下两行配置   “cluster-store":“领事://10.30.10.111:8500"   “cluster-advertise":“10.30.10.112:2375"   [root@cdh3 /] #, systemctl  restart 码头工人

cluster-store指定的是高服务地址,因为领事服务运行在cdh2的8500端口,所以两台机器的cluster-store值均为<强>领事://10.30.10.111:8500
cluster-advertise指定本机与领事的通信端口,所以指定为本机的2375端口

此时可以通过http://10.30.10.111:8500访问领事地址
在<强>键/值

利用覆盖怎么实现码头工人容器间跨宿主机通信