小知识:Docker Swarm集群管理的使用及原理解析

Swarm 集群管理

简介

Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。

支持的工具包括但不限于以下各项:

Dokku Docker Compose Docker Machine

原理

如下图所示,swarm 集群由管理节点(manager)和工作节点(work node)构成。

swarm mananger:负责整个集群的管理工作包括集群配置、服务管理等所有跟集群有关的工作。 work node:即图中的 available node,主要负责运行相应的服务来执行任务(task)。

%小知识:Docker Swarm集群管理的使用及原理解析-猿站网-插图

使用

以下示例,均以 Docker Machine 和 virtualbox 进行介绍,确保你的主机已安装 virtualbox。

1、创建 swarm 集群管理节点(manager)

创建 docker 机器:

$ dockermachine create d virtualbox swarmmanager

%小知识:Docker Swarm集群管理的使用及原理解析-1猿站网-插图

初始化 swarm 集群,进行初始化的这台机器,就是集群的管理节点。

$ dockermachine ssh swarmmanager $ docker swarm init advertiseaddr 192.168.99.107#这里的 IP 为创建机器时分配的 ip。

%小知识:Docker Swarm集群管理的使用及原理解析-2猿站网-插图

以上输出,证明已经初始化成功。需要把以下这行复制出来,在增加工作节点时会用到:

docker swarm join token SWMTKN14oogo9qziq768dma0uh3j0z0m5twlm10iynvz7ixza96k6jh9pajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377

2、创建 swarm 集群工作节点(worker)

这里直接创建好俩台机器,swarm-worker1 和 swarm-worker2 。

%小知识:Docker Swarm集群管理的使用及原理解析-3猿站网-插图

分别进入两个机器里,指定添加至上一步中创建的集群,这里会用到上一步复制的内容。

%小知识:Docker Swarm集群管理的使用及原理解析-4猿站网-插图

以上数据输出说明已经添加成功。

上图中,由于上一步复制的内容比较长,会被自动截断,实际上在图运行的命令如下:

docker@swarmworker1:~$ docker swarm join token SWMTKN14oogo9qziq768dma0uh3j0z0m5twlm10iynvz7ixza96k6jh9pajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377

3、查看集群信息

进入管理节点,执行:docker info 可以查看当前集群的信息。

$ docker info

%小知识:Docker Swarm集群管理的使用及原理解析-5猿站网-插图

4、部署服务到集群中

注意:跟集群管理有关的任何操作,都是在管理节点上操作的。

以下例子,在一个工作节点上创建一个名为 helloworld 的服务,这里是随机指派给一个工作节点:

docker@swarmmanager:~$ docker service create replicas 1name helloworld alpine ping docker.com

%小知识:Docker Swarm集群管理的使用及原理解析-6猿站网-插图

5、查看服务部署情况

查看 helloworld 服务运行在哪个节点上,可以看到目前是在 swarm-worker1 节点:

docker@swarmmanager:~$ docker service ps helloworld

%小知识:Docker Swarm集群管理的使用及原理解析-7猿站网-插图

查看 helloworld 部署的具体信息:

docker@swarmmanager:~$ docker service inspect pretty helloworld

%小知识:Docker Swarm集群管理的使用及原理解析-8猿站网-插图

6、扩展集群服务

我们将上述的 helloworld 服务扩展到俩个节点。

docker@swarmmanager:~$ docker service scale helloworld=2

%小知识:Docker Swarm集群管理的使用及原理解析-9猿站网-插图

可以看到已经从一个节点,扩展到两个节点。

%小知识:Docker Swarm集群管理的使用及原理解析-10猿站网-插图

7、删除服务

docker@swarmmanager:~$ docker service rm helloworld

%小知识:Docker Swarm集群管理的使用及原理解析-11猿站网-插图

查看是否已删除:

%小知识:Docker Swarm集群管理的使用及原理解析-12猿站网-插图

8、滚动升级服务

以下实例,我们将介绍 redis 版本如何滚动升级至更高版本。

创建一个 3.0.6 版本的 redis。

docker@swarmmanager:~$ docker service create replicas 1name redis updatedelay 10s redis:3.0.6

%小知识:Docker Swarm集群管理的使用及原理解析-13猿站网-插图

滚动升级 redis 。

docker@swarmmanager:~$ docker service update image redis:3.0.7 redis

%小知识:Docker Swarm集群管理的使用及原理解析-14猿站网-插图

看图可以知道 redis 的版本已经从 3.0.6 升级到了 3.0.7,说明服务已经升级成功。

9、停止某个节点接收新的任务

查看所有的节点:

docker@swarmmanager:~$ docker node ls

%小知识:Docker Swarm集群管理的使用及原理解析-15猿站网-插图

可以看到目前所有的节点都是 Active, 可以接收新的任务分配。

停止节点 swarm-worker1:

%小知识:Docker Swarm集群管理的使用及原理解析-16猿站网-插图

注意:swarm-worker1 状态变为 Drain。不会影响到集群的服务,只是 swarm-worker1 节点不再接收新的任务,集群的负载能力有所下降。

可以通过以下命令重新激活节点:

docker@swarmmanager:~$ docker node update availability active swarmworker1

%小知识:Docker Swarm集群管理的使用及原理解析-17猿站网-插图

到此这篇关于Docker Swarm集群管理的使用及原理解析的文章就介绍到这了,更多相关Docker Swarm集群管理内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

原文链接:https://blog.csdn.net/aa2528877987/article/details/109469107

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:docker安装rabbitmq无法进入管理页面的问题

2023-3-25 15:49:03

建站知识

小知识:基于docker启动nginx ssl配置

2023-3-25 16:04:06

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索