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,但也可以删除服务networks
configuration以绕过该networks
。 那么你将不得不发布你想要公开的服务的端口。
Q3。 什么是algorithm使用的负载均衡?
从这个由swarm master bmitch回答的SO问题 ;):
该algorithm目前是循环法,我没有看到它可以插入的迹象。 更高级别的负载平衡器将允许将群集节点取下进行维护,但任何粘滞会话或其他路由function都将由群集模式中的循环algorithm取消。
Q4。 其实我不清楚为什么我们在覆盖networking上有负载平衡
docker群模式/服务的目的是允许复制服务的编排,这意味着我们可以扩大/缩小在群中部署的容器。
再次从文档 :
Swarm模式有一个内部的DNS组件,可以自动为群集中的每个服务分配一个DNS条目。 群pipe理器使用内部负载平衡根据服务的DNS名称在群集内的服务之间分配请求。
因此,您可以像部署10个完全相同的容器(让我们说nginx与您的应用程序的HTML / JS),而无需处理专用networkingDNS条目,端口configuration等…任何传入的请求将自动负载平衡主机参与一群。
希望这可以帮助!