docker swarm集群

第一步:安装swarm集群

192.168.132.131----->(manger1,node)
192.168.132.132----->(manger2,node)
192.168.132.133----->(node)
192.168.132.135----->(node)

manger1 主机

启动 Consel 服务后端

#启动 consel 服务容器,映射到主机的 8500 端口。
$ docker run -d -p 8500:8500 --name=consul progrium/consul -server -bootstrap

启动主管理节点

启动一个主管理节点,映射到主机的 4000 端口,并获取所在主机地址为 <manager0_ip>。其中 4000 端口是 Swarm 管理器的默认监听端口,用户也可以指定映射为其它端口。

$ docker run -d -p 4000:4000 swarm manage -H :4000 --replication --advertise <manager0_ip>:4000 consul://<consul_ip>:8500  #manager0 本机ip

manger2 主机

启动备用管理节点

$ docker run -d swarm manage -H :4000 --replication --advertise <manager1_ip>:4000 consul://<consul_ip>:8500    #manager1 本机ip

所有node节点

启动工作节点

docker run -d swarm join --advertise=<node_ip>:2375 consul://<consul_ip>:8500    #工作节点ip

测试:

docker -H 192.168.132.131:4000 info

docker -H 192.168.132.132:4000 info

关闭 manger1的swarm 管理节点,去管理节点2上 docker -H 192.168.132.132:4000 info 发现 role 变为 primary

安装shipyard

Shipyard是一款开源的图形化的Docker管理工具,官方有自动安装脚本,使用非常方便。复制、粘贴、使用,就这么简单。先不研究他是如何实现的,安装使用起来再说。

所有操作均在manger1节点

# docker pull rethinkdb
# docker pull microbox/etcd
# docker pull shipyard/docker-proxy
# docker pull swarm
# docker pull shipyard/shipyard #1. 数据存储(rethinkdb)
docker run -ti -d --name shipyard-rethinkdb rethinkdb #2.Docker代理服务(shipyard/docker-proxy)
docker run -ti -d -p 2376:2375 --hostname=$HOSTNAME --name shipyard-proxy -v /var/run/docker.sock:/var/run/docker.sock -e PORT=2375 shipyard/docker-proxy #3 启动shipyard
docker run -ti -d --name shipyard-controller --link shipyard-rethinkdb:rethinkdb --link shipyard-swarm-manager:swarm -p 8083:8080 shipyard/shipyard server -d tcp://swarm:4000 注解:
tcp://swarm:4000 表示swarm集群的管理地址(端口为搭建集群时的管理端口) --link shipyard-swarm-manager:swarm
shipyard-swarm-manager 表示的是swarm manger的容器名称 #然后访问:http://manger1_ip:8083
默认用户名/密码 admin/shipyard

注解:
10.211.55.20:2375 为node节点ip和端口
10.211.55.20:4001 为本地管理端口(及管理节点的ip和端口,类似于consul服务)

另一种方法安装

$ curl -s https://shipyard-project.com/deploy | bash -s

ip:8080 admin shipyard

etcd 服务 添加集群方法:

管理节点:(etcd自动发现,与consul自动发现功能相同)

#启动发现服务
docker run -ti -d -p 4001:4001 -p 7001:7001 --name shipyard-discovery microbox/etcd -name discovery 类似于 consul的8500端口 #启动管理节点:
docker run -ti -d --name shipyard-swarm-manager swarm manage --host tcp://0.0.0.0:3375 etcd://10.211.55.20:4001 10.211.55.20为本机ip,类似于consul服务ip和端口,tcp://0.0.0.0:3375 为管理节点的管理端口

node节点:添加节点到集群

docker run -ti -d --name shipyard-swarm-agent swarm join --addr 10.211.55.20:2375 etcd://10.211.55.20:4001

shipyard 管理swarm集群(附etcd发现服务方法)的更多相关文章

  1. 如何使用Istio 1.6管理多集群中的微服务?

    假如你正在一家典型的企业里工作,需要与多个团队一起工作,并为客户提供一个独立的软件,组成一个应用程序.你的团队遵循微服务架构,并拥有由多个Kubernetes集群组成的广泛基础设施. 由于微服务分布在 ...

  2. docker + swarm 集群

    docker + swarm 集群 导读 Swarm是Docker公司在2014年12月初新发布的容器管理工具.和Swarm一起发布的Docker管理工具还有Machine以及Compose.Swar ...

  3. Docker swarm集群增加节点和删除节点

    Docker swarm集群增加节点 docker swarm初始化 docker swarm init docker swarm 增加节点 在已经初始化的机器上执行:# docker swarm j ...

  4. 通过docker-machine和etcd部署docker swarm集群

    本片文章介绍一下 使用docker-machine 搭建docker swarm 集群:docker swarm是docker 官方搭建的容器集群编排工具:容器编排,就是可以使你像使用一太机器一样来使 ...

  5. 003.etcd集群部署-静态发现

    一 etcd集群概述 1.1 概述 静态启动etcd集群要求每个成员都知道集群中的另一个成员.Etcd运行在集群的每个coreos节点上,可以保证coreos集群的稳定,可靠的运行.当集群网络出现动荡 ...

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

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

  7. 004.etcd集群部署-动态发现

    一 etcd发现简介 1.1 需求背景 在实际环境中,集群成员的ip可能不会提前知道.如使用dhcp自动获取的情况,在这些情况下,使用自动发现来引导etcdetcd集群,而不是指定静态配置,这个过程被 ...

  8. 非节点主机通过内网远程管理docker swarm集群

    这是今天使用 docker swarm 遇到的一个问题,终于在睡觉前解决了,在这篇随笔中记录一下. 在 docker swarm 集群的 manager 节点上用 docker cli 命令可以正常管 ...

  9. Docker Swarm——集群管理

    前言 之前在总结docker machine的时候,当时对docker理解还不够深入,甚至还不知道 docker machine 与 docker swarm 的区别. 在查阅资料以及官方文档之后,今 ...

随机推荐

  1. HTTP 错误 500.21 - Internal Server Error 处理程序“BlockViewHandler”在其模块列表中有一个错误模块“ManagedPipelineHandler

    HTTP 错误 500.21 - Internal Server Error  处理程序“BlockViewHandler”在其模块列表中有一个错误模块“ManagedPipelineHandler ...

  2. python之旅4[第四篇]

    常用内置函数 map  遍历序列,对序列中的每个元素操作,获取新的序列 如下 对所有元素加10 li = [,,,] def func(arg): new_list = map(func,li) pr ...

  3. 关闭VS2017脚本调试 已启用 Visual Studio 中的 Chrome 脚本调试

    转载:https://blog.csdn.net/lilinoscar/article/details/79114721 每当调试项目时,都是重新打开一个浏览器窗口,而且关闭调试后,也会关闭窗口,很麻 ...

  4. Codeforces Round #514 (Div. 2) C. Sequence Transformation 思维构造

    题意 给出一个1-n的集合   gcd 集合里面的所有数  得到的 一个 数   然后自己选择删去一个数   要使得到的数 构成的数列 的字典序最大 思路: gcd所有数 那gcd得到的数肯定要小于数 ...

  5. Java 枚举(enum) 详解7种常见的用法

    Java 枚举(enum) 详解7种常见的用法 来源 https://blog.csdn.net/qq_27093465/article/details/52180865 JDK1.5引入了新的类型— ...

  6. python 去重

    List: listA = ['python','python','言','是','一','门','动','态','语','言'] print sorted(set(listA), key = lis ...

  7. JMeter5.1企业级应用应用常用功能详解(含插件安装)

    apache jmeter是100%的java桌面应用程序,它被设计用来加载被测试软件功能特性.度量被测试软件的性能.jmeter可以模拟大量的服务器负载,并且jmeter提供图形化的性能分析. JM ...

  8. MySQL -- 单行函数

    大小写控制函数 SELECT LOWER('HelloWrold'), UPPER('HelloWorld'); 字符控制函数 SELECT REPLACE('abcdababab','p','m') ...

  9. 区块链使用Java,以太坊 Ethereum, web3j, Spring Boot

    Blockchain is one of the buzzwords in IT world during some last months. This term is related to cryp ...

  10. java 各种数据类型判断为空

    一,基本数据类型 八种基本类型有默认值 http://www.runoob.com/java/java-basic-datatypes.html 二,String 对象 // 判断String为空 / ...