当前位置: 首页 > news >正文

Swarm 集群管理

  Swarm 集群管理

简介

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

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

  • Dokku
  • Docker Compose
  • Docker Machine
  • Jenkins

原理

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

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


使用

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

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

创建 docker 机器:

$ docker-machine create -d virtualbox swarm-manager

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

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

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

docker swarm join --token SWMTKN-1-4oogo9qziq768dma0uh3j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377

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

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

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

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

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

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

3、查看集群信息

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

$ docker info

通过画红圈的地方,可以知道当前运行的集群中,有三个节点,其中有一个是管理节点。

4、部署服务到集群中

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

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

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

5、查看服务部署情况

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

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

查看 helloworld 部署的具体信息:

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

6、扩展集群服务

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

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

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

7、删除服务

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

查看是否已删除:

8、滚动升级服务

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

创建一个 3.0.6 版本的 redis。

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

滚动升级 redis 。

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

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

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

查看所有的节点:

docker@swarm-manager:~$ docker node ls

1631274865963004.png

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

停止节点 swarm-worker1:

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

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

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

相关文章:

  • 20212416 2023-2024-2 《移动平台开发与实践》综合实践
  • 秋招突击——6/19——复习{(单调队列优化)——最大子序列和,背包问题——宠物小精灵收服问题}——新作{两两交换链表中的节点}
  • xshell使用vi命令:bash:vim:command not found
  • 全能AI客户端:ChatGPT Web Midjourney Proxy,AI绘画+GPT4o对话
  • http和https的区别在哪
  • Java基础 - 练习(四)打印九九乘法表
  • 【TensorFlow深度学习】量化压缩技术在降低模型体积中的应用
  • PHP XML: 解析、生成与操作指南
  • 面试专区|【70道Hive高频题整理(附答案背诵版)】
  • 【Golang - 90天从新手到大师】Day06 - 数组
  • Freemaker 模板
  • 机器学习补充
  • python离线安装第三方库、及其依赖库(单个安装,非批量移植)
  • 基于esp-idf的arm2d移植
  • 计算机编码以及URL转码
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • HTML-表单
  • Js基础——数据类型之Null和Undefined
  • React-生命周期杂记
  • Spark RDD学习: aggregate函数
  • spring boot下thymeleaf全局静态变量配置
  • Sublime text 3 3103 注册码
  • Terraform入门 - 1. 安装Terraform
  • 当SetTimeout遇到了字符串
  • 前端之Sass/Scss实战笔记
  • 浅谈Golang中select的用法
  • 用Visual Studio开发以太坊智能合约
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • # Spring Cloud Alibaba Nacos_配置中心与服务发现(四)
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • #Linux(帮助手册)
  • #Z0458. 树的中心2
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (arch)linux 转换文件编码格式
  • (C语言)二分查找 超详细
  • (day 12)JavaScript学习笔记(数组3)
  • (java)关于Thread的挂起和恢复
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (万字长文)Spring的核心知识尽揽其中
  • (一)80c52学习之旅-起始篇
  • *算法训练(leetcode)第四十天 | 647. 回文子串、516. 最长回文子序列
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .NET CORE 第一节 创建基本的 asp.net core
  • .Net CoreRabbitMQ消息存储可靠机制
  • .net 按比例显示图片的缩略图
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .net6Api后台+uniapp导出Excel
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .net连接oracle数据库
  • .NET命名规范和开发约定
  • .NET实现之(自动更新)