网站首页 > 技术文章 正文
1.Docker的网络模式参考:https://docs.docker.com/engine/userguide/networking/
说明一下,Docker里提到的bridge模式不同于VM中的bridge,应该与VM中的NAT类似。
2.Swarm创建Overlay Network
参考:https://docs.docker.com/engine/swarm/networking/
* 搭建虚机
因为Overlay需要多主机,这里在一台服务器内建立2个虚机Docker-1和Docker-2和2个Linux bridge br-external和br-docker,br-external占用物理服务器的eth0接口。Docker-1、Docker-2、br-docker和br-external的连接如上图所示。Docker-1和Docker-2的OS使用Ubuntu 16.04.3。
* 安装Docker
参考:https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/
分别在Docker-1和Docker-2上,安装Docker。
*建立Swarm集群
参考:https://docs.docker.com/engine/swarm/swarm-tutorial/create-swarm/
参考:https://docs.docker.com/engine/swarm/swarm-tutorial/add-nodes/
先在Docker-1上初始化Swarm。
将Docker-2以Manager身份加入到集群中,这里Docker-1和Docker-2都是Manager。Docker-2也可以以Worker身份加入集群。
集群建立后,在Docker-1和Docker-2上都可以看到2个node。
*创建Overlay Network
参考:https://docs.docker.com/engine/swarm/networking/
在Docker-1上创建1个Overlay的网络net1。
在Docker-2上同时可以看到网络net1。
* 建立Container
可以用如上命令在Docker-1和Docker-2上建立Container。
* Overlay网络的研究
这里另外创建1个Container。
在Docker-2上创建1个以tomcat为基础的Container, net1-c5-web。
进入net1-c5-web后,可以看到有2块网卡,eth0(10.0.0.7)和eth1(172.18.0.5)。
可以看到对外访问的缺省路由是eth1,网关是172.18.0.1。
在Docker-2上,可以看到172.18.0.1的网卡docker-gwbridge。
可以看到Container访问外网时,是经过docker-gwbridge,docker-gwbridge是bridge(相当于VM中的NAT模式,SNAT)。
关于docker-gwbridge,可参考:https://docs.docker.com/engine/swarm/networking/
在Container里还有10.0.0.7的网卡,这个应该是Overylay网络,Container之间的通信使用。
在net1-c5-web上ping在Docker-1上的另一个Container net1-c1的eth0网卡10.0.0.4,可以ping通。
在net1-c1上通过tcpdump可以看到ICMP数据包。
在物理服务器内的br-docker网桥上抓包。
可以看到,net1-c5-web(10.0.0.7)ping net1-c1(10.0.0.4)的是通过VxLAN。
Docker-1和Docker-2上的关于VxLAN的解封装点在哪里呢?进入namespace看看……
在Docker-1中可以到有这些的namespace。
这里就可以看到br0(10.0.0.1)和vxlan,以及对接在Docker-1上的3个Container的veth0、veth1、veth2。
抓取br0、veth0和vxlan0,都可以看到ICMP包,有一点区别是veth0和vxlan0是有IP Fragment。
通过以上的练习,可以大致知道Docker Overlay网络的架构如下:
3.Docker Overlay网络应用的监测
构造2个Container,在c1上安装web服务,用c3访问c1的web服务,在c1、c3以及br-docker上安装虚拟探针,用于分析使用。
在分析平台上,可以看到以下结果:
br-docker监测点上的应用及流量分布(VNI=4097)。
3个监测点(c1、c2和br-docker)的HTTP应用性能指标,可对比分析。
- 上一篇: 盘点c++几种常见的设计模式及具体实现
- 下一篇: Python机器学习之数据划分(持续更新)
猜你喜欢
- 2024-10-14 盘点c++几种常见的设计模式及具体实现
- 2024-10-14 Docker新手福音!这个开源控制面板让你更快上手Docker
- 2024-10-14 Docker-掌握这三种方法,创建自己的docker镜像
- 2024-10-14 docker 基础概念 docker基于什么
- 2024-10-14 小白也能轻松上手,深度体验绿联私有云DX4600 Docker功能
- 2024-10-14 一文带你了解docker常用命令 docker常用命令及参数
- 2024-10-14 Docker最佳实践的反模式 docker反向代理
- 2024-10-14 docker中容器如何实现通信 docker容器之间如何通信
- 2024-10-14 工程化Docker:确保应用程序的可靠性、可扩展性和可维护性
- 2024-10-14 使用pipework将Docker容器配置到本地网络环境中
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)