本片文章介绍一下 使用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集群的更多相关文章
-
docker学习------centos7.5下的swarm集群可视化构建
1.swarm集群 manager : 192.168.211.175 agent1 : 192.168.211.176 agent2 : 192.168.211.177 2.环境 ...
-
[第十五篇]——Swarm 集群管理之Spring Cloud直播商城 b2b2c电子商务技术总结
Swarm 集群管理 简介 Docker Swarm 是 Docker 的集群管理工具.它将 Docker 主机池转变为单个虚拟 Docker 主机. Docker Swarm 提供了标准的 Dock ...
-
Docker Swarm集群中部署Traefik负载均衡器
一.创建单节点的Docker Swarm集群 docker swarm init 二.在Swarm集群中创建一个网络 docker network create --driver=overlay tr ...
-
Centos7的安装、Docker1.12.3的安装,以及Docker Swarm集群的简单实例
目录 [TOC] 1.环境准备 本文中的案例会有四台机器,他们的Host和IP地址如下 c1 -> 10.0.0.31 c2 -> 10.0.0.32 c3 -> 10.0.0. ...
-
[转载] 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 ...
-
Docker Swarm 集群管理利器核心概念扫盲
Swarm 简介 Docker Swarm 是 Docker 官方推出的容器集群管理工具,基于 Go 语言实现.代码开源在:https://github.com/docker/swarm 使用它可以将 ...
-
swarm 集群
1.创建manage节点 $docker swarm init --advertise-addr=192.168.0.38(主机ip) To add a worker to this swarm, r ...
-
云计算之路-阿里云上-容器难容:优化自建 docker swarm 集群的部署
在上周六遭遇阿里云容器服务 swarm 版的故障之后,我们决定还是走自建 docker swarm 之路,只要不是阿里云底层的问题,我们相信会找到办法解决或避开自建 docker swarm 不稳定的 ...
-
Docker Swarm集群部署
一.系统环境 1)服务器环境 节点名称 IP 操作系统 内核版本 manager 172.16.60.95 CentOs7 4.16.1-1.el7.elrepo.x86_64 node-01 172 ...
随机推荐
-
01- Shell脚本学习--入门
简介 Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本. Unix/Linux上常见的Shell脚本解释器有bash.sh.csh.ksh等,习惯上把它们称作一种Shell.我们常说有多少 ...
-
ava.lang.NullPointerException的一般解决方法
抛出异常后,一般会输出异常信息,, 从上往下找 ,第一次出现与"自己的代码"有关的部分,就是异常抛出的最近点,异常就是在那里开始的 然后再顺藤摸瓜 找问题去吧
-
DOCTYPE对$(window).height()取值的影响
前言:公司项目需要用到一个弹框垂直居中,网上类似的垂直居中弹出层大同小异,因为项目是基于Jquery 下的,所以用$(window).height()-layer.height())/2 +$(doc ...
-
Android NetWorkUtil
package com.android.hcframe.netdisc.util; import java.io.BufferedReader; import java.io.InputStreamR ...
-
mybatis的动态sql中collection与assoction
User.java, Role.java,address.java为三个类 public class User { .....//user自己的属性//association一对一 private R ...
-
linux系统编程之文件IO
1.打开文件的函数open,第一个参数表示文件路径名,第二个为打开标记,第三个为文件权限 代码: #include <sys/types.h> #include <sys/stat. ...
-
js 对象,数组,字符串,相互转换
1:对象转换数组 let obj = {'val1':1, 'val2':2, 'val3':3, 'val4':4}; var arr = [] for (let i in obj) { //取键 ...
-
# 20175329 2018-2019-2 《Java程序设计》 第二周学习总结
学号 2018-2019-3<Java程序设计>第二周学习总结 教材学习内容总结 第二三章与我们所学习的C语言有很多的相似点,在这里我想主要就以我所学习的效果来讨论一下JAVA与 ...
-
About me &; OI这一年
1 最近碰到一些 OIers 问我学 OI 的经历 回忆了一下,我做的第一道题是A+B Problem,时间:2018年2月15日 呀,正好一年了 2 我是来自 HB 的 OIer 一枚 现在高一,就 ...
-
潭州课堂25班:Ph201805201 django 项目 第十九课 文章主页数据库模型,前后台功能实现 (课堂笔记)
-数据库模型设计 : 文章:新闻表: 字段:图片,标题,摘要,类型,作者,创建时间 标签表 评论表, 轮播图:外键,指向文章的外键表 在 utls 目录下创建 models.py 把其它模型常用的字 ...