networking和负载均衡器如何在Docker群集模式下工作?

我是Dockers和容器的新手。 我正在浏览docker的教程,并且遇到了这个信息。 https://docs.docker.com/get-started/part3/#docker-composeyml

networks: - webnet networks: webnet: 

什么是networking? 该文件说:“通过称为webnet的负载平衡networking指示web容器共享端口80(在内部,容器本身将在临时端口上发布到web端口80)”

那么,默认情况下,覆盖networking在Docker集群中是负载平衡的吗? 什么是algorithm使用的负载均衡?

其实我不清楚为什么我们在覆盖networking上有负载平衡。

请指教。

不知道我可以比文档更清楚,但也许重新编写将有所帮助。

首先,您在这里使用的文档使用了Docker的swarm mode

什么是swarm mode

Swarm是Docker引擎或节点的集群,您可以在其中部署服务。 Docker Engine CLI和API包括pipe理群集节点(例如,添加或移除节点)的命令,以及在整个群体中部署和编排服务。

从SO文档:

Swarm是多个集中部署服务的Docker引擎(或节点)。 Swarm用于在许多物理,虚拟或云计算机上分配处理。

因此,在群集模式下,您可以使用多主机(vms和/或物理)集群,这些集群通过docker engine相互通信。

Q1。 什么是networking?

webnet是启动堆栈时创build的覆盖networking的名称。

覆盖networkingpipe理参与群集的Docker守护进程之间的通信

在你的机器集群中,创build了一个虚拟networking,其中每个服务都有一个ip映射到内部DNS条目(这是服务名称),并允许docker将进入的数据包路由到群集中的任何位置的正确容器簇)。

Q2。 那么,默认情况下,覆盖networking在Docker集群中是负载平衡的吗?

是的,如果您使用覆盖networking,但也可以删除服务networksconfiguration以绕过该networks 。 那么你将不得不发布你想要公开的服务的端口。

Q3。 什么是algorithm使用的负载均衡?

从这个由swarm master bmitch回答的SO问题 ;):

该algorithm目前是循环法,我没有看到它可以插入的迹象。 更高级别的负载平衡器将允许将群集节点取下进行维护,但任何粘滞会话或其他路由function都将由群集模式中的循环algorithm取消。

Q4。 其实我不清楚为什么我们在覆盖networking上有负载平衡

docker群模式/服务的目的是允许复制服务的编排,这意味着我们可以扩大/缩小在群中部署的容器。

再次从文档 :

Swarm模式有一个内部的DNS组件,可以自动为群集中的每个服务分配一个DNS条目。 群pipe理器使用内部负载平衡根据服务的DNS名称在群集内的服务之间分配请求。

因此,您可以像部署10个完全相同的容器(让我们说nginx与您的应用程序的HTML / JS),而无需处理专用networkingDNS条目,端口configuration等…任何传入的请求将自动负载平衡主机参与一群。

希望这可以帮助!