Docker(九) - Swarm服务(service)与负载均衡

需要准备的:

  1. 一台管理节点主机(可虚拟)和俩台worker工作节点主机(可虚拟)。
  2. 实验的机器都需要存在你要运行的镜像。

进入管理节点终端

格式:docker service create --replicas 数量 -p 访问端口:容器端口 --name 服务名 镜像名:标签
例子:

# docker service create --replicas 3 -p 80:80 --name nginx nginx:1.13.7-alpine

service create:创建服务
--replicas:多少个副本,就是启用多少个节点。节点启动会自动启动容器。
-p:外部访问端口
--name:服务名称,这个使用# docker service ps 服务名称 查看开启的服务信息。

查看所有服务

# docker service ls

伸缩服务

这个伸缩服务是嘛意思呢?就是扩展和收缩,根据你服务器的压力进行伸缩。
在这里插入图片描述
我现在是开启了俩个副本。

新增一个副本

# docker service scale 服务名称=3

在这里插入图片描述

删除服务

# docker service rm 服务名称

负载均衡

要实现docker自带的负载均衡就得让所有的容器连上同一个网络。

扫描二维码关注公众号,回复: 4643971 查看本文章

创建网络

 # docker network create --driver overlay test

创建服务

# docker service create --replicas 3 --network test  -p xx:xx --name 服务名 镜像名

# docker network inspect test

重点在于 --network test test就是上面你建立的网络名称。此时所有的服务节点都会连上。

默认采用的是 vip 负载均衡模式,vip模式,就是docker swarm为每一个启动的service分配一个vip,并在DNS中将service name解析为该vip,发往该vip的请求将被自动分发到service下面的诸多active task上(down掉的task将被自动从vip均衡列表中删除)。

测试负载均衡

# for i in {1..10}; do curl ip地址;done

在终端中负载均衡是实现了,但是你用浏览器去访问的话,会发现刷新没有效果。其实是有效果的,等几十秒吧。

或者模拟繁忙
在输出之前使用PHP的sleep(1),就是延迟一秒,快速按F5刷新俩次,就能看到效果了。

图形化界面查看各节点

# docker service create \
  --name=viz \
  --publish=8080:8080/tcp \
  --constraint=node.role==manager \
  --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
  dockersamples/visualizer

浏览器访问这个容器,端口8080

ip地址(或域名):8080

猜你喜欢

转载自blog.csdn.net/weikaixxxxxx/article/details/85066610
今日推荐