什么是docker swarm :
Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker 主机上的各种Docker资源。Swarm和Kubernetes比较类似,但是更加轻,具有的功能也较kubernetes更少一些。
是Docker公司在2014年12月初发布的一套较为简单的工具,用来管理Docker集群,它将一群Docker宿主机变成一个单一的,虚拟的主机。Swarm使用标准的Docker API接口作为其前端访问入口,换言之,各种形式的Docker Client(docker client in go, docker_py, docker等)均可以直接与Swarm通信。Swarm几乎全部用Go语言来完成开发,上周五,4月17号,Swarm0.2发布,相比0.1版本,0.2版本增加了一个新的策略来调度集群中的容器,使得在可用的节点上传播它们,以及支持更多的Docker命令以及集群驱动。
Swarm deamon只是一个调度器(Scheduler)加路由器(router),Swarm自己不运行容器,它只是接受docker客户端发送过来的请求,调度适合的节点来运行容器,这意味着,即使Swarm由于某些原因挂掉了,集群中的节点也会照常运行,当Swarm重新恢复运行之后,它会收集重建集群信息。
如下是Swarm的原理图:
docker swarm的配置过程:
需要三个7.3的虚拟机,分别安装docker,并在三台虚拟机上打开docker:
在server11上做初始化:
在server12和server13上做初始化,是为了加入server11的集群中:
在server11上查看节点信息:
部署服务:
将物理主机的证书服务传到三台服务机上:
分别在server11、server12、server13上添加解析如下:
server11上:
在manager节点部署nginx服务,服务数量为3个,公开指定端口是8080映射容器80,使用nginx镜像
docker service create --name nginx --publish 80:80 --replicas 3 westos.org/nginx ###创建nginx服务
在网页上搜三台主机的IP,均可访问得到 nginx
实现负载均衡:
在物理机上:
需要一个visualizer.tar
docker tag dockersamples/visualizer westos.org/visualizer ###更换名字
在server11上:
创建viz服务并开启:
进行查看:
server12上:
server13上:
在主机上查看此时负载均衡成功:
网页访问http://172.25.80.11:8080/ 查看三台主机的nginx负载均衡:
注:如果任意关闭一台主机的docker,此时的负载均衡就在两台主机上实现