Code前端首页关于Code前端联系我们

Swarm - Docker 集群管理工具学习指南

terry 2年前 (2023-09-28) 阅读数 57 #未命名

简介

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

支持的工具包括但不限于:

  • Dokku
  • Docker Compose
  • Docker Machine
  • Jenkins

Princip

如下图所示,群簇是由节点管理(由manager和worker节点组成。

  • swarm manager:负责管理整个集群,包括集群配置、服务管理等集群相关工作。
  • worker节点:可用镜像中的节点主要负责运行相应的服务来运行任务。

Swarm——Docker 集群管理工具学习指南

使用

以下示例使用Docker Machine和virtualbox进行演示。请确保您的主机已安装virtualbox。 Node (manager)

创建挂载机器:

$ docker-machine create -d virtualbox swarm-manager

Swarm——Docker 集群管理工具学习指南

初始化 swarm 集群 初始化的机器是集群的管理节点

$ docker-machine ssh swarm-manager
$ docker swarm init --advertise-addr 192.168.99.107 #这里的 IP 为创建机器时分配的 ip。

Swarm——Docker 集群管理工具学习指南

上面的输出证明初始化成功 需要复制以下行添加工作节点时使用:

docker swarm join --Token SWMTKN-1-4oogo9qziq768dma0uh2j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377

2。创建swarm集群的worker节点(worker)

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

Swarm——Docker 集群管理工具学习指南

输入两台计算机,并指定将它们添加到上一步创建的集群中。这里将使用上一步复制的内容。

Swarm——Docker 集群管理工具学习指南

出现以上信息表明添加成功。

上图中,由于上一步复制的内容比较长,所以会被自动截断。其实图中的启动命令如下:

docker@swarm-worker1:~$ docker swarm join --token SWMTKN-1-4oogo9qziq768dma0uh2j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377

3。查看集群信息

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

$ docker info

Swarm——Docker 集群管理工具学习指南

如果画一个红色圆圈,就可以知道当前运行的集群中有3个节点,其中一个是管理节点。

4。将服务部署到集群

注意:所有与集群管理相关的操作都在管理节点上进行。

以下示例在随机分配给运行节点的运行节点上创建名为 helloworld 的服务:

docker@swarm-manager:~$ docker service create --replicas 1 --name helloworld alpine ping docker.com

Swarm——Docker 集群管理工具学习指南

5。检查服务部署状态

检查helloworld服务运行在哪个节点上。可以看到当前在节点 swarm-worker1 上:

docker@swarm-manager:~$ docker service ps helloworld

Swarm——Docker 集群管理工具学习指南

查看具体的 helloworld 部署信息:

docker@swarm-manager:~$ docker service inspect --pretty helloworld

Swarm——Docker 集群管理工具学习指南

6。扩展集群服务

我们将上面的helloworld服务扩展到两个节点。

docker@swarm-manager:~$ docker service scale helloworld=2

Swarm——Docker 集群管理工具学习指南

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

Swarm——Docker 集群管理工具学习指南

7。删除服务

docker@swarm-manager:~$ docker service rm helloworld

Swarm——Docker 集群管理工具学习指南

检查是否已删除:

Swarm——Docker 集群管理工具学习指南

8.持续升级服务

在接下来的例子中,我们将介绍如何将redis版本更改为更高版本。

构建redis版本3.0.6。

docker@swarm-manager:~$ docker service create --replicas 1 --name redis --update-delay 10s redis:3.0.6

Swarm——Docker 集群管理工具学习指南

Redis 正在进行升级。

docker@swarm-manager:~$ docker service update --image redis:3.0.7 redis

Swarm——Docker 集群管理工具学习指南

看图可以看到redis版本已经从3.0.6升级到3.0.7,也就是说服务已经升级成功了。

9。阻止节点接收新任务

查看所有节点:

docker@swarm-manager:~$ docker node ls

Swarm——Docker 集群管理工具学习指南

您可以看到所有节点当前都处于活动状态,并且可以接收新任务分配。

停止节点 swarm-worker1:

Swarm——Docker 集群管理工具学习指南

注意:swarm-worker1 状态更改为 Drain。这不会影响集群服务,但swarm-worker1节点将不再接收新任务,集群负载会减少。

可以使用以下命令重新激活节点:

docker@swarm-manager:~$  docker node update --availability active swarm-worker1

Swarm——Docker 集群管理工具学习指南

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门