本片文章介绍一下 使用docker-machine 搭建docker swarm 集群;docker swarm是docker 官方搭建的容器集群编排工具;容器编排,就是可以使你像使用一太机器一样来使用一个集群,你运行的容器可能会在容器中的任何一个节点上运行;

首先盗一张 docker swarm的架构图:

图片来源 https://yeasy.gitbooks.io/docker_practice/content/swarm/intro.html

在使用 Swarm 管理docker 集群时,会有一个 swarm manager 以及若干的 swarm node,swarm manager上运行 swarm daemon,用户只需要跟 swarm manager 通信,然后 swarm manager 再根据discovery service的信息选择一个swarm node 来运行container。

值得注意的是 swarm daemon 只是一个任务调度器(scheduler)和路由器(router),它本身不运行容器,它只接受 Docker client 发送过来的请求,调度合适的 swarm node 来运行 container。这意味着,即使 swarm daemon 由于某些原因挂掉了,已经运行起来的容器也不会有任何影响;

swarm manager 需要知道有哪些swarm node, 这就需要进行“服务发现”(有了注册才有发现);swarm的服务发现方式有很多种,这里主要实验了两种,即通过docker hub的token 和 etcd;

(1)上一篇文章中讲到docker-machine,docker-machine是集成了docker swarm的;docker hub token的方式是通过swarm向docker hub token申请一个token,然后将所有的node加入到这个token;

首先需要通过swarm的create命令来去docker hub去创建一个token, 前一章中,我们建立了一个叫hehe-dev的docker machine;

docker-machine ssh hehe-dev     登陆到这个machine中

dao pull swarm                          将swarm的下载镜像下载下来,这里运用daocloud来进行加速

docker run swarm create            运行swarm create命令建立一个token,这个token要牢记下来,下文用SWARM_TOKEN来代替这个token;

接着退出hehe-dev

docker-machine create -d virtualbox --swarm --swarm-master --swarm-discovery token://SWARM_TOKEN swarm-master    建立swarm manager并且将其加入到token中;

docker-machine create -d virtualbox --swarm --swarm-discovery token://SWARM_TOKEN swarm-node-01

docker-machine create -d virtualbox --swarm --swarm-discovery token://SWARM_TOKEN swarm-node-02                           接着建立起两个swarm node,名字自己随便取,我这里选的是swarm-node-01 和 swarm-node-01 不能有下划线

通过上面几步,其实一个swarm集群就已经建立起来了,通过docker-machine ls 可以看到已经建立起来的docker machine; 接着我们要看看集群里面的情况:

docker-machine ssh swarm-master                        登陆到swarm-master节点中(其实登陆到集群中任何一台机器都可以),然后运行

sudo docker run --rm swarm list token://SWARM_TOKEN   然后就可以看到集群中的节点信息了;

(2)etcd 是coreOS项目下的一个分布式键值系统,主要用于服务发现和配置分发; 是用etcd作为swarm的服务发现组件其实是类似的,将etcd的某个目录(etcd://ip:port/dir 的格式)暴漏给swarm node,然后每个swarm node分别连接到这个目录,将自己的ip,端口注册到里面;

首先是安装etcd,到etcd的官网下载即可;github.com/coreos/etcd/releases, 我是mac os x,安装和启动命令如下:

curl -L https://github.com/coreos/etcd/releases/download/v2.3.0-alpha.1/etcd-v2.3.0-alpha.1-darwin-amd64.zip -o etcd-v2.3.0-alpha.1-darwin-amd64.zip

unzip etcd-v2.3.0-alpha.1-darwin-amd64.zip

cd etcd-v2.3.0-alpha.1-darwin-amd64

./etcd --data-dir=/tmp/default.etcd --listen-client-urls 'http://本机IP:4001' --advertise-client-urls 'http://本机IP:4001'

这样etcd服务就启动了。

docker-machine create -d virtualbox --swarm --swarm-master --swarm-discovery etcd://本机IP:4001/swarm swarm-master-etcd   ;

docker-machine create -d virtualbox --swarm --swarm-discovery etcd://本机IP:4001/swarm swarm-node-etcd-01

docker-machine create -d virtualbox --swarm --swarm-discovery etcd://本机IP:4001/swarm swarm-node-etcd-02

上面创建服务的过程其实和token是一样的,只不过是讲etcd的url替换了token,查看swarm集群组成的时候,同时也是一样的道理;


通过docker-machine和etcd部署docker swarm集群的更多相关文章

  1. docker学习------centos7.5下的swarm集群可视化构建

    1.swarm集群 manager : 192.168.211.175 agent1    : 192.168.211.176    agent2    :  192.168.211.177 2.环境 ...

  2. [第十五篇]——Swarm 集群管理之Spring Cloud直播商城 b2b2c电子商务技术总结

    Swarm 集群管理 简介 Docker Swarm 是 Docker 的集群管理工具.它将 Docker 主机池转变为单个虚拟 Docker 主机. Docker Swarm 提供了标准的 Dock ...

  3. Docker Swarm集群中部署Traefik负载均衡器

    一.创建单节点的Docker Swarm集群 docker swarm init 二.在Swarm集群中创建一个网络 docker network create --driver=overlay tr ...

  4. docker swarm快速部署redis分布式集群

    环境准备 四台虚拟机 192.168.2.38(管理节点) 192.168.2.81(工作节点) 192.168.2.100(工作节点) 192.168.2.102(工作节点) 时间同步 每台机器都执 ...

  5. Centos7的安装、Docker1.12.3的安装,以及Docker Swarm集群的简单实例

    目录 [TOC] 1.环境准备 ​ 本文中的案例会有四台机器,他们的Host和IP地址如下 c1 -> 10.0.0.31 c2 -> 10.0.0.32 c3 -> 10.0.0. ...

  6. [转载] Centos7的安装、Docker1.12.3的安装,以及Docker Swarm集群的简单实例

    1.环境准备 ​ 本文中的案例会有四台机器,他们的Host和IP地址如下 c1 -> 10.0.0.31 c2 -> 10.0.0.32 c3 -> 10.0.0.33 c4 -&g ...

  7. Docker Swarm 集群管理利器核心概念扫盲

    Swarm 简介 Docker Swarm 是 Docker 官方推出的容器集群管理工具,基于 Go 语言实现.代码开源在:https://github.com/docker/swarm 使用它可以将 ...

  8. swarm 集群

    1.创建manage节点 $docker swarm init --advertise-addr=192.168.0.38(主机ip) To add a worker to this swarm, r ...

  9. 云计算之路-阿里云上-容器难容:优化自建 docker swarm 集群的部署

    在上周六遭遇阿里云容器服务 swarm 版的故障之后,我们决定还是走自建 docker swarm 之路,只要不是阿里云底层的问题,我们相信会找到办法解决或避开自建 docker swarm 不稳定的 ...

随机推荐

  1. mongo 相关命令

    mongo导入数据: 1. 先进入找到mongo 安装目录 执行 ./mongo 进入mongo 2. mongorestore -u 用户名 -p 密码 -d 数据库 —drop 文件存在路径 显示 ...

  2. 如何在页面进入时就加载js

    页面一打开就执行JS的代码! onLoadwindow.onLoad=function(){}window.onload=function(){ } 补充:window.onload和doucumen ...

  3. 【转】Centos升级Python 2.7.12并安装pip、ipython

    Centos系统一般默认就安装有Python2.6.6版本,不少软件需要2.7以上的,通过包管理工具安装不了最新的版本,通过源码编译可以方便安装指定版本,只需要把下面版本的数字换成你想要的版本号. 1 ...

  4. mybatis 对于基本类型数据传值的问题

    最近在开发的时候,遇到一个小问题: Caused by: org.apache.ibatis.reflection.ReflectionException: There is no getter fo ...

  5. 收藏夹里的js

    释放右键 javascript:(function(){var doc=document;var bd=doc.body;bd.onselectstart=bd.oncopy=bd.onpaste=b ...

  6. angular路由

    ngRoute需要引进以下文件 <script src="http://code.angularjs.org/1.2.5/angular.min.js"></sc ...

  7. Windows Store App JavaScript 开发:获取文件和文件夹列表

    在应用程序中有时可能需要获取用户库中的内容,以便执行相关的操作.如果要获取某个用户库中的内容,需要先获取到这个用户库,获得用户库可以通过Windows.Storage命名空间中的KnownFolder ...

  8. EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(完)

    前言 这一篇是本系列的最后一篇,虽然示例讲到这里就停止呢,但对于这些技术的学习远不能停止.虽然本示例讲的比较基础,但是正如我第一篇说到的,这个系列的目的不是说一些高端的架构设计,而是作为一个入门级,对 ...

  9. oracle 函数写法 总结

    1:首先看创建一个函数 给定一个日期,判断是否是休息日. create or replace function test(date_in in date) return int is num int; ...

  10. CSS3回执特殊图形