应用场景:如何将一个应用快速部署到100台服务器上?
- 布置leader节点:
docker swarm init
- 根据提示在各node节点上执行:
docker swarm join --token SWMTKN-1-09mhc7q5anpqtiyqk7mu14ziu8qmzdgcv3auv9y2oxh2r99fjg-199v4b5ta72vdcq47cfixmae7 172.25.254.189:2377
- leader节点查看node节点
docker node ls
- 创建成功的节点,自动新建overlay类型网络
docker network ls
- 在leader节点创建服务部署在2个node 节点上,并查看
docker service create --name my_cluster --replicas 2 -p 80:80 nginx
docker service ls
docker service ps my_cluster
- 访问主机80端口,验证轮询是否成功
echo sm1.westos.com > index.html
docker cp index.html c18df4bbb520:/usr/share/nginx/html/index.html
echo sm3.westos.com > index.html
docker cp index.html 0cd77e241bb8:/usr/share/nginx/html/index.html
应用场景:你的公司在做一个促销活动,用户访问量已经达到上限瓶颈,服务器压力已经到
极限,如何快速的实现扩容,从而保证业务的正常运行。
- 在leader节点上
docker service scale my_cluster=5 #扩容起5个服务器
docker service ps my_cluster
- 在客户端进行访问,可以发现前五次访问的分别是不同的容器id
- 配合visualizer软件,对各节点所开启的容器进行监控:
服务部署官网:
https://github.com/dockersamples/docker-swarm-visualizer
docker service scale my_cluster=10
docker search visualizer
docker pull dockersamples/visualizer
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
- 在客户端进行页面访问查看:
http://172.25.254.189:8080/
- down掉一个主机的服务,自动对容器进行将康检测。
systemctl stop docker
- leader节点的降级和node节点的升级:
docker node promote sm2 #在master上对sm2进行升级
docker node demote sm1 #然后对自己进行降级,sm2主动升为master节点。
- 原本master节点上的容器,也自动迁移到新的master节点上
docker ps