神奇的 routing mesh - 天天5分钟玩转 Docker 容器技术(100)

接上一节案例,当咱们访问任何节点的 8080 端口时,swarm 内部的 load balancer 会将请求转发给 web_server 其中的一个副本。html

这就是 routing mesh 的做用。node

494.png

因此,不管访问哪一个节点,即便该节点上没有运行 service 的副本,最终都能访问到 service。web

另外,咱们还能够配置一个外部 load balancer,将请求路由到 swarm service。好比配置 HAProxy,将请求分发到各个节点的 8080 端口。docker

498.png

ingress 网络网络

当咱们应用 --publish-add 8080:80 时,swarm 会从新配置 service,咱们看看容器都发生了哪些重要变化。3d

495.png

 

是否是以为很诧异?以前的全部副本都被 Shutdown,而后启动了新的副本。咱们查看一下新副本的容器网络配置。code

496.png

容器的网络与 --publish-add 以前已经大不同了,如今有两块网卡,每块网卡链接不一样的 Docker 网络。server

实际上:htm

  1. eth0 链接的是一个 overlay 类型的网络,名字为 ingress,其做用是让运行在不一样主机上的容器能够相互通讯。blog

  2. eth1 链接的是一个 bridge 类型的网络,名字为 docker_gwbridge,其做用是让容器可以访问到外网。

497.png

ingress 网络是 swarm 建立时 Docker 为自动咱们建立的,swarm 中的每一个 node 都能使用 ingress

若是你们对 Docker overlay 网络的原理和实现感兴趣,能够重温前面 Docker 容器网络相关章节。

经过 overlay 网络,主机与容器、容器与容器之间能够相互访问;同时,routing mesh 将外部请求路由到不一样主机的容器,从而实现了外部网络对 service 的访问。

那么接下来,service 跟 service 如何通讯呢?这将是咱们下一节要讨论的内容。

书籍:

1.《天天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html

2.《天天5分钟玩转OpenStack》
https://item.jd.com/12086376.html

相关文章
相关标签/搜索