Docker三剑客之swarm

简介: Docker三剑客之swarm

一、什么是docker swarm

Swarm是Docker公司推出的用来管理docker集群的平台,几乎全部用GO语言来完成的开发的,代码开源在https://github.com/docker/swarm, 它是将一群Docker宿主机变成一个单一的虚拟主机,Swarm使用标准的Docker API接口作为其前端的访问入口,换言之,各种形式的Docker Client(compose,docker-py等)均可以直接与Swarm通信,甚至Docker本身都可以很容易的与Swarm集成,这大大方便了用户将原本基于单节点的系统移植到Swarm上,同时Swarm内置了对Docker网络插件的支持,用户也很容易的部署跨主机的容器集群服务。

Docker Swarm 和 Docker Compose 一样,都是 Docker 官方容器编排项目。不同的是,Docker Compose 是一个在单个服务器或主机上创建多个容器的工具,而 Docker Swarm 则可以在多个服务器或主机上创建容器集群服务,对于微服务的部署,显然 Docker Swarm 会更加适合。

从 Docker 1.12.0 版本开始,Docker Swarm 已经包含在 Docker 引擎中(docker swarm),并且已经内置了服务发现工具,我们就不需要像之前一样,再配置 Etcd 或者 Consul 来进行服务发现配置了。

docker info 可以看到此时集群是 inactive 状态, 如果集群成功启动,Swarm 的状态就变成了 active。

二、docker swarm 命令

docker swarm --help

2.1 init
docker swarm init

2.2 join-token

以什么样的角色加入swarm集群,worker 和 manager

docker swarm join-token worker

可以使用产生的token将其他机器加入到集群。

docker swarm join --token SWMTKN-1-02ndmbk1ld2s6kgu8sx3f1oy2yrc1ocekald8fvi46lto2wb8v-chsch9zcu9te4ezhtdrjr7ytz 10.xxx.xxx.12:2377

使用 docker node ls 查看当前集群的信息,注意:改命令只能在manager节点上执行。

docker node ls

2.3 leave

离开集群,普通的节点可以直接离开,manager节点需要–force。

docker swarm leave  # worker节点 直接离开
docker swarm leave --force  # master 节点需要使用 --force参数,强制离开

2.4 unlock

在集群主节点异常掉线后,如果想要再次加入就必须unlock。为什么要这么设计呢?如果直接让它加进来,可能会出现多个leader,也就是脑裂的情况。unlock就是解决这种情况的。 注意:解锁要基于现有的集群,并且已经产生了新的leader。

场景模拟: 我们以manager的角色创建一个三个节点的集群。假设,现在有三台机器,A B C

在A上执行

docker swarm join-token manager

在B C 上分别执行在A机器上产生的token:

docker swarm join --token SWMTKN-1-5l15gcri88qwzvr48lln0ej78a9txvuh0r5vt8itq418wb8ntz-ehkltnukogmxlqk9qts7u20hl 10.xxx.xxx.12:2377

三台机器中,有一台是leader,另外两台是候选者。也就当leader出现问题的时候,可以顶上去。

以下操作都是在机器A中

接着,修改集群的ca证书。什么时候修改证书呢?我们的秘钥可能泄漏,或者存在安全风险时或者证书过期(一般有限期是一年),需要替换新的证书。

2.5 ca 修改证书
docker swarm ca --rotate

2.6 update 更新集群
docker swarm update --autolock=true
docker swarm unlock-key    # 获取集群秘钥

会返回给我们一个秘钥,如果没有记住秘钥,可以使用

我们停掉机器A上的docker,模拟master 节点宕机。

systemctl stop docker

然后,会在剩下的B C 机器中选一个leader出来(需要一定的时间)。选举成功后,可以使用 docker node ls 查看。

此时机器A已经处于下线状态,并且新的Leader已经成功选举。

接着,我们重启机器A的docker, 使用docker ps 等指令也能启动docker。此时使用 docker info 查看自己Swarm的状态变成了locked。

也就是说,此时的机器A向重新加入集群要先解锁。去B或者C上,执行 docker swarm unlock-key 拿到秘钥,再执行以下命令进行解锁,解锁完查看docker info,此时Swarm的状态就是active了

docker swarm unlock # 回车,输入获得的秘钥即可解锁

最后去B 或者 C 查看集群信息,可以看到此时 A 已经成功加入到集群了。

三、节点管理

3.1 demote

将主节点降级为worker节点。

docker node demote HOSTNAME
3.2 promote

将worker节点升级为master节点。

docker node promote HOSTNAME
3.3 inspect

查看节点的详细信息。

docker node inspect HOSTNAME
3.4 ls

查看集群节点信息。

docker node ls
3.5 ps

查看节点的应用信息。

docker node ps HOSTNAME
3.6 rm

删除一个节点。跟 leave的区别:docker swarm leave 虽然离开了集群,但是记录还在。完整流程应该是:先 rm 再 leave 。

docker node rm HOSTNAME
3.7 update

更新节点。


推荐一个零声学院免费教程,个人觉得老师讲得不错,分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,点击立即学习:

相关文章
|
2月前
|
网络安全 Docker 容器
|
2月前
|
安全 Docker 容器
|
26天前
|
Prometheus 监控 Cloud Native
如何使用Prometheus监控Docker Swarm集群的资源使用情况?
还可以根据实际需求进行进一步的配置和优化,如设置告警规则,当资源使用超出阈值时及时发出警报。通过这些步骤,能够有效地使用 Prometheus 对 Docker Swarm 集群的资源进行监控和管理。
46 8
|
26天前
|
Prometheus 监控 Cloud Native
如何监控Docker Swarm集群的性能?
如何监控Docker Swarm集群的性能?
83 8
|
26天前
|
调度 开发者 Docker
Docker Swarm
Docker Swarm 为容器化应用的部署和管理提供了一种高效、可靠的方式,使开发者能够更轻松地构建和运行分布式应用。随着容器技术的不断发展,Docker Swarm 在企业级应用中的应用也将越来越广泛。
48 8
|
26天前
|
监控 Docker 容器
Docker Swarm集群的扩展与缩容策略,涵盖其意义、方法、步骤及注意事项
本文深入探讨了Docker Swarm集群的扩展与缩容策略,涵盖其意义、方法、步骤及注意事项,旨在帮助用户高效管理集群资源,适应业务变化,确保服务稳定性和资源优化。
48 6
|
1月前
|
Kubernetes 负载均衡 调度
Docker Swarm 核心概念及详细使用
Docker Swarm 是 Docker 的原生集群管理工具,用于将多个 Docker 主机整合成一个虚拟主机,提供集群管理和调度功能。其核心特点包括集群管理、容错与高可用性、负载均衡、声明式服务模型、服务发现和安全性。本文档详细介绍了 Docker Swarm 的安装配置、服务部署、节点管理、网络配置及故障模拟等关键操作,适用于中小型项目或对 Kubernetes 复杂性有所顾虑的用户。
112 6
|
1月前
|
应用服务中间件 nginx Docker
Docker Swarm、Docker Stack和Portainer的使用
Docker Swarm、Docker Stack 和 Portainer 各有其独特的功能和优势。Docker Swarm 适用于分布式服务的管理和编排,Docker Stack 便于多容器应用的定义和部署,而 Portainer 提供了直观的 UI,简化了 Docker 环境的管理。结合使用这些工具,可以大大提高容器化应用的部署和管理效率。希望本文对您理解和应用这些工具有所帮助。
91 5
|
2月前
|
负载均衡 应用服务中间件 网络安全
docker swarm添加更多的服务
【10月更文挑战第16天】
30 6
|
2月前
|
Docker 容器
docker swarm启动服务并连接到网络
【10月更文挑战第16天】
46 5

热门文章

最新文章