Docker Overlay网络的一些总结

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介: 在早期的docker版本中,是不支持跨主机通信网络驱动的,也就是说如果容器部署在不同的节点上面,只能通过暴露端口到宿主机上,再通过宿主机之间进行通信。随着docker swarm集群的推广,docker也有了自家的跨主机通信网络驱动,名叫overlay,overlay网络模型是swarm集群容器间通信的载体,将服务加入到同一个网段上的Overlay网络上,服务与服务之间就能够通信。

在早期的docker版本中,是不支持跨主机通信网络驱动的,也就是说如果容器部署在不同的节点上面,只能通过暴露端口到宿主机上,再通过宿主机之间进行通信。随着docker swarm集群的推广,docker也有了自家的跨主机通信网络驱动,名叫overlay,overlay网络模型是swarm集群容器间通信的载体,将服务加入到同一个网段上的Overlay网络上,服务与服务之间就能够通信。


容器之间可互相通信



overlay网络模型在docker集群节点间的加入了一层虚拟网络,它有独立的虚拟网段,意味着docker容器发送的内容,会先发送到虚拟子网,再由虚拟子网包装为宿主机的真实网址进行发送。


也意味着在overlay网络模型上,docker不会暴露端口给宿主机,所有有关网络的事情都交给overlay去处理了,这样的好处就是在同一台服务器,不会引起端口冲突,理解这点非常重要。


下面我画个模型图给大家理解下:

640.jpg


在早期使用docker进行微服务部署时,你肯定干过将docker容器所在宿主机的ip作为注册地址,因为如果你将容器内的ip作为注册地址,其他服务将不可访问你的服务,只能将宿主机的ip挂在容器内部处理,或者在容器内部添加ip地址环境变量来处理。


当使用docker swarm进行集群服务部署时,这个问题自然也就随之解决了,当服务已加入到overlay网络中,服务容器内会获得一个overlay网络下的一个地址,如下:

640.jpg


而dubbo默认会拿eth0的ip作为注册地址,因此服务只需要将docker容器的ip地址作为注册地址就行了,只要服务与服务之间在同一个ovelay网段下,就可以进行通信。

这里我特别做了一个验证,如下:

640.jpg640.jpg


提供者和消费者同时部署了2个实例,在相同overlay网段下,相互之间是可通信的。


负载均衡特性



前面我也说了,服务的端口会交给overlay网络去处理。在Overlay网络下,即使该节点并没有部署指定服务,也会监听该服务的端口,docker通过这个特性实现了访问任意一个节点+服务对应端口,就可以访问服务,而且还具备负载均衡特性。

基于该特性,我突发奇想,我把服务的网关加入集群后,无需关心网关被分配在哪个节点上,只需要在集群再上一层nginx层配置若干个节点ip+网关服务端口,就可实现双层负载均衡,即nginx访问网关时的负载均衡,访问集群时的负载均衡。如果此时你正在搭建docker swarm集群,我建议你把网关项目同时加入到集群中,再通过nginx做双层负载均衡。


swarm load balancer:

640.jpg


Compose编排文件的网络选择



编排文件有个不太灵活的地方, 初次使用它来创建swarm集群的人可能会犯一些错误,比如说:


1.如果你没有指定网络,它会给你默认创建一个网络,如:

stackname_default

2.假如两个stack栈分别属于不同的overlay网络,那么不同stack栈的服务是不可以进行通信的。

3.如果你指定一个网络,没有写name属性的,那么它会在你指定的网络名字前面加个stackname,这本就不是我们设定好的名字,也不知道docker为什么要这么做。

4.如果该网络已存在,在部署时还会报错,不会智能将该stack服务地加入该网络中。

基于上面几点坑爹的想不明白docker为什么这么做的问题,我建议你在部署服务前,先通过命令创建一个网络:

$ sudo docker network create -d overlay chaos_net


为了防止overlay的网络会跟其它网络有冲突,更严谨的做法是自定义overlay网段:

$ sudo docker network create -d overlay --subnet=10.0.15.0/24 chaos_net


在编排文件的networks上配置defualt属性,在defualt属性下面添加external属性,在其下面填写刚刚生成的网络的名称:

networks:
  default:
    external:
      name: chaos_net


官方解析如下图所示:

640.jpg


这么做的好处是可以灵活地将不同stack服务栈加入到相同网络下,也可避免上面提到的几个坑。


相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
17天前
|
NoSQL 关系型数据库 MySQL
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
129 56
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
|
29天前
|
安全 Docker 容器
docker的默认网络模式有哪些
Docker 默认网络模式包括:1) bridge:默认模式,各容器分配独立IP,可通过名称或IP通信;2) host:容器与宿主机共享网络命名空间,性能最优但有安全风险;3) none:容器隔离无网络配置,适用于仅需本地通信的场景。
38 6
|
1月前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
100 7
|
2月前
|
安全 网络安全 数据安全/隐私保护
利用Docker的网络安全功能来保护容器化应用
通过综合运用这些 Docker 网络安全功能和策略,可以有效地保护容器化应用,降低安全风险,确保应用在安全的环境中运行。同时,随着安全威胁的不断变化,还需要持续关注和研究新的网络安全技术和方法,不断完善和强化网络安全保护措施,以适应日益复杂的安全挑战。
46 5
|
2月前
|
Docker 容器
【赵渝强老师】Docker的None网络模式
Docker容器在网络方面实现了逻辑隔离,提供了四种网络模式:bridge、container、host和none。其中,none模式下容器具有独立的网络命名空间,但不包含任何网络配置,仅能通过Local Loopback网卡(localhost或127.0.0.1)进行通信。适用于不希望容器接收任何网络流量或运行无需网络连接的特殊服务。
|
2月前
|
Docker 容器
【赵渝强老师】Docker的Host网络模式
Docker容器在网络环境中是隔离的,可通过配置不同网络模式(如bridge、container、host和none)实现容器间或与宿主机的网络通信。其中,host模式使容器与宿主机共享同一网络命名空间,提高性能但牺牲了网络隔离性。
|
2月前
|
Kubernetes Docker 容器
【赵渝强老师】Docker的Container网络模式
Docker容器在网络环境中彼此隔离,但可通过配置不同网络模式实现容器间通信。其中,container模式使容器共享同一网络命名空间,通过localhost或127.0.0.1互相访问,提高传输效率。本文介绍了container模式的特点及具体示例。
|
2月前
|
Linux Docker 容器
【赵渝强老师】Docker的Bridge网络模式
本文介绍了Docker容器的网络隔离机制及其四种网络模式:bridge、container、host和none。重点讲解了默认的bridge模式,通过示例演示了如何创建自定义bridge网络并配置容器的网络信息。文中还附有相关图片和视频讲解,帮助读者更好地理解Docker网络的配置和使用方法。
|
24天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
183 77

热门文章

最新文章