1、环境
dokcer1:172.25.17.101 | master && slave |
---|---|
docker2:172.25.17.102 | slave |
dokcer3:172.25.17.103 | slave |
2、准备节点,三个节点都需nginx镜像 docker tag nginx:1.16 nginx 修改标签
master:
docker load -i visualizer.tar
###删除所有不用的容器网络,卷,容器...
3、步骤
master:
创建集群
docker swarm init 已经内置
docker swarm join --token SWMTKN-1-6amy7d20mbwy2wxrpw5yio8ksycsl8c754x0wq684f9nd4dd4r-937fdrhr8k23h77dq8hgz7klh 172.25.17.101:2377
创建网络
docker network create webnet
创建服务
docker service create --name web --replicas 3 --publish 80:80 nginx
docker server ls 查看服务
docker service ps web 查看web服务
docker ps
echo docker1 >index.html
docker cp index.html 9e444c1da720:/usr/share/nginx/html
slave:
加入集群
docker swarm join --token SWMTKN-1-6amy7d20mbwy2wxrpw5yio8ksycsl8c754x0wq684f9nd4dd4r-937fdrhr8k23h77dq8hgz7klh 172.25.17.101:2377
echo docker2/3 > index.html
docker cp index.html 71b126f2e499/28bf982d4f38:/usr/share/nginx/html
master:
创建监控
https://github.com/dockersamples/docker-swarm-visualizer swarm监控部署
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 监控的镜像
拉升服务
docker service scale web=6 拉升副本,如果拉升的服务是节点的整数倍,>那么,每个节点分配相同的服务,若为奇数,分配给性能好的节点多
http://172.25.17.101:8080 查看监控服务,自动实现负载均衡和高可用
server3:systemctl stop docker server3上的服务会迁移到1或者2上,但是当3再次起来的时候,服务不会迁移回来,只能拉升服务,重新调度分配
滚动更新:
docker service update --help
docker service update --image game2048 --update-delay 5s --update-parallelism 2 web 更新web服务的镜像为game2048,每5s更新2个服务的镜像
测试:
http://172.25.17.101:8080
global模式
每个节点部署仅一个服务,无法拉升,加入的节点会自动被部署服务,down掉
重启之后都会自动被部署
docker service rm web 删除web服务
docker service create --name web --publish 80:80 --mode global game2048