文章目录

  • Swarm -- Docker的调度工具
  • 简介
  • 一、安装docker
  • 二、安装Swarm单机版
  • 1.拉取swarm镜像
  • 2.搭建Swarm环境
  • 3.确认Swarm单机版搭建是否成功
  • 三、安装Swarm双机版
  • 1.新结点加入Swarm
  • 2.启动管理机
  • 3.确认双机版搭建是否成功
  • 四、在Swarm双机版部署服务
  • 1.部署服务到Swarm双机版
  • 2.查看服务部署情况
  • 3.扩展服务到多节点
  • 总结及展望


Swarm – Docker的调度工具

简介

  • Swarm是一个由Docker研发团队开发的调度工具,可以使用标准的Docker 应用编程接口。
  • Swarm有三个核心概念:节点服务任务
  1. 节点是已加入Swarm的Docker引擎的实例
  2. 服务是在Worker节点上执行的
  3. 任务是在Docker容器中执行的命令

一、安装docker

安装docker是安装Swarm的准备工作,安装命令如下:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

安装成功效果如下:

docker单机版hadoop_算法

安装成功后,检查Docker的安装是否正确:

$docker info

docker单机版hadoop_算法_02

二、安装Swarm单机版

1.拉取swarm镜像

拉取swarm镜像的命令为:

$docker pull swarm

最后一行显示信息 Status: Downloaded newer image for swarm:latest,说明拉取成功。

docker单机版hadoop_leetcode_03

2.搭建Swarm环境

初始化Swarm的命令为:

$docker swarm init

执行该命令后,获取全球唯一的 token,作为Swarm环境的唯一标识,效果如下:

docker单机版hadoop_docker_04

3.确认Swarm单机版搭建是否成功

在ubuntu上执行的命令为:

$docker ps -a

显示如下信息,表明Swarm单机版启动成功。

docker单机版hadoop_docker单机版hadoop_05

三、安装Swarm双机版

1.新结点加入Swarm

在新节点主机slave01上执行:

docker swarm join --token 
SWMTKN-1-21th3y371uzbt1eebdrb72yk7l2y1ljrzz0oy1qmpbhg1s0frb-b42lgqwhcsn1ozuvys5xh534n 
192.168.149.128:2377

运行结果如下:

docker单机版hadoop_算法_06


运行结果最后一句This node joined a swarm as a worker.表明节点主机slave01worker的身份加入swarm

2.启动管理机

在管理机上执行:

$docker run -d -p 2378:2377 swarm manage token://SWMTKN-1-
21th3y371uzbt1eebdrb72yk7l2y1ljrzz0oy1qmpbhg1s0frb-b42lgqwhcsn1ozuvys5xh534n

运行结果如下:

docker单机版hadoop_算法_07

3.确认双机版搭建是否成功

在管理机上执行:

$docker ps -a

显示如下信息,表明管理机启动成功。

docker单机版hadoop_算法_08


在管理机上执行docker -H 192.168.149.128:2378 info查看集群详细信息,下图列出了每个节点名、配置信息等。

docker单机版hadoop_leetcode_09


上图中红框标出的

Managers: 1 Nodes: 2

表示有2个节点(Node),1个管理节点(Managers)。

至此,通过swarm搭建docker双机版完成!

四、在Swarm双机版部署服务

1.部署服务到Swarm双机版

搭建swarm双机版后,部署服务到Swarm双机版。
部署服务时,在swarm-manager节点上创建一个名为 helloworld 的服务,指派给一个工作节点:

$docker service create --replicas 1 --name helloworld alpine ping docker.com

该命令的参数解释:

  • –replicas:service运行的实例个数
  • –name: 命名service为helloword
  • alpine ping docker.com: 定义此service为,在 Alpine Linux容器中,执行ping http://docker.com

docker单机版hadoop_docker_10

2.查看服务部署情况

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

$ docker service ps helloworld

docker单机版hadoop_docker_11


查看 helloworld 部署的具体信息:

$docker service inspect --pretty helloworld

docker单机版hadoop_leetcode_12

3.扩展服务到多节点

将上述的 helloworld 服务扩展到2个节点。

$docker service scale helloworld=2

docker单机版hadoop_算法_13


从下图可以看到,服务从1个节点扩展到2个节点。

docker单机版hadoop_职场和发展_14

总结及展望

本文介绍了ubuntu单机版Swarm安装及试用,并进一步实现了Swarm双机版的安装和服务部署。

Swarm作为Docker的调度工具,通过自动故障转移来处理错误,并且当一个实例不足以处理或计算数据时,能够扩展容器来解决问题。 Swarm的主要任务是负责在最合适的主机上启动容器,并且将它们关联起来。

我将Swarm从单机版升级为双机版,下一步尝试安装Swarm集群
Swarm集群由管理节点(manager)和工作节点(work node)构成,如下图所示。

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

docker单机版hadoop_职场和发展_15