swam模式

使用docker的swarm模式,可以很方便的搭建docker engine集群。docker engine是docker 容器的运行时环境,可以在docker engine上build和run 容器,一台机器(物理或虚拟机)上只有一套docker engine,一个docker engine上可以运行多个docker容器。swarm可以让多台机器(物理或虚拟机)的docker engine构成集群。

node,service,task

node是加入到swarm集群中的一个docker引擎实体,可以在一台物理机上运行多个node,node分为manager nodes和worker nodes,manager node进行管理,但在默认情况下也会像worker node一样运行task。
    service是运行在worker nodes上的task的描述,service的描述包括使用哪个docker 镜像,以及在使用该镜像的容器中执行什么命令。
    task是service的执行实体,task 启动docker容器并在容器中执行任务。

使用

1. 启动swarm集群
#docker swam init --advertise-addr 192.168.2.10
Swarm initialized: current node (lm24azn2ptgasi9ov3121k6yw) is now a manager.
To add a worker to this swarm, run the following command: docker swarm join \
--token SWMTKN-1-5fli7xt3s4hbt3pghkmaosgz98ttvmnd1t5lolnkfn446s6gpj-15893cufutsyuc7ewg89iwhz3 \
192.168.2.10:2377

主机 192.168.2.10作为manager machine, 创建完之后,该机器自动加入到swarm集群。通过docker info可以查看。

2. 加入新机器到集群

在docker swarm init 完了之后,会提示如何加入新机器到集群,如果当时没有注意到,也可以通过下面的命令来获知 如何加入新机器到集群。

[skc@dev-11 ubt14-hadoop-hbase]$ docker swarm join-token worker
To add a worker to this swarm, run the following command: docker swarm join \
--token SWMTKN-1-5fli7xt3s4hbt3pghkmaosgz98ttvmnd1t5lolnkfn446s6gpj-15893cufutsyuc7ewg89iwhz3 \
192.168.2.10:2377

然后在另外机器上执行

docker swarm join \
--token SWMTKN-1-5fli7xt3s4hbt3pghkmaosgz98ttvmnd1t5lolnkfn446s6gpj-15893cufutsyuc7ewg89iwhz3 \
192.168.2.10:2377

使机器加入集群。

然后在manager machine上执行 docker node ls 查看有哪些节点加入到swarm集群。

[skc@dev-11 ubt14-hadoop-hbase]$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
ei5cfav0zorx41rc41fq3yda6 dev-12 Ready Active
gsquovn98ncoxfcupj8haj61e dev-13 Ready Active
lm24azn2ptgasi9ov3121k6yw * dev-11 Ready Active Leader
3. 向集群中部署service

在swarm集群中部署service只能在manager machine
上进行操作。
3.1 创建

[skc@dev-11 ubt14-hadoop-hbase]$ docker service create --replicas 1 --name helloworld alpine ping docker.com
u0p8d9j0p8x2bbv9e8w43ztfp 其中, --name 指定了service的名称; --replicas 指定了需要几个task同时运行;
alpine ping docker.com 是使用alpine容器执行ping docker.com 的命令。

3.2 查看信息
    使用docker service inspect --pretty helloworld 来查看service的信息。
    使用docker service ps helloworld 来查看helloworld的服务在哪个节点上运行。

[skc@dev-11 ubt14-hadoop-hbase]$ docker service ps helloworld
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
hx9lqu9ksq1v helloworld.1 alpine:latest dev-12 Running Running about a minute ago
mejq6j42ozv0 \_ helloworld.1 alpine:latest dev-11 Shutdown Failed about a minute ago "task: non-zero exit (1)"

上图中出现两个task,原因是之前在dev-11上执行命令使task挂掉了,swarm自动在dev-12上新启动了一个task。此时在 dev-12上执行 docker ps,可以看到有容器正在运行。

[skc@dev-12 ~]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9a075e16a7dd alpine@sha256:dfbd4a3a8ebca874ebd2474f044a0b33600d4523d03b0df76e5c5986cb02d7e8 "ping docker.com" About a minute ago Up About a minute helloworld.1.hx9lqu9ksq1vp9dfx2hs0dlk8

3.3 修改service的task个数
$ docker service scale <SERVICE-ID>=<NUMBER-OF-TASKS>

[skc@dev-11 ubt14-hadoop-hbase]$ docker service scale helloworld=2
helloworld scaled to 2
[skc@dev-11 ubt14-hadoop-hbase]$ docker service ps helloworld
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
hx9lqu9ksq1v helloworld.1 alpine:latest dev-12 Running Running 10 minutes ago
mejq6j42ozv0 \_ helloworld.1 alpine:latest dev-11 Shutdown Failed 10 minutes ago "task: non-zero exit (1)"
0kxu1cqetga0 helloworld.2 alpine:latest dev-11 Running Running 8 seconds ago

3.4 删除service
docker service rm helloworld

3.5 更改节点的availablity状态
    swarm集群中node的availability状态可以为

active或者drain。其中active状态下,node可以接受来自manager节点的任务分派;而drain状态下,node节点会结束task,且不再接受来自manager节点的任务分派。
$ docker node update --availability drain worker1
$ docker node update --availability active worker1

docker 应用-4(swarm模式搭建集群)的更多相关文章

  1. Docker Swarm java 服务集群

    Docker Swarm java 服务集群 环境1: 系统:Linux Centos 7.4 x64 内核:Linux docker 3.10.0-693.2.2.el7.x86_64 Docker ...

  2. 28.zookeeper单机(Standalones模式)和集群搭建笔记

    zookeeper单机(Standalones模式)和集群搭建: 前奏: (1).zookeeper也可以在windows下使用,和linux一样可以单机也可以集群,具体就是解压zookeeper-3 ...

  3. 使用 Docker 一步搞定 ZooKeeper 集群的搭建

    背景 原来学习 ZK 时, 我是在本地搭建的伪集群, 虽然说使用起来没有什么问题, 但是总感觉部署起来有点麻烦. 刚好我发现了 ZK 已经有了 Docker 的镜像了, 于是就尝试了一下, 发现真是爽 ...

  4. Docker 一步搞定 ZooKeeper 集群的搭建

    Docker 一步搞定 ZooKeeper 集群的搭建 背景 原来学习 ZK 时, 我是在本地搭建的伪集群, 虽然说使用起来没有什么问题, 但是总感觉部署起来有点麻烦. 刚好我发现了 ZK 已经有了 ...

  5. Redis——(主从复制、哨兵模式、集群)的部署及搭建

    Redis--(主从复制.哨兵模式.集群)的部署及搭建 重点: 主从复制:主从复制是高可用redis的基础,主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复. 哨兵和集群都是 ...

  6. 复制虚拟机vmware centos搭建集群节点过程中网络配置eth0和eth1遇到的问题以及NAT模式下虚拟机静态IP配置方法

    在centos中安装完第一个虚拟机后,一般习惯通过克隆的方式创建其它虚拟机,开后vmware无法发现网卡信息,系统认为这是重新安装,所以重新创建了一个新的网卡叫eth1. 并且用IFCONFIG-a查 ...

  7. Docker中提交任务到Spark集群

    1.  背景描述和需求 数据分析程序部署在Docker中,有一些分析计算需要使用Spark计算,需要把任务提交到Spark集群计算. 接收程序部署在Docker中,主机不在Hadoop集群上.与Spa ...

  8. Redis 实战篇之搭建集群

    Redis 集群简介# Redis Cluster 即 Redis 集群,是 Redis 官方在 3.0 版本推出的一套分布式存储方案.完全去中心化,由多个节点组成,所有节点彼此互联.Redis 客户 ...

  9. 用apache和tomcat搭建集群,实现负载均衡

    型的企业应用每天都需要承受巨大的访问量,在着巨大访问量的背后有数台服务器支撑着,如果一台服务器崩溃了,那么其他服务器可以使企业应用继续运行,用户对服务器的运作是透明化的,如何实现这种透明化呢?由如下问 ...

随机推荐

  1. Python核心编程(第二版)正则表达式练习题解

    15-1. 识别下列字符串:“bat,” “bit,” “but,” “hat,” “hit,” 或 “hut” from re import match word = raw_input('inpu ...

  2. Hibernate(3)配置文件hibernate.cfg.xml

    5.配置文件 Hibernate 配置文件主要用于配置数据库连接和 Hibernate 运行时所需的各种属性,每个 Hibernate 配置文件对应一个 Configuration 对象 Hibern ...

  3. jeffy-vim-v3.1.tar.gz

    下载链接: https://files.cnblogs.com/files/pengdonglin137/jeffy-vim-v3.1.tar.gz 1. 使用sublimemonokai配色 2. ...

  4. zookeeper 实现分布式锁安全用法

    zookeeper 实现分布式锁安全用法 标签: zookeeper sessionExpire connectionLoss 分布式锁 背景 ConnectionLoss 链接丢失 SessionE ...

  5. 微信小程序判断用户是否需要再次授权获取个人信息

    一.index.js设置如下 //获取用户的授权信息,放到本地缓存中 wx.getSetting({ success: (res) => { if(res.authSetting['scope. ...

  6. 一步步教你轻松学主成分分析PCA降维算法

    一步步教你轻松学主成分分析PCA降维算法 (白宁超 2018年10月22日10:14:18) 摘要:主成分分析(英语:Principal components analysis,PCA)是一种分析.简 ...

  7. 读吴恩达算-EM算法笔记

    最近感觉对EM算法有一点遗忘,在表述的时候,还是有一点说不清,于是重新去看了这篇<CS229 Lecture notes>笔记. 于是有了这篇小札. 关于Jensen's inequali ...

  8. JPA学习笔记(3)——JPA注解

    Entity Table Id GeneratedValue Basic Column Transient Temporal @Entity @Entity 标注用于实体类声明语句之前.指出该Java ...

  9. SNF开发平台WinForm-EasyQuery统计分析-效果-非常牛逼的报表查询工具

    无论是单轴曲线 .双轴曲线 .柱形图 .饼图 .雷达图 .仪表图.图表引擎全能为您轻松实现.您只需要 3 步操作(数据源准备,设计图表,挂接到您想要展示的位置)便可完成 BI 的设计. 无论是普通报表 ...

  10. IntelliJIdea 2016.2 使用 tomcat 8.5 调试spring的web项目时,bean被实例化两次导致timer和thread被启动了两遍的问题的解决

    今天新搭建了一个spring的web项目,项目启动时会启动一个线程,线程里定时执行任务,另外还启动了一个定时器,每秒钟统计系统吞吐量等业务性能数据.但是调试的时候惊奇的发现定时器和线程均被启动了两次. ...