在 Swarm 集群中, 创建服务时可以通过设置 --replicas
参数来指定此服务在工作节点上运行的任务数。
示例
version: '3'
services:
Nginx:
image: Nginx:latest
deploy:
replicas: 3
ports:
- "80:80"
networks:
- net
visualizer:
image: dockersamples/visualizer:stable
ports:
- "8080:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints: [node.role == manager]
networks:
- net
networks:
net:
在文件所在目录执行 docker stack deploy -c docker-compose.yml Nginx
来创建服务,由于我这里只准备了一台 Docker 主机, 所以在这个 Swarm 集群中情况如图所示:
可以看到我们的 Nginx 服务创建了 3个 Nginx_Nginx 任务, 1个visualizer 服务。
docker ps
查看所有容器
docker exec -it <container id> /bin/bash
依次进入到3个 Nginx_Nginx 任务所对应的容器中
cd /usr/share/Nginx/html
找到 index.html 文件
将3个容器中 index.html 的内容分别改为 Nginx.1, Nginx.2, Nginx.3
echo Nginx.1 > index.html
...
然后我们访问 http://127.0.0.1 , 即可看到相对应的修改页面。 这里我们多尝试几次,会发现,有时候出现的是 Nginx.1, 也会出现 Nginx.2, Nginx.3 。 这就是 Docker Swarm 集群模式中自带的负载均衡带来的效果。
下面,我们来收缩或者拓展在一台工作节点上执行的任务量:
收缩:
docker service scale Nginx_Nginx=2
拓展
docker service scale Nginx_Nginx=5
可通过 docker service ls
来查看服务概况。
总结
服务的部署模式有两种:
- global : 每个工作节点上都会运行一个服务
- replicated: 每个工作节点会运行 replicas 个服务
Docker Swarm 集群内置的负载均衡,在同一个工作节点上, 多个相同的任务(容器)会由 Swarm 集群的负载均衡来命中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。