需要准备的:
- 一台管理节点主机(可虚拟)和俩台worker工作节点主机(可虚拟)。
- 实验的机器都需要存在你要运行的镜像。
进入管理节点终端
格式: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