分享好友 最新动态首页 最新动态分类 切换频道
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可以查看各个副本的状况。

最新文章
这家“上海小店”开业4年,年销超40亿元
“在线下零售生态中,有便利店、大型商超等,这些像是大自然里的狮子、大象,和它们相比,好特卖就是秃鹫。”好特卖联合创始人张宁,多次在公开场合用这个比喻来定位好特卖,是零售行业的分解者。在业内,大家都乐于称呼张宁为“二哥”,他
服务器一年的费用对于学生来说是多少?
服务器租用费用因供应商、配置、地理位置和合同期限等因素而异,对于学生来说,通常有几种选择,包括共享服务器、VPS(虚拟私人服务器)、云服务器以及专用服务器,以下是一些常见的服务器租用选项及其大致年费范围: 基本型$30 $100高级型
【企业动态】又一PCB相关企业被收购51%股权
通过此次战略并购,CTI华测检测将在全球电子材料及印制电路板检测行业迎来全新机遇和开端,双方将通过深度融合,优化运营管理模式,致力于为全球客户提供更优质的检测服务。
热搜:2024成都儿科医院排名/那个好
热搜:2024成都儿科医院排名/那个好 - 成都儿科医院专业可靠在2024年的成都,儿科医院的选择对于家长们来说至关重要。经过综合评估和患者口碑的反馈,我们为您揭晓比较新的成都儿科医院排名:1、成都儿科医院,2、成都儿科医院,3、成都儿
长春市增值电信业务经营许可证办理全知道
  《长春市增值电信业务经营许可证办理全知道》  一、长春市增值电信业务经营许可证办理条件  1.企业形式与资质:  -申请主体必须是依法设立的公司,具备独立法人资格。公司要有完善的组织架构,如股东会、董事会等治理机构(规模
网站地图是什么?详解网站地图sitemap的生成、搜索引擎提交及作用
网站地图又叫站点地图(英文:Sitemap),是一个网站所有链接的容器,是根据网站的结构、框架、内容,生成的导航网页文件。很多网站的连接层次比较深,爬虫很难抓取到,网站地图可以方便爬虫抓取网站页面,通过抓取网站页面,清晰了解网站
谷歌搜索SEO优化技巧(谷歌搜索排名优化)
想要让你的网站在谷歌搜索中排名更靠前吗?那就得学会一些SEO优化的技巧。要确保你的网站内容原创、有质量,关键词使用自然,不要过度堆砌。内部链接要做好,让搜索引擎能够更好地理解你网站的结构。外部链接也很重要,可以通过和相关领域
谷歌SEO销售技巧,Let's Talk环节该聊啥?
在数字化营销日益激烈的今天,掌握谷歌SEO销售技巧已成为企业提升在线可见度、吸引潜在客户的关键。作为一名深耕SEO领域的实战者,我深知每一次与客户的“Let's Talk”环节都至关重要。它不仅关乎能否精准把握客户需求,更在于如何巧妙展示
相关文章
推荐文章
发表评论
0评