下面我们再去 scale up 一下 web 这个服务 ... 现在这个服务只有一台容器 ... 在集群的 manager 服务器上,执行一下 docker service scale ... 然后是服务的名字 ... 这里就是 web ... 等号的右边是需要的数量 ... 比如我想用 6 个容器运行这个 web 服务 ...
执行一下 ... 回到这个 Visualizer 观察一下 ... 你会发现 node1 这台服务器上会立即出现一个容器 ... 现在它上面有两个容器 ...
剩下的容器应在 node2 还有 node 3 上面去创建 ... 因为它们上面还没有我们的应用需要的镜像 ... 要现去下载 .. 所以需要等一段时间 ...
过一阵子以后 ... 在 node2 还有 node3 上也分别出现两个容器 ... 三台服务器上的容器加起来正好是六个 ...
再查看一下运行 web 服务的这个任务 ... docker service tasks web ... 这里也会显示一共有六个服务 ... 名字就是从 web.1 到 web.6 ..
再回到浏览器 .. 访问一下 node1:3000 ... 注意上面显示的容器的 ID 号 .. 刷新一下 ... 这个容器 ID 号会有变化 .. 也就是现在我们的应用会同时使用多个容器提供服务 ...
我们可以再打开一个浏览器 ... 同样访问一下 node1:3000 ... 看一下这个页面的容器的 ID 号 ... 跟之前是不一样的 ...
这就是 Docker 的负载均衡功能起作用了 ... 我们的 web 服务会由来自不同的服务器上的不同的容器一块儿向用户提供服务 ...
scale 可以 up 也可以 down ... 比如我想让 web 这个服务由 3 个容器提供支持 .. docker service scale web=3
现在每台服务器都运行了一个容器 ... 加起来一共是三个 ... 这是我们期望的 web 服务的状态 ... docker 会维护这个服务的状态 ...
下面我们去关掉 node3 这个服务器 ...
你会看到 node3 已经关掉了 ... 它上面的那个容器也不见了 ... 再等一下 ... web 服务少的那个容器,会出现在集群里的其它的服务器上 ... 这里它会跑到 node2 这个服务器上 ...
因为 docker 会维护我们想要的服务的状态 ... 再到终端上验证一下 ... 在集群的 manager 上面 .. 查看一下 web 这个服务 ...
会显示这个服务的两个容器是在 node2 这台服务器的上面 ...