25

I am new to Dockers and containers. I was going through the tutorials for docker and came across this information. https://docs.docker.com/get-started/part3/#docker-composeyml

   networks:
     - webnet
networks:
  webnet:

What is webnet? The document says

Instruct web’s containers to share port 80 via a load-balanced network called webnet. (Internally, the containers themselves will publish to web’s port 80 at an ephemeral port.)

So, by default, the overlay network is load balanced in docker cluster? What is load balancing algo used?

Actually, it is not clear to me why do we have load balancing on the overlay network.

4

1 回答 1

43

不确定我是否比文档更清楚,但也许改写会有所帮助。

首先,您在此处关注的文档使用所谓的swarm modedocker。

是什么swarm mode

swarm 是 Docker 引擎或节点的集群,您可以在其中部署服务。Docker Engine CLI 和 API 包括用于管理 swarm 节点(例如,添加或删除节点)以及跨 swarm 部署和编排服务的命令。

来自 SO 文档:

一个 swarm 是一组共同部署服务的 Docker 引擎(或节点)。Swarm 用于在许多物理、虚拟或云机器上分配处理。

因此,在 swarm 模式下,您拥有一个多主机(虚拟机和/或物理)集群,这些机器通过它们的docker engine.

Q1。什么是网络?

webnet是您的堆栈启动时创建的覆盖网络的名称。

覆盖网络管理参与 swarm 的 Docker 守护进程之间的通信

在您的机器集群中,创建了一个虚拟网络,其中每个服务都有一个 ip - 映射到一个内部 DNS 条目(即服务名称),并允许 docker 将传入的数据包路由到正确的容器,在群中的任何地方(簇)。

Q2。那么,默认情况下,覆盖网络在 docker 集群中是负载均衡的吗?

是的,如果您使用覆盖网络,但您也可以删除服务networks配置以绕过它。然后,您必须发布要公开的服务的端口。

Q3。使用什么负载平衡算法?

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

该算法目前是循环的,我还没有看到它可以插入的迹象。更高级别的负载平衡器将允许关闭集群节点进行维护,但任何粘性会话或其他路由功能将被集群模式下的循环算法撤消。

Q4。实际上我不清楚为什么我们在覆盖网络上进行负载平衡

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

再次从文档中:

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

因此,您可以部署 10 个完全相同的容器(假设 nginx 与您的应用程序 html/js),而无需处理私有网络 DNS 条目、端口配置等......任何传入的请求都将自动负载平衡到参与的主机一群。

希望这可以帮助!

于 2017-06-20T09:53:32.473 回答