Swarm是Docker公司推出的用来管理docker集群的平台,几乎全部用GO语言来完成的开发的,代码开源在https://github.com/docker/swarm, 它是将一群Docker宿主机变成一个单一的虚拟主机,Swarm使用标准的Docker API接口作为其前端的访问入口,换言之,各种形式的DockerClient(compose,docker-py等)均可以直接与Swarm通信,甚至Docker本身都可以很容易的与Swarm集成,这大大方便了用户将原本基于单节点的系统移植到Swarm上,同时Swarm内置了对Docker网络插件的支持,用户也很容易的部署跨主机的容器集群服务。从 Docker 1.12.0 版本开始,Docker Swarm 已经包含在 Docker 引擎中(docker swarm),并且已经内置了服务发现工具,我们就不需要像之前一样,再配置 Etcd 或者 Consul 来进行服务发现配置了。Docker swarm中有三种角色:注意:在一个Docker Swarm群集中,每台docker服务器的角色可以都是manager,但是,不可以都是worker,也就是说,不可以群龙无首,并且,参与群集的所有主机名,千万不可以冲突。注意事项:命令的返回信息,如图:
图中①的命令:以worker身份加入swarm群集中的命令;
②的命令:以manager身份加入swarm群集中的方法;
出现上图表示初始化成功!注意:–token表示期限为24小时;以上命令可以将某一个节点加入、删除群集。不过加入时是使用worker身份的,如果想要让节点是以manager身份加入群集,需要使用以下命令:如图:
虽然加入群集时,可以指定使用manager、wor开发云主机域名ker身份,但是也可以通过以下命令,进行降级、升级,操作如下:部署图形化UI界面由node01来完成!使用浏览器访问:
浏览器可以正常访问,则表示图形化UI界面部署完成!node01发布一个任务,(必须在manager角色的主机上)运行六个容器,命令如下:容器运行完成后,可以登录web页面进行查看,如图:
注意:如果另外两台节点服务器上没有相应的惊醒,则默认会从docker Hub上自动进行下载!如果现在node02、node03发生宕机时,service并不会因为节点的当即而死掉,而是自动跑到正常的节点上。模拟node02宕机,web页面如下:
恢复node02,web页面如下:
即使node02恢复正常,也不会将service分配给node02。因此,可以得出一个结论:如果node发生故障,service会自动跑到可用的节点上;反之,如果node没有发生故障,默认情况下,service不会轻易更改节点!扩容:就是添加几台service;
收缩:就是减少几台service;针对上述环境实现收缩、扩容;web页面如下:
关于service分配到那台node节点上,是根据docker swarm自身的算法进行分配的。web页面如下:
上述环境中,三台都是manager,即使是一台manager、两台worker默认情况manager也是进行工作的,将node02、node03降级为worker,执行如下命令:如图:
可以通过设置,使某台节点不运行service,如下:web页面如下:
如图:
由此可以得出:不是只有manager才有不工作的权力!docker swarm集群会产生两种不同类型的流量:在swarm中有三个重要的概念:docker_gwbridge网络在初始化Swarm或加入Swarm时自动创建。大多数情况下,用户不需要自定义配置,但是Docker允许自定义;查看node01上默认的网络,如图:
注意:图中的SCOPE,注意其作用范围!除了Swarm群集默认创建的两个网络以外,我们还可以自定义创建overlay网络,连接到此网络的容器,即可互相通信,,但是需要注意,自定义的网络只能是创建的manager主机才可查看到!创建自定义overlay网络创建自定义的overlay网络时,必须是manager才可以创建,并且只在manager节点上才显示的,别的worker节点是查看不到的,但是可以使用。
如下:
测试访问:
这是node02、node03已经使用过这个自定义的网络了,这是在node02、node03上就可以查看到了!
而且基于docker swarm创建的overlay网络也符合自定义跨主机网络的特点,可以使用主机名进行通信。通过搭建registry私有仓库,可以便于让其他node下载镜像。搭建私有仓库可以参考Docker搭建私有仓库浏览器访问测试:
三个service副本是轮询的方式来服务的,根据node02、node03的首页内容进行测试!
node02:node03访问测试:浏览器进行测试:
默认情况下,swarm一次只更新一个副本,并且两个副本之间并没有等待时间,可以通过以上方法进行设置。从更新的过程中可以看出效果!浏览器确认版本更新成功:
浏览器访问测试:
注意:当我们执行回滚操作的时候,默认是回滚到上一次操作的版本,并且不可以连续回滚。
Swarm是Docker公司推出的用来管理docker集群的平台,几乎全部用GO语言来完成的开发的,代码开源在https://github.com/docker/swarm, 它是将一群Docker宿主机变成一个单一的虚拟主机,Swarm使用标准的Docker…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。