Swarm是Docker公司在2014年12月初发布的一套较为简单的工具,用来管理docker集群,它将一群Docker宿主机变成一个单一的,虚拟的主机。Swarm使用标准的Docker API接口作为其前端访问入口,换言之,各种形式的Docker Client(docker client in Go, docker_py, docker等)均可以直接与Swarm通信。Swarm几乎全部用go语言来完成开发,上周五,4月17号,Swarm0.2发布,相比0.1版本,0.2版本增加了一个新的策略来调度集群中的容器,使得在可用的节点上传播它们,以及支持更多的Docker命令以及集群驱动。

Swarmdeamon只是一个调度器(Scheduler)加路由器(router),Swarm自己不运行容器,它只是接受docker客户端发送过来的请求,调度适合的节点来运行容器,这意味着,即使Swarm由于某些原因挂掉了,集群中的节点也会照常运行,当Swarm重新恢复运行之后,它会收集重建集群信息。下面是Swarm的结构图

环境部署

实验环境

操作系统: Centos 7.2

操作系统内核版本:3.10.0-327.36.1.el7.x86_64

Docker 版本:Docker version1.12.6

dtest01  10.139.12.49   swarm manager
dtest02  10.139.11.109  swarm node
dtest03  10.139.12.5    swarm mode

环境准备

关闭seliunx 以dtest01 为例, dtest02、dtest03 按照同样的方法操作

sed -i 's/SELINUX=enabled /SELINUX= disabled/g' /etc/selinux/config

重启服务器reboot

关闭防火墙以dtest01 为例, dtest02、dtest03 按照同样的方法操作

systemctl stop firewalld

systemctl disable firewalld

配置hosts以dtest01 为例, dtest02、dtest03 按照同样的方法操作

[root@dtest01 ~]#  cat /etc/hosts

127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4

::1        localhost localhost.localdomain localhost6 localhost6.localdomain6

10.139.12.49  dtest01

10.139.11.109 dtest02

10.139.12.5 dtest03

配置ssh 免登陆

使用ssh-keygen 命令生成一路回车键

[root@dtest01 ~]#  ssh-keygen

配置所有节点密钥登录.

配置所下节点密钥互信, 在node1可以免密码登录各节点,只在dtest01上执行:

分发sshkey到各个节点

[root@node1 ~]# ssh-copy-id  dtest01

[root@node1 ~]# ssh-copy-id  dtest02

[root@node1 ~]# ssh-copy-id  dtest03

安装docker

以dtest01 为例, dtest02 、dtest03 按照此方法操作

yum install docker –y

查看 docker -v

Docker version 1.12.6, build 88a4867/1.12.6

启动docker  systemctl start docker

开机自启动  systemctl enable docker

创建 Swarm集群

在dtest01 上初始化swram集群:

docker swarm init  --advertise-addr 10.139.12.49

Swarm initialized: current node(1ov1r9l904zhvs4uoygt0tmi3) is now a manager.

To add a worker to this swarm, run thefollowing command:

docker swarm join \

--tokenSWMTKN-1-4qu7h72chrzlycoltrfu9aitp3omoju46nxey73bjjjf69co4h-4c6benvo38h8wyhiti8j9xd1t\

10.139.12.49:2377

查看docker swarm 是否创建成功

[root@dtest01 ~]#  netstat -tnlp | grep docker

tcp6       0     0 :::7946                :::*                   LISTEN      4646/dockerd-curren

tcp6      0      0 :::2377                 :::*                    LISTEN      4646/dockerd-curren

检查 docker swarm mode信息:

Swarm:active

NodeID: 1ov1r9l904zhvs4uoygt0tmi3

 Is Manager: true

ClusterID: br2kb43qhxea1vl2zgygmfq0c

Managers: 2

Nodes: 3

Orchestration:

Task History Retention Limit: 5

Raft:

Snapshot Interval: 10000

Heartbeat Tick: 1

Election Tick: 3

查看swarm集群列表

[root@dtest01 ~]#  docker node ls

ID                           HOSTNAME           STATUS  AVAILABILITY MANAGER STATUS

1ov1r9l904zhvs4uoygt0tmi3 *  dtest01.novalocal  Ready  Active        Leader

将dtest02和dtest03使用worker节点方式加入swarm集群

首先在node1上面查询集群的命令和密钥,在dtest02 、dtest03 分别执行下面红色区域的命令

[root@ dtest01 ~]# docker swarm  join-token  worker

To add a worker to this swarm, run thefollowing command:

    docker swarm join \

   --tokenSWMTKN-1-4qu7h72chrzlycoltrfu9aitp3omoju46nxey73bjjjf69co4h-4c6benvo38h8wyhiti8j9xd1t\

10.139.12.49:2377

 

 

[root@dtest02 ~]# docker swarm join --tokenSWMTKN-1-4qu7h72chrzlycoltrfu9aitp3omoju46nxey73bjjjf69co4h-4c6benvo38h8wyhiti8j9xd1t10.139.12.49:2377

This node joined a swarm as a worker.

[root@dtest02 ~]# docker swarm join --tokenSWMTKN-1-4qu7h72chrzlycoltrfu9aitp3omoju46nxey73bjjjf69co4h-4c6benvo38h8wyhiti8j9xd1t10.139.12.49:2377

This node joined a swarm as a worker.

查看集群节点

[root@dtest01 ~]#  docker node ls

ID                           HOSTNAME           STATUS  AVAILABILITY  MANAGER STATUS

1ov1r9l904zhvs4uoygt0tmi3 *  dtest01  Ready   Active       Leader

4v1mjgrvpdba9uxmv9riti96n    dtest02  Ready   Active

9cd5n3rgd6n5ids6mxuqcfd3c    dtest03   Ready   Active

为了swarm集群的高可用,和避免单点故障. 我们希望建立多个manager节点集群.将dtest02提升为manager节点

docker node promote dtest02

[root@dtest01 ~]#  docker node ls

ID                           HOSTNAME           STATUS  AVAILABILITY MANAGER STATUS

1ov1r9l904zhvs4uoygt0tmi3 *  dtest01  Ready  Active        Leader

4v1mjgrvpdba9uxmv9riti96n    dtest02  Ready  Active        Reachable

9cd5n3rgd6n5ids6mxuqcfd3c    dtest03 Ready   Active

现在我们可以看到, 已经有2个manager节点了, 一个Leader节点, 一个Reachable节点. 现在你也可以在dtest02上面管理整个swarm集群.

[root@dtest02 ~]#  docker node ls

ID                           HOSTNAME           STATUS  AVAILABILITY MANAGER STATUS

1ov1r9l904zhvs4uoygt0tmi3 *  dtest01  Ready  Active        Leader

4v1mjgrvpdba9uxmv9riti96n    dtest02  Ready  Active        Reachable

9cd5n3rgd6n5ids6mxuqcfd3c    dtest03 Ready   Active

备注:查看命令帮助  docker node –help

使用dtest02让dtest03下线

docker node update  --availability drain9cd5n3rgd6n5ids6mxuqcfd3c

[root@dtest02 ~]#  docker node ls

ID                           HOSTNAME           STATUS  AVAILABILITY MANAGER STATUS

1ov1r9l904zhvs4uoygt0tmi3    dtest01  Ready   Active        Leader

4v1mjgrvpdba9uxmv9riti96n *  dtest02 Ready   Active        Reachable

9cd5n3rgd6n5ids6mxuqcfd3c    dtest03 Ready   Drain

使用dtest02让dtest03上线

docker node update  --availability active 9cd5n3rgd6n5ids6mxuqcfd3c

[root@dtest02 ~]#  docker node ls

ID                           HOSTNAME           STATUS  AVAILABILITY MANAGER STATUS

1ov1r9l904zhvs4uoygt0tmi3    dtest01 Ready   Active        Leader

4v1mjgrvpdba9uxmv9riti96n *  dtest02 Ready   Active        Reachable

9cd5n3rgd6n5ids6mxuqcfd3c   dtest03  Ready  Active

本文转自 水滴石川1 51CTO博客,原文链接:http://blog.51cto.com/sdsca/1962601,如需转载请自行联系原作者

Docker swarm 集群搭建相关推荐

  1. 正式环境docker部署hyperf_应用部署 - Docker Swarm 集群搭建 - 《Hyperf v1.1.1 开发文档》 - 书栈网 · BookStack...

    Docker Swarm 集群搭建 现阶段,Docker容器技术已经相当成熟,就算是中小型公司也可以基于 Gitlab.Aliyun镜像服务.Docker Swarm 轻松搭建自己的 Docker集群 ...

  2. Docker Swarm集群搭建以及服务命令等操作

    前言:之前都是采用rancher可视化管理工具进行管理K8S进一步管理容器,但是每次机器宕机后rancher中集群特别容易挂掉,出现的问题五花八门,在网上很难搜到解决方案,所以准备采用docker官方 ...

  3. docker swarm集群搭建及使用Portainer、shipyard

    一.规划 1.swarm01作为manager节点,swarm02和swarm03作为worker节点. # cat /etc/hosts 127.0.0.1 localhost 192.168.13 ...

  4. 持续集成docker—第三篇(docker swarm集群搭建)

    一.规划 1.net-master作为manager节点,net-salve作为worker节点. cat >>/etc/hosts<<EOF 47.96.65.70 yund ...

  5. 【Docker】docker swarm集群搭建和相关命令分享

    Docker swarm 集群通过 docker cli 来创建,并通过docker cli来实现应用的部署和集群的管理. Docker swarm集群的搭建相对简单,这里使用三台虚拟机(一个管理节点 ...

  6. docker swarm 集群搭建与服务更新

    title: "docker swarm 搭建与服务更新"date: 2021-12-15T17:54:53+08:00Description: ""Tags: ...

  7. Docker Swarm集群搭建

    Docker Swarm提供Docker容器集群服务,可以将多个Docker主机封装为单个单行的虚拟Docker主机,快速打造一套容器云平台. DockerSwarm提供很多新特性,如 具有容错能力的 ...

  8. Docker swarm集群搭建教程

    一.什么是Swarm Swarm这个项目名称特别贴切.在Wiki的解释中,Swarm behavior是指动物的群集行为.比如我们常见的蜂群,鱼群,秋天往南飞的雁群都可以称作Swarm behavio ...

  9. Docker Swarm集群仓库和可视化管理

    Docker Swarm集群仓库和可视化管理 1 背景 2 环境 3 安装操作 3.1 registary部署 3.1.1 下载 3.1.2 部署 3.2 portainer部署 3.2.1 下载 3 ...

最新文章

  1. 5G RRC——为NAS层提供连接管理,消息传递等服务; 对接入网的底层协议实体提供参数配置的功能; 负责UE移动性管理相关的测量、控制等功能...
  2. python 压缩文件(1)
  3. Python(18)-字典dictionary、集合
  4. 园林景观cad_景观广场及绿化设计(附CAD平面图)
  5. 如何使用Javascript复制到剪贴板
  6. 深度神经网络与卷积神经网络的区别
  7. DoubleClick公司推出移动广告平台
  8. Nginx 更新静态页面 不生效
  9. html转换markdownpad,GitHub - negrochn/markdownpad2_toc: MarkdownPad2导出HTML支持[TOC]
  10. 深度学习--FAISS向量数据库
  11. 素数:素数判断、找素数、计算素数和、素数求和
  12. 北京信息科技大学第十三届程序设计竞赛暨ACM选拔赛(重现赛)题解
  13. 费舍尔方法(Fisher‘s method)的数学原理解释
  14. Stm32完整安装包,包含Keil5,野火大学堂,Flymcu,Ch340,stm32F1和F4的器件支持包,STM32CubeMX
  15. Sequelize.js 入门
  16. 遭到强烈反对后,Apple推迟了扫描设备以查找虐待儿童图像的计划
  17. Attention-based Extraction of Structured Information from Street View Imagery:基于注意力的街景图像提取结构化信息
  18. Win7系统下的立体声混音录音的声卡的设置方法
  19. java写的网络版斗地主_Java实现简单的斗地主游戏
  20. oracle12c导入,Oracle 12c pdb使用expdp/impdp导入导出

热门文章

  1. JAVA实现调整数组顺序使奇数位于偶数前面问题(《剑指 offer》)
  2. AppStore 拒绝审核原因:PLA 2.3
  3. 一个listMap里map其中的一个字段的值相同,如何判断这个字段相同,就把这个map的其他字段存入另一个map中...
  4. ssh整合之六管理我们的配置文件
  5. delete from inner join
  6. MyEclipse10安装SVN插件
  7. 【UEditor】关于导入ueditor-1.1.3.jar的问题---
  8. go语言实现排序算法
  9. 趋势科技、亚马逊AWS作后盾,天云趋势首款SaaS安全服务强势来袭
  10. 一生只见一次的大彗星今天来了!