今天无意中看到了这个东西Visualizer,功能是可以可视化的去观察展示swarm集群里面个节点的信息情况,使用起来很方便。这里整理一下:
我先部署一个三节点的swarm集群:
然后在整个简单的nginx,开7个服务,让三个node节点都跑起来。
docker service create --replicas 3 -p 80:80 --name nginx nginx:1.13.7-alpine
OK,nginx在集群上跑起来了,而且每个节点都可以访问。
然后直接在manager节点上安装Visualizer
docker run -d -p 8081:8080 -v /var/run/docker.sock:/var/run/docker.sock --name visua dockersamples/visualizer:latest
访问http://192.168.0.102:8081/ (IP根据自己实际情况调整,注意是manager节点ip,不能是node节点ip)
第二种姿势是直接加在新项目里,加到docker-compose.yml里面
先把刚刚的环境都清理了
先删除visualizer容器
docker rm 27bb747f91aa267a32c9aa32b407ab4b0b674d87279e1f934d33d5ba7b70597b -f
然后把集群里面跑的那三个nginx全清除
docker service rm 0q28ulho4qpq
现在干净了
然后开始准备docker-compose.yml文件
version: "3"
services:
nginx:
image: nginx
ports:
- "80:80"
networks:
- mainweb
deploy:
mode: replicated
replicas: 7
visualizer:
image: dockersamples/visualizer:stable
ports:
- "8080:8080"
stop_grace_period: 1m30s
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints: [node.role == manager]
networks:
mainweb:
然后执行 把文件拷到主节点上,执行下面命令
docker stack deploy -c docker-compose.yml nv
注意上面,刚开始的时候七个服务只启动了2个,这个不是问题,要等一小会。
然后可以随便找一个节点访问80
然后访问下http://192.168.0.102:8080/
三台服务器跑了7个容器,分布很清晰。然后要注意一个地方,这种直接放到docker-compose.yml的姿势和最上面在manager节点单独安装的最大区别就是,yml这种会导致任何一个节点访问8080都可以看到整个集群的情况,这个很好理解,因为这个服务已经被集成到集群里了,而集群的每个ip:8080就都可以访问了。
部署的时候根据实际情况自己安排即可。