Docker - Swarm 集群

回到顶部(go to top)

总结

需要至少有三台主机,是两台不行

 

 

 

回到顶部(go to top)

一、Swarm 命令

docker swarm init - 初始化swarm

docker swarm init --advertise-addr [ip地址]

初始化swarm的广告地址,可以让别的node发现他。这里的ip用的是私网地址,更省钱。

 

初始化swarm的同时,该docker-1 节点同时也会成为manager节点。

今后只要有node想加入该swarm (不是docker-1 节点):

  • 想成为worker的:   docker swarm join --token ...
  • 想成为manager的:docker swarm join-token manager

 

 

如果中途忘记添加worker和manager的命令,怎么办?

通过以下的命令,在swarm的manager节点上执行即可再次获得上图的黄色highlight命令

 

docker swarm join 加入节点

docker-2 加入docker-1成为worker节点: 

 

 

在docker-1 manager节点中,查看node信息

 

 

 

docker-4加入docker-1成为manager节点:

 

 在docker-1 manager节点中,再次查看node信息

 

 

 

docker service 从容器到服务

docker service的本质思想,是容器(单容器)-->服务(多容器多副本)的思想转变。

  • docker run...     是运行一个容器,不具有扩缩容功能
  • docker service...是运行一个服务(多容器),具有扩缩容,滚动更新功能

通过启动多个“容器”,这多个副本封装起来就成为了一个服务service。可以实现高可用,扩缩容,滚动更新(灰度发布),负载均衡等。

对于一个服务,swarm集群中任意的节点都可以访问到(哪怕该节点的机器上并没有运行该服务容器)。

 

创建服务

查看服务

 

 

 

 

动态扩缩容服务

 

 

方法1:update命令

将nginx服务副本,扩展为3个:

 

 

将nginx服务副本,缩减为1个:

 

 

方法2:scale命令

 

 

 

 

 

回到顶部(go to top)

二、Raft一致性协议

总结

类似ZooKeeper的leader选举:在swarm集群中,只有超过一半的manager节点可用时,swarm才会保持可用;否则就会不可用。

因此swarm集群的manager节点至少得有三个。若只有两个,两个人各自投自己票是选不出leader的。

 

实验过程

承接上面的配置:

docker-1和docker-4做manager节点(其中docker-1是leader, docker-4是备份reachable)

docker-2和docker-3做worker节点

 

 

 2.再把docker-1启动,docker-4成为leader

 

 

 

3. docker-3离开swarm

 

 

4. docker-3重新加入swarm,并成为manager节点

 

posted on   frank_cui  阅读(152)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

levels of contents
点击右上角即可分享
微信分享提示