docker~swarm搭建docker高可用集群
来源:互联网 发布:浪潮软件重大新闻 编辑:程序博客网 时间:2024/05/17 00:55
回到目录
Swarm概念
Swarm是Docker公司推出的用来管理docker集群,它将一群Docker宿主机变成一个单一的,虚拟的主机。Swarm使用标准的Docker API接口作为其前端访问入口,换言之,各种形式的Docker Client(docker client in Go, docker_py, docker等)均可以直接与Swarm通信。Swarm几乎全部用go语言来完成开发,Swarm0.2发布,相比0.1版本,0.2版本增加了一个新的策略来调度集群中的容器,使得在可用的节点上传播它们,以及支持更多的Docker命令以及集群驱动。
Swarm deamon只是一个调度器(Scheduler)加路由器(router),Swarm自己不运行容器,它只是接受docker客户端发送过来的请求,调度适合的节点来运行容器,这意味着,即使Swarm由于某些原因挂掉了,集群中的节点也会照常运行,当Swarm重新恢复运行之后,它会收集重建集群信息.
Swarm结构图
Swarm的基本命令
docker node 用来显示集群的节点,默认建立时只有一个节点,当然也就谈不上高可用了,可以使用docker node --help来查看所有node参数
集群初始化 docker swarm init
当已经被初始化后,就不能重新执行这个操作了,使用docker node ls 来查看刚建立的集群
集群中的管理节点和工作节点功能图
添加管理节点 docker swarm join
Docker Swarm 命令中还需要添加一些选项:
* join:表明一个新的节点将被添加进 Swarm
* –manager:表明节点的性质(manager vs worker)
* –listen-addr:让一个新添加的节点可以访问 Swarm 内的其他节点
* 最后的参数就是第一管理节点的地址(即这一命令将被送到的那个节点)
注意:由于 –auto-accept manager 选项会在 Swarm 初始化的过程中被提供,所以第二管理节点会被自动接受。如果没有这一选项,那么第二管理节点需要被第一管理节点手动接受。
$ MANAGER2_IP=$(docker-machine ip manager2)docker-machine ssh manager2 docker swarm join --manager --listen-addr $MANAGER2_IP:2377 $MANAGER1_IP:2377
Swarn部署时使用的脚本,来自网络
下面是一小段用来创建 Docker 主机并部署 Swarm 的 Shell 脚本。当然了,管理/工作节点的数字都是可以随意改动的。
注意:创建两个管理节点和两个工作节点,仅仅是用来作示范。在工业生产中,我们可能需要在集群里搭建 3 个管理节点和 5 个工作节点。
# Define the number of managers/workersMANAGER=3WORKER=5# Create the Docker hostsfor i in $(seq 1 $MANAGER); do docker-machine create --driver virtualbox manager$i; donefor i in $(seq 1 $WORKER); do docker-machine create --driver virtualbox worker$i; done# Init the swarmdocker-machine ssh manager1 docker swarm init --auto-accept manager --auto-accept worker --listen-addr $(docker-machine ip manager1):2377# Add additional manager(s)for i in $(seq 2 $MANAGER); do docker-machine ssh manager$i docker swarm join --manager --listen-addr $(docker-machine ip manager$i):2377 $(docker-machine ip manager1):2377; done# Add workersfor i in $(seq 1 $WORKER); do docker-machine ssh worker$i docker swarm join --listen-addr $(docker-machine ip worker$i):2377 $(docker-machine ip manager1):2377; done
对于上面文章中,只提到了集群,而没有谈到如何去使用,在建立集群后,服务的部署我们可以用
docker stack deploy -c test.yml test
下面给出自己写的一个服务,版本3的
version: "3"services: loggerapi: image: logger.api build: context: ./src/Logger.Api dockerfile: Dockerfile ports: - "5000:80" networks: - ingress loggermanager: image: logger.manager build: context: ./src/Logger.Manager dockerfile: Dockerfile ports: - "5050:80" networks: - ingressnetworks: ingress:
这里有个服务要注意,服务的名称一定不能有点,如logger.manager这是错误的!
来建立一个服务,同时可以使用docker service来查看已经运行的服务!
还有一点要注意,yml在进行v3版后,不再支持build,也就是说,你需要先把镜像建立好才行!
回到目录
- docker~swarm搭建docker高可用集群
- docker swarm集群搭建
- Swarm搭建Docker集群
- Docker搭建Swarm集群
- Swarm搭建Docker集群
- Swarm+docker集群搭建
- Swarm -- 搭建Docker集群
- Docker + Swarm + etcd 集群搭建
- Docker教程之 Swarm搭建Docker集群
- Docker Swarm搭建生产环境的集群
- ubuntu 使用 swarm 搭建 docker 集群
- Docker 集群管理工具swarm的搭建
- 搭建Docker Swarm集群实战(三)(swarm mode)
- Docker学习笔记 — Swarm搭建Docker集群
- Docker学习笔记 — Swarm搭建Docker集群
- 使用docker 1.12 搭建多主机docker swarm集群
- Docker学习笔记 — Swarm搭建Docker集群
- Docker学习笔记 — Swarm搭建Docker集群
- 前 言 (全集PDF版下载)
- 5.1.4—二叉树的遍历—Binary Tree Level Order Traversal
- Union与Union All 区别
- 5.1.5—二叉树的遍历—Binary Tree Level Order Traversal II
- Android7.0中尝试传递 file:// URI 会触发 FileUriExposedException
- docker~swarm搭建docker高可用集群
- 嵌入式linux基础面试题
- 全球100款大数据工具汇总
- 5.1.6—二叉树的遍历—Binary Tree Zigzag Level Order Traversal
- Java 静态绑定与动态绑定
- nb物联网 bc95模块联网
- 5.1.7—二叉树的遍历—Recover Binary Sear Tree
- spring mav创建和注销session
- 5.1.8—二叉树的遍历—Same Tree