本片文章介绍一下 使用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. Android N preview 试用

    一.下载更新包 下载地址:https://developer.android.com/intl/zh-cn/preview/download.html 注意下载适合你手机的安装包哦 二.把你手机的oe ...

  2. WPF 数据绑定Binding

    什么是数据绑定? Windows Presentation Foundation (WPF) 数据绑定为应用程序提供了一种简单而一致的方法来显示数据以及与数据交互. 通过数据绑定,您可以对两个不同对象 ...

  3. 从下往上看--新皮层资料的读后感 第二部分:突触Synapses

    为进一步了解这种连接性产生的差异,在认识soma这个独立的逻辑单元后,进化过程设计了一整套系统设计来使用这个逻辑单元.为促成细胞体之间发生连接构成系统dendrite和axon之间的连接需要引入新的功 ...

  4. WinForm 公共控件

    一.窗体属性: 1.AcceptButton - 窗体的“接受”按钮.如果设置该属性,每次用户按“Enter”键都相当于“单击”了该按钮. 需要设置哪个键,就在后面选择. 2.CancelButton ...

  5. java selenium (一) selenium 介绍

    Selenium 是目前用的最广泛的Web UI 自动化测试框架. 本系列文章,将深入简出来讲解selenium 的用法 文章的末尾处, 有整个系列的链接 阅读目录 selenium 的命名 sele ...

  6. java selenium (三) 环境搭建 基于Maven

    现在Java的大部分项目都是基于Maven,  在Maven项目中使用Selenium2. 非常简单. 首先你需要配置好Maven的环境 可以参考本博客的Maven教程系列,Maven入门教程(一) ...

  7. java map的默认排序问题

    import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; import java.util.Tre ...

  8. Oracle连接数据库的封装类OracleDB

    import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.S ...

  9. Windows 下 pdf2word 的可用软件记录

    因为用 latex 写的原稿,提交审阅的时候有 Word 版本的要求,只好找软件来转换.折腾了一整天的 Linux 下latex2html, latex2rtf 等两个曲线救国的方式来生成 Word ...

  10. cacti web页面访问 settings出错

    查看apache错误日志: 错误信息Mon Dec 26 11:00:48.241653 2016] [:error] [pid 32607] [client 192.168.10.79:65009] ...