前言
前文已经描述如何部署单机Docker应用,那本文将会描述如何利用Docker Swarm将单机应用拓展为集群应用
一、创建虚拟机
创建一个最迷你的集群,我们需要三台虚拟机,分别是管理节点m1,然后两个工作节点w1和w2
docker-machine create m1
docker-machine create w1
docker-machine create w2
二、创建集群
使用Docker Swarm创建和管理集群是简单易用的,我们只需要分别创建【管理节点】和【工作节点】,然后将工作节点加入管理节点即可完成
1、初始化集群管理节点
docker-machine ssh m1
docker swarm init --advertise-addr [m1主机的IP]
2、初始化集群工作节点
docker-machine ssh w1
docker swarm join --token [m1的token]
docker-machine ssh w2
docker swarm join --token [m1的token]
只需要以上步骤,我们就完成了最迷你的集群创建,Docker的魅力也就是如此,将传统复杂的集群部署构建工作,简化至此,所以才会有人说Docker正在改变世界不是吗?
然后我们可以在管理节点查看集群状态
docker-machine ssh m1
docker node ls
三、部署服务
1、编写stack-compose.yml文件,用于多服务部署
version: '3'services: nginx: # Nginx服务 image: cheney/nginx:latest ports: - "80:80" volumes: - /Users/cheney/Documents/docker/nginx/log:/var/log/nginx # - /Users/cheney/Documents/docker/nginx/nginx.conf:/etc/nginx/nginx.conf # - /Users/cheney/Documents/docker/nginx/conf.d:/etc/nginx/conf.d # - /Users/cheney/Documents/docker/nginx/html:/usr/share/nginx/html autodeploy: # 自定义NODE服务 image: cheney/autodeploy:latest visualizer: # Docker管理可视化服务 image: dockersamples/visualizer:latest ports: - "8080:8080" volumes: - "/var/run/docker.sock:/var/run/docker.sock" deploy: placement: constraints: [node.role == manager]networks: overlay:
说明:以上yml文件部署了三个服务,分别是一个Nginx应用,一个Node应用,一个visualizer应用(用于可视化监控集群状态)
2、正式部署集群
docker stack deploy --compose-file=stack-compose.yml [集群名称]
只需要以上步骤,Docker Swarm 会全自动地将所有服务以负载均衡的方式部署在不同的主机上,几乎不需要人工干预,通过以下命令可以在m1主机查看集群和服务的部署情况
docker stack ls docker service ls
也可以通过在浏览器上访问如下地址,可视化查看集群状态
http://[m1的主机IP]:8080
image.png
拓展服务的部署数量非常简单,只需在m1执行如下命令
docker service scale [需要拓展的服务]=3
删除部署
如果不希望保留集群,执行下面命令即可清理
docker stack rm [集群名称]
后记
十分感谢您的阅读,Docker系列的文章还有很多细节没有补充,可能对于初学者来说还是难以入门,没有关系,后续我会定期逐渐补充其中细节,完全让每一位希望利用Docker改变世界的人,实现自己的愿景
作者:CheneyXu
作者:宇帅
链接:https://www.jianshu.com/p/7db89f3ab0dd