Docker集群管理(三)—— docker swarm mode基础教程
docker从1.12版(及后续版本)集成了swarmkit。可以方便的实现docker集群。它有哪些特点呢:
- 集成了集群功能
- 分散设计:manager和worker两种节点。
- 声明式服务模式
- 可伸缩
- 达到期望值——当某些有节点崩溃的时候,会在其他节点创建相应容器。
- 跨主机网络——采用overlay网络,docker可在不同的主机间通讯。
- 服务发现——内置服务发现功能,不需要额外使用etcd、consul、zookeeper.
- 负载均衡
- 安全通信
- 安全回滚
docker命令概览
从命令 docker -h 可以清楚的看到一些新的管理命令,这些管理命令下面还有子命令。
docker container
docker image
docker network
docker node
docker plugin
docker secret
docker service
docker stack
docker swarm
docker system
docker volume
例如:docker swarm init 初始化一个集群,其他命令直接 -h 查看命令就可以了。
本篇按docker官方教程顺序大致介绍一下,也将一下自己的体验过程中遇到的问题和解决办法分享出来。
创建集群
本节的目标:
*创建一个集群
*添加节点到集群
*部署服务到swarm集群中
*管理集群
准备工作
*在vmware中的虚拟机(这里是centos 7.3 )
192.168.139.128(manager1)
192.168.139.129(manager2)
192.168.139.130(manager3)
192.168.139.131(worker)
*安装docker1.12或以后的版本(这里是docker 1.13.1)
*设置虚拟机IP
虚拟机中的共享主机IP,在docker swarm创建了overaly网络后,可能引起IP变化,可修改 /etc/sysconfig/network-scripts/ifcfg-ens33来固定IP。
*开启防火墙端口
2377/tcp 、7946/tcp/udp,4789/udp端口
创建集群(swarm mode)
在一台128 manager上执行:
# docker swarm init --advertise-addr=192.168.139.128:2377
Swarm initialized: current node (htqmmiiiw8z4cww3c4n1mkbkz) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-1xl2p1wd6r2ak0ekqtzmw0lf2fc78glrsgqm02wdqmxqap9yjv-8tezcdr89dgsv3byjxm90yvhv \
192.168.139.128:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
此时128就是集群的manager节点(同时也是集群的worker节点),根据返回的信息,我们可以方便的添加一些worker节点,作为集群要考虑单点问题,故我们需要多添加几台作为manager节点。添加之前可以查看一下当前集群中的节点情况:
# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
m7vv962jgkvjn5padsem5cbmz * swarm.node1_m1 Ready Active Leader
然后执行:
docker swarm join-token manager
返回信息:
To add a manager to this swarm, run the following command:
docker swarm join
--token SWMTKN-1-6191qy3f6xkj39cg51gka40mgpq9c7o5tvyu19h3b1o0thh0e4-2kvhkye3194i7mxg3okjdqlog
192.168.139.128:2377
顺便说一下docker swarm join-token 就是查看如何添加manager或worker节点的token
这里打算再添加1个manager节点,在129上执行
docker swarm join \
--token SWMTKN-1-1xl2p1wd6r2ak0ekqtzmw0lf2fc78glrsgqm02wdqmxqap9yjv-ai5q09y6ogmfct4v5xhgsfmga \
192.168.139.128:2377
将130,131作为worker节点,执行
docker swarm join \
--token SWMTKN-1-6191qy3f6xkj39cg51gka40mgpq9c7o5tvyu19h3b1o0thh0e4-e1urle7qhwwvyufdqri4fre4s \
192.168.139.128:2377
现在可以在每一个manager节点上查看一下所有的节点(docker node ls):
9bwmkfxz0fgflp4zu6luequaa swarm.node3-m3 Ready Active
hntv80xrlm22x17i792cdr2j3 swarm.node2_m2 Ready Active Reachable
m7vv962jgkvjn5padsem5cbmz * swarm.node1_m1 Ready Active Leader
yiyz9v3huqd7m0kgjvdu5vppt swarm.node4 Ready Active
可以看到多了一个reachable的管理节点,如果leader挂了,那么reachable节点就会提升为leader。这里面有一些具体的关于raft算法的不在累述。
到此,我们的简易集群已经创建好了,看起来是不是太easy了?
可能会遇到的坑:
- 没开防火墙的2377/tcp 、7946/tcp/udp,4789/udp端口。
- 虚拟机中的共享主机IP,在docker swarm创建了overaly网络后,可能引起IP变化,可修改 /etc/sysconfig/network-scripts/ifcfg-ens33来固定IP。
Docker集群管理(三)—— docker swarm mode基础教程的更多相关文章
- Docker集群管理(一)—— 基础docker+swarm+shipyard
目的 学习docker的集群管理,摸索出高可用的docker微服务架构方案.本篇文章只初步的了解下swarm(docker新版已集成了swarm)的使用,了解docker的发现服务的基础方法(dock ...
- docker集群管理
docker集群管理 ps:docker machine docker swarm docker compose 在Docker Machine发布之前,你可能会遇到以下问题: ...
- docker集群管理之kubernetes
一.简介 kubernetes又叫做k8s,是Google开发的一款开源的docker集群管理工具,在这里对它的“发家史”,我不做过多的阐述,有时间大家可以自己去百度一下: 下面我要讲的就是容易混淆的 ...
- 基于zookeeper+mesos+marathon的docker集群管理平台
参考文档: mesos:http://mesos.apache.org/ mesosphere社区版:https://github.com/mesosphere/open-docs mesospher ...
- docker集群管理之swarm
一.简介 docker集群管理工具有swarm.k8s.mesos等,我所用到的是swarm和k8s,这篇文章主要介绍swarm:swarm是docker集成的原生 管理工具,只要你安装上docker ...
- Docker集群管理(二)—— docker+swarm+etcd+shipyard
引言 前一篇介绍如何简单的搭建一个可视化管理的docker集群,本篇将在此基础之上引入etcd发现服务. 目的 使用etcd发现服务解决swarm内置发现服务的不稳定问题.etcd采用raft算法,这 ...
- Centos下安装Docker集群管理工具Shipyard
一. Docker Shipyard是什么 ? shipyard是一个开源的docker管理平台,其特性主要包括: 支持镜像管理.容器管理. 支持控制台命令 容器资源消耗监控 支持集群swarm,可以 ...
- Docker集群管理工具 - Kubernetes 部署记录 (运维小结)
一. Kubernetes 介绍 Kubernetes是一个全新的基于容器技术的分布式架构领先方案, 它是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,Kubernete ...
- centos7上基于kubernetes的docker集群管理
kubernetes和docker的作用这里就不作介绍了,直接进入主题. 本文的目的是搭建docker集群,并使用kubernetes管理它们. 文中的软件环境除了kubernetes和docker, ...
随机推荐
- node-webkit 入门
下载node-webkit 点击这里: https://github.com/rogerwang/node-webkit 找到Downloads这一小节,然后下载对应平台的node-webkit预编译 ...
- ZOJ 1985 Largest Rectangle in a Histogram(刷广告)2010辽宁省赛
Largest Rectangle in a Histogram Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 21204 ...
- HDU 3546
http://acm.hdu.edu.cn/showproblem.php?pid=3546 题意:10个寄存器初值为1,有加乘赋值运算,最多30w次运算,大数最多5000位,问最后10个寄存器的结果 ...
- convert CAN frame
前言 最近了解了一些socket can的知识点,本文主要介绍如何将数据转换为CAN报文,前提是已经确定CAN的传输协议. 本文使用的CAN报文共有22条,这些报文共用一个can id,每条报文使用序 ...
- Unity打安卓包 Android 所有错误解决方案大全(几乎囊括所有打包错误 )
Unity打包出错解决方案 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享. ...
- 关于Hibernate性能优化之 FetchType=Lazy时查询数据
当表A和表B一对多的关系 对于A和B的实体类,设置FetchType=EAGER时,取A表数据,对应B表的数据都会跟着一起加载,优点不用进行二次查询.缺点是严重影响数据查询的访问时间. 解决办法Fet ...
- Kettle入门教程
最近做的项目用到了ETL工具Kettle,这个工具相当好用,可以将各种类型数据作为数据流,经过处理后再生成各种类型的数据.正如其名“水壶”,将各个地方的水倒进水壶里,再用水壶倒入不同的容器.不过一来初 ...
- 移植RTL8188CUS USB-WIFI(移植失败)
1.主makefile CONFIG_POWER_SAVING = n CONFIG_PLATFORM_I386_PC = n CONFIG_PLATFORM_HI3518E = y ##swann ...
- hadoop 配置文件简析
文件名称 格式 描述 hadoop-env.sh bash脚本 记录hadoop要用的环境变量 core- ...
- bzoj 3687 简单题——bitset
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3687 关于 bitset :https://blog.csdn.net/snowy_smil ...