一、Docker Swarm:一个用于创建和管理Docker集群的工具
二、Docker Swarm集群的主要特点
- 方便创建和管理集群
- 可扩展
- 可实现期望的状态调节
- 集群中多主机网络自动扩展管理
- 提供服务发现功能
- 可实现负载均衡
- 安全性强
- 支持延迟更新和服务回滚
三、Docker Sware使用
(一)环境搭建
(1)准备3台Ubuntu系统主机,每个主机都需要安装Docker并且连接网络,Docker版本为1.12及以上,修改3台主机名分别是
Manager、worker1、worker2
(2)集群管理节点设置静态IP,集群中所有节点都可以访问该管理接点
设置完成后,在终端输入ping baidu.com验证是否成功。
(3)集群节点之间必须使用相应的协议并保证以下端口号可用
- 用于集群管理通信的TCP端口2377;
- TCP和UDP端口7946,用于节点间的通信;
- UDP端口4789,用于覆盖网络流量
(二)创建Docker Swarm集群
(1)在名为Manager的Docker机器上创建Docker Swarm集群
#docker swarm init --advertise-addr Manager的静态IP地址 //创建集群
此图表示集群创建成功,显示的两条指令分别是在添加工作节点和管理节点时使用
(2)在管理节点上使用docker node ls指令查看集群节点信息
#docker node ls //查看集群节点信息
(3)向Docker swarm集群中添加工作节点
启动另外两台Docker节点 worker1和worker2,分别执行向集群中加入工作节点的指令(使用创建集群时显示出来的指令)
(4)验证工作节点是否添加成功
(5)向Docker Swarm集群中部署服务
在Docker Swarm集群中部署服务时,既可以使用Docker Hub上自带的镜像来启动服务,也可以使用自己通过Dockerfile构建的镜像来启动服务(这里使用自带镜像)
#docker service create --replicas 1 --name helloworld apline ping docker.com
(6)查看Docker swarm集群中的服务
#docker service ls //查看当前集群中的服务列表信息
#docker service inspect helloworld //查看部署服务的具体详情
#docker service ps helloworld //查看指定服务在集群节点上的分配情况和运行情况
从图中可以看出,helloworld服务的5个副本实例被随机分配到Manager、worker1、worker2这三个节点上运行,并且
他们的状态都是running,表示服务正常运行
注:在集群环境中,服务副本是随机均衡分配到不同节点上的
(7)删除服务
#docker service rm helloworld //删除服务
(8)访问服务
在集群管理节点Manager上,执行docker network ls查看网络列表
在集群管理节点Manager上,创建以overlay为驱动的自定义网络
在集群管理节点Manager上,再次部署服务
在集群管理节点Manager上,使用docker service ps my-web指令查看服务的两个副本的运行情况
外界访问服务(IP+8080端口访问)
当在任意节点访问服务的时候,都可以正常访问部署的服务,这是由于集群负载均衡将请求路由到一个活动容器,从而实现容器
内部正常访问,这也体现了Docker Swarm负载均衡的特点。