分享好友 最新动态首页 最新动态分类 切换频道
docker——三剑客之Docker swarm
2024-12-26 22:28

Docker Swarm是Docker公司推出的官方容器集群平台,基于Go语言实现。
目前,包括Rackspace在内的许多平台都采用了Swarm,用户很容易在AWS等公有云平台使用Swarm。

Swarm的前身是Beam项目和libswarm项目,首个正式版本(Swarm V1)在2014年12初发布。
为了提高可扩展性,2016年2月对架构进行重新设计,推出V2版本,支持超过1000个节点。
最新的Docker Engine已经集成了Swarm Kit,加强了对Swarm的协调支持。

作为容器集群管理器,Swarm最大的优势就是100%支持标准的Docker API
各种基于标准API工具,如Compose、docker.py,各种管理软件,甚至Docker本身都可以很容易地与Swarm集成。
这大大方便了用户将原先基于单节点地系统移植到Swarm上。
同时Swarm内置了对Docker网络插件地支持,用户可以很容易地部署跨主机地容器集群服务。

Swarm是典型地master-slave结构,通过发现服务来选举manager。manager是中心管理节点,各个node上运行agent接受manager地统一管理。

docker——三剑客之Docker swarm

在v2中,集群会自动通过Raft协议分布式选举manager节点,无需额外地发现服务地支持,避免了单节点瓶颈。
同时v2内置了基于DNS地负载均衡和外部负载均衡机制地集群支持。

对于Docker1.12已经更新的版本,swarm相关命令已经原生嵌入到了Docker Engine中,因此我们可以直接使用。
首先查看docker swarm的帮助信息:

在构建集群之前首先应该保证的是每台机器(不论是虚拟机还是物理机)上面都已经安装Docker Engine并且已经启动,当然你可以使用docker machine来快速构建。

为了更加清晰的使用docker swarm init进行初始化,我们首先依旧是查看帮助信息。

需要说明的是节点可用性的三种状态:
  • Active:集群中该Node可以被指派TASK;
  • Pause:集群中该Node不可以被指派新的Task,但是其它已经存在的TASK保持运行;
  • Drain:集群中该Node不可以被指派新的Task,Swarm Scheduler停掉已经存在的Task;

下面具体代码:

上面–advertise-addr选项指定Manager Node会publish它的地址为192.168.1.107,后续Worker Node加入到该Swarm集群,必须要能够访问到Manager的该IP地址。
该结果中给出了后续操作引导信息,告诉我们如何将Worker Node加入Swarm集群中.

 

查看帮助信息:

加入test节点:

加入test2节点:

对于token后面的一长串字符是集群初始化的时候生成的令牌,每个想要加入这个集群的机器都需要拿着这个令牌才能加入到该集群.

可以通过docker node查看当前集群的所有节点:

名词解释:
  • ID:swarm会为集群中的每台机器分配一个唯一ID;
  • HOSTNAME:主机名
  • STATUS:当前状态
  • AVAILABILITY:节点的可用性
  • MANAGER STATUS:是否是管理节点
  • ENGINE:Docker的版本

 

通过查看帮助信息可以知道节点的相关操作:

Swarm支持设置一组Manager Node,通过支持多Manager Node实现HA。
那么这些Manager Node之间的状态的一致性就非常重要了,多Manager Node的Warm集群架构,如下图所示(出自Docker官网):

通过上图可以看出,Swarm使用了Raft协议来保证多个Manager之间状态的一致性.
基于Faft协议,Mananger Node具有一定的容错功能,假设Swarm集群中有N个Manager Node,那么整个集群可以容忍最多(N-1)/2个节点失效,如果是一个三个Manager Node的Swarm集群,最多只能容忍一个Manager Node挂掉.

下面是对一些常规操作的解释:

查看帮助信息:

 

(1)修改节点的可用性

将test可用性修改为pasue,返回主机名:

再次查看状态信息:

常见的变更操作:
  • 设置Manager Node只具有管理功能
  • 对服务进行停机维护,可以修改AVAILABILITY为Drain状态
  • 暂停一个Node,然后该Node就不再接收新的Task
  • 回复一个不可用或暂停的Node

(2)标签操作

每个Node的主机配置情况可能不同,比如有的适合运行CPU密集型应用,有的适合运行IO密集型应用,
Swarm支持给每个Node添加标签元数据,这样可以根据Node的标签,来选择性地调度某个服务部署到期望的一组Node上。

添加或者更新标签:

可以通过docker node inspect 命令来查看标签信息

删除节点标签:

(3)角色操作

  

Usage: docker node demote/promote NODE [NODE...]
目前集群的状态信息:

将test升级为manager节点:

查看帮助信息:

示例:

 

查看帮助信息:

 

 

在Swarm集群上部署服务,必须在Manager Node上进行操作。
先说明一下Service、Task、Container(容器)这个三个概念的关系,如下图(出自Docker官网)非常清晰地描述了这个三个概念的含义:

在Swarm mode下使用Docker,可以实现部署运行服务、服务扩容缩容、删除服务、滚动升级等功能。
Docker服务的功能比较丰富,通过查看帮助信息可以很清楚的到它有那些操作。

下面是部分命令的讲解:

可以通过docker service ls来查看已经创建的服务。

 

Docker Swarm支持服务的扩容缩容,Swarm通过 --mode
选项设置服务类型,提供了两种模式:
  一种是replicated,我们可以指定服务Task的个数(也就是需要创建几个冗余副本),这也是Swarm默认使用的服务类型;
  另一种是global,这样会在Swarm集群的每个Node上都创建一个服务。

格式:
  docker service scale 服务ID=服务Task总数

通过docker service ps可以查看各个副本的状况。

最新文章
淘宝游戏店铺开店流程,怎么开店?
随着移动互联网以及智能移动终端设备在我国的快速发展,我国游戏市场用户规模持续增长,其中移动游戏的快速发展远超端游和页游,我国游戏市场逐步确立了以发展移动游戏为主的发展态势。很多商家想要开一个游戏类的专营店铺却不知道怎么申请
怎样让百度快速收录的新方法
百度从在07年10月份至今收录新站以及索引站点都不是那么速度,就具体情况中国SEO联盟Dragon提出-----如何让百度快速收录新方法!  1.在百度提交网址 但现在百度自动收录的速度已经让众人所知,所以提出以下的方法。供我亲爱的朋友们、战友
显示器能效测试怎么做?
显示器是一种可以将电子文件显示到屏幕上的输入输出设备,在我们日常生活中比较常见。显示器厂家在产品出厂前一般会办理显示器能效测试,本文将为您介绍显示器能效测试办理流程。显示器能效测试标准为GB24850。GB 24850标准适用于在电网电
超平民的华为系百瓦级超级快充方案,只要56元即可搞定——淘宝购入的拆机华为智选100W充电器使用评测
之前看到酷安上有一篇图文推荐这个拆机头,看起来还不错,价格也美丽(甚至相比原文的标价还降价了),遂购入。虽然我自己用的红米,但家人用的华为系,买一个做备用头也可以。本文所评测产品为本人自费购买,无利益相关。评测设备为业余设
把别人照片发到朋友圈违法吗
第一步,工伤认定程序  1.发生工伤后单位应当自事故伤害发生之日或者被诊断、鉴定为职业病之日起30日内,向统筹地区社会保险行政部门提出工伤认定申请。;单位未按规定提出工伤认定的,职工必须在1年内提出工伤认定的申请。  2.劳动者提
谷歌SEO中,什么是link wheeling策略?
在数字化时代,搜索引擎优化(SEO)已成为企业网络营销战略中的核心环节。通过提高网站在搜索引擎结果页面(SERP)上的排名,企业能够吸引更多的目标流量,进而转化为潜在客户和实际销售。而我,作为一名在SEO领域摸爬滚打多年的实践者,深
淘宝无痕代码标题技术有哪些好处
淘宝无痕代码标题技术有哪些好处淘宝各种图片,标题,转链接,客服,综合技术过排除查防排查如有不懂请咨询下面请忽略淘宝无痕代码标题技术是当前电商行业备受瞩目的一项创新技术。它的出现不仅为淘宝店铺带来了全新的营销方式,更为卖家们
红米K80 Pro推送澎湃OS 2正式版内测 优化触控体验
  值得一提的是,小米澎湃OS 2上的Xiaomi HyperConnect技术现已全面支持苹果设备。只需在你的iPhone或iPad上安装“小米互联服务”应用程序,就可以轻松实现文件和图片在不同品牌设备之间的互传。版权所有,未经许可不得转载
常德微信商城小程序制作报价制作【常德微信商城小程序制作报价开发】
▶当下热门【社区团购】平台系统▶支持单商户、多商户商城系统▶分销、拼团、会员、秒杀等热门营销功能▶覆盖50+行业,超600+套免费商城模板 立即制作▶覆盖电脑网站、手机网站、、微信商城等多个展示终端▶性价比超高的电商系统开发方案,
成品人网站 W灬源码 1688——一款实用的网站源码,功能强大,操作便捷
在当今数字化时代,拥有一个功能强大且操作便捷的网站对于个人和企业来说至关重要。而 W灬源码 1688 就是这样一款备受赞誉的网站源码,它为用户提供了丰富的功能和卓越的性能,助力用户打造出令人印象深刻的网站。功能强大源码提供了多种精
相关文章
推荐文章
发表评论
0评