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 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

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

停止节点 swarm-worker1:

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

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

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

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

(0)

相关推荐

  • Docker使用Swarm组建集群的方法

    Swarm 在 Docker 1.12 版本之前属于一个独立的项目,在 Docker 1.12 版本发布之后,该项目合并到了 Docker 中,成为 Docker 的一个子命令.目前,Swarm 是 Docker 社区提供的唯一一个原生支持 Docker 集群管理的工具.它可以把多个 Docker 主机组成的系统转换为单一的虚拟 Docker 主机,使得容器可以组成跨主机的子网网络. Docker 使用 Swarm 可以很方便的在多个主机上创建容器集群,并且容器之间可以跨主机网络通信. Swar

  • Docker的安装方法及运行Docker Swarm模式的使用

    Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口. 概要 docker就给简单介绍这么多,这里主要说说docker swarm. docker engine本身只提供了容器技术,没有解决集群环境下的容器编排和通信.docker swarm是一个容器编排管理工具,docker-engine在1.12版本之后集成了docker

  • 详解Docker Swarm服务发现和负载均衡原理

    本文将介绍基于 DNS 的负载均衡.基于 VIP 的负载均衡和路由网格(Routing Mesh). 使用的技术 Docker 使用了 Linux 内核 iptables 和 IPVS 的功能来实现服务发现和负载均衡. iptables 是 Linux 内核中可用的包过滤技术,它可用于根据数据包的内容进行分类.修改和转发决策. IPVS 是 Linux 内核中可用的传输级负载均衡器. 准备工作 swarm 集群: [Manager]node1.[Worker]node2 客户端镜像: regis

  • docker swarm 集群故障与异常详解

    本文介绍了docker swarm 集群故障与异常详解,分享给大家,具体如下: 在上次遭遇 docker swarm 集群故障后,我们将 docker 由 17.10.0-ce 升级为最新稳定版 docker 17.12.0-ce . 前天晚上22:00之后集群中的2个节点突然出现CPU波动,在CPU波动之后,在凌晨夜深人静.访问量极低的时候,整个集群出现了故障,访问集群上的所有站点都出现了502,过了一段时间后自动恢复正常. ECS实例:swarm1-node5,CPU百分比于00:52发生告

  • Docker Swarm集群管理的使用及原理解析

    Swarm 集群管理 简介 Docker Swarm 是 Docker 的集群管理工具.它将 Docker 主机池转变为单个虚拟 Docker 主机. Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机. 支持的工具包括但不限于以下各项: Dokku Docker Compose Docker Machine 原理 如下图所示,swarm 集群由管理节点(manager)和工作节点(work

  • 详解使用docker 1.12 搭建多主机docker swarm集群

    swarm是docker公司自己的容器集群管理工具,本文介绍了使用docker 1.12 搭建多主机docker swarm集群,分享给大家 准备 准备至少两台的centos 7 主机(全新最小安装, 可以使用虚拟机安装) 开放端口2377 tcp端口, 7946 4789 tcp udp 端口 本文使用192.168.99.101(hostname:centos-node4) 作为swarm manager 192.168.99.102(hostname:centos-node5) 作为sw

  • 阿里云服务器部署 Docker Swarm集群

    目录 一.什么是 Docker Swarm? 二.Docker Swarm 和 k8s的区别 三.购买4台阿里云服务器 四.Docker Swarm 工作模式 五.部署 Docker Swarm 集群 连接4台服务器 安装Docker ️部署Swarm 六.Raft协议 七.其它命令

  • Spring Boot集群管理工具KafkaAdminClient使用方法解析

    原理介绍 在Kafka官网中这么描述AdminClient:The AdminClient API supports managing and inspecting topics, brokers, acls, and other Kafka objects. 具体的KafkaAdminClient包含了一下几种功能(以Kafka1.0.0版本为准): 创建Topic:createTopics(Collection<NewTopic> newTopics) 删除Topic:deleteTopi

  • 在Ubuntu 16.04上用Docker Swarm和DigitalOcean创建一个Docker容器集群的方法

    介绍 Docker Swarm是用于部署Docker主机集群的Docker本地解决方案.您可以使用它来快速部署在本地计算机或受支持的云平台上运行的Docker主机集群. 在Docker 1.12之前,设置和部署Docker主机集群需要使用外部键值存储(如etcd或Consul)来进行服务发现.但是,使用Docker 1.12,不再需要外部发现服务,因为Docker提供了一个内置的键值存储,可以开箱即用. 在本教程中,您将了解如何使用Docker 1.12上的Swarm功能部署一组Docker机器

  • Docker 搭建集群MongoDB的实现步骤

    前言 由于公司业务需要,我们打算自己搭建 MongoDB 的服务,因为 MongoDB 的云数据库好贵,我们这次采用副本集的方式来搭建集群,三台服务器,一主.一副.一仲裁 基本概念 Replica Set 副本集:一个副本集就是一组 MongoDB 实例组成的集群,由一个主(Primary)服务器和多个备份(Secondary)服务器构成 主节点(master):主节点接收所有写入操作.主节点将对其数据集所做的所有更改记录到其 oplog. 副节点(secondary):复制主节点的 oplog

  • Kubernetes(K8S)容器集群管理环境完整部署详细教程-中篇

    本文系列: Kubernetes(K8S)容器集群管理环境完整部署详细教程-上篇 Kubernetes(K8S)容器集群管理环境完整部署详细教程-中篇 Kubernetes(K8S)容器集群管理环境完整部署详细教程-下篇 接着Kubernetes(K8S)容器集群管理环境完整部署详细教程-上篇继续往下部署: 八.部署master节点 master节点的kube-apiserver.kube-scheduler 和 kube-controller-manager 均以多实例模式运行:kube-sc

  • Docker+K8S 集群环境搭建及分布式应用部署

    1.安装docker yum install docker #启动服务 systemctl start docker.service systemctl enable docker.service #测试 docker version 2.安装etcd yum install etcd -y #启动etcd systemctl start etcd systemctl enable etcd #输入如下命令查看 etcd 健康状况 etcdctl -C http://localhost:2379

  • Kubernetes(K8S)容器集群管理环境完整部署详细教程-下篇

    本文系列: Kubernetes(K8S)容器集群管理环境完整部署详细教程-上篇 Kubernetes(K8S)容器集群管理环境完整部署详细教程-中篇 Kubernetes(K8S)容器集群管理环境完整部署详细教程-下篇 在前一篇文章中详细介绍了Kubernetes(K8S)容器集群管理环境完整部署详细教程-中篇,这里继续记录下Kubernetes集群插件等部署过程: 十一.Kubernetes集群插件 插件是Kubernetes集群的附件组件,丰富和完善了集群的功能,这里分别介绍的插件有cor

随机推荐