docker里面swarm作用是什么?Docker-Swarm三节点部署_节点_服务_网络

历史故事本文相关内容:swarm 是什么 节点 服务 网络

本文目录

  • docker里面swarm作用是什么
  • Docker-Swarm三节点部署
  • swarm的作用
  • 【swarm】Docker swarm 的负载均衡
  • docker swarm网络模式
  • swarm 和 warmth 这两个英语,谐音怎么读
  • swarm什么意思及同义词
  • Swarm是什么
  • swarm的介绍

docker里面swarm作用是什么

与 Docker Compose 一样, Docker Machine 也是旨在帮助开发人员快速使用Docker的工具。具体地说,就是Machine允许Windows和OS X用户在诸如 Amazon AWS, Google Container Engine, Azure, DigitalOcean等公有云上远程创建Docker主机。

Docker-Swarm三节点部署

在开始之前,Dcoker Swarm 集群部署 机器需要满足以下几个条件:

swarm集群中node的availability状态可以为 active或者drain,其中:

active状态下,node可以接受来自manager节点的任务分派;

drain状态下,node节点会结束task,且不再接受来自manager节点的任务分派(也就是下线节点)

可以看到 swarm-node1 已经关闭了

我们可以看到原来 swarm-node1 上的nginx 已经关闭了,而且在其他节点上再创建了等量的 nginx 服务

当我们重新恢复 swarm-node1 节点的 docker 服务(模拟机器恢复了)

分配到 swarm-node1 节点的并没恢复

docker service部署的是单个服务,我们可以使用docker stack进行多服务编排部署

创建 docker-compose.yml

swarm的作用

从1994年开始,桑塔费研究所(SFI)开展了一个研究项目,以开发一个工具集用来帮助科学家们分析复杂适应系统,这个模拟工具集就叫做Swarm。1995年,SFI发布了Swarm的beta版。
用户可以使用Swarm提供的类库构建模拟系统,使系统中的主体和元素通过离散事件进行交互。由于Swarm没有对模型和模型要素之间的交互作任何约束,Swarm应当可以模拟任何物理系统或社会系统。事实上,在各个广泛的研究领域都有人在用Swarm编写程序,这些领域包括生物学、经济学、物理学、化学和生态学等。
Swarm项目的目的就是通过科学家和软件工程师的合作制造一个高效率的、可信的、可重用的软件实验仪器。它能给予科学家们一个标准的软件工具集,就象提供了一个设备精良的软件实验室,帮助人们集中精力于研究工作而非制造工具。
Swarm实际上是一组用Objective-C语言写成的类库,这是一种面向对象的C语言。一部分图形界面,如图表、按钮和窗口是用TCL/TK描述的。Swarm最初只能在Unix操作系统和X Windows界面下运行,1998年四月,伴随着 1.1版的发布,Swarm推出了可以在Windows 95/98/NT上运行的版本。1999年,Swarm又提供了对Java的支持,从而使Swarm越来越有利于非计算机专业的人士使用。

【swarm】Docker swarm 的负载均衡

Docker Swarm 的负载均衡分为两种:

Swarm集群内的service之间的相互访问需要做负载均衡,称为内部负载均衡(Internal LB)

从Swarm集群外部访问服务的公开端口,也需要做负载均衡,称外部部负载均衡(Exteral LB or Ingress LB)
内部负载均衡就是服务发现,集群内部通过DNS访问service时,Swarm默认通过VIP(virtual IP)、iptables、IPVS转发到某个容器。
当在docker swarm集群模式下创建一个服务时,会自动在服务所属的网络上给服务额外的分配一个虚拟IP,当解析服务名字时就会返回这个虚拟IP,对虚拟IP的请求会通过overlay网络自动的负载到这个服务所有的健康任务上。

这个方式也避免了客户端的负载均衡,因为只有单独的一个IP会返回到客户端,docker会处理虚拟IP到具体任务的路由,并把请求平均的分配给所有的健康任务。
swarm中服务还有另外一种负载均衡技术可选DNS round robin (DNS RR) (在创建服务时通过–endpoint-mode配置项指定),在DNSRR模式下,docker不再为服务创建VIP,docker DNS服务直接利用轮询的策略把服务名称直接解析成一个容器的IP地址。
Exteral LB 又可以称为Ingress LB 或者 Swarm Mode Routing Mesh。

看名字就知道,这个负载均衡方式和提到的Ingress网络有关。

Swarm网络要提供对外访问的服务就需要打开公开端口,并映射到宿主机。

Ingress LB就是外部通过公开端口访问集群时做的负载均衡。
当创建或更新一个服务时,你可以利用–publish选项把一个服务暴露到外部,在docker swarm模式下发布一个端口意味着在集群中的所有节点都会监听这个端口,这时当访问一个监听了端口但是并没有对应服务运行在其上的节点会发生什么呢? 

接下来就该我们的路由网格(routing mesh)出场了,路由网格是docker1.12引入的一个新特性,它结合了IPVS和iptables创建了一个强大的集群范围的L4层负载均衡,它使所有节点接收服务暴露端口的请求成为可能。

当任意节点接收到针对某个服务暴露的TCP/UDP端口的请求时,这个节点会利用预先定义过的Ingress overlay网络,把请求转发给服务对应的虚拟IP。

ingress网络和其他的overlay网络一样,只是它的目的是为了转换来自客户端到集群的请求,它也是利用我们前一小节介绍过的基于VIP的负载均衡技术。

启动服务后,你可以为应用程序创建外部DNS记录,并将其映射到任何或所有Docker swarm节点。你无需担心你的容器具体运行在那个节点上,因为有了路由网这个特性后,你的集群看起来就像是单独的一个节点一样。
上面这个图表明了路由网是怎么工作的:

1. 服务(app)拥有两份复制,并把端口映射到外部端口的8000

2. 路由网在集群中的所有节点上都暴露出8000

3. 外部对服务app的请求可以是任意节点,在本例子中外部的负载均衡器将请求转发到了没有app服务的主机上

4. docker swarm的IPVS利用ingress overlay网路将请求重新转发到运行着app服务的节点的容器中
Docker Swarm管理节点高可用分析

  https://success.docker.com/article/ucp-service-discovery

docker swarm网络模式

docker swarm 网络模式

swarm service的路由办法通常有两种,VIP和DSN

这是缺省情况设置,当用户创建service的时候,这个service会被分配一个VIP,然后每一个具体的container都有一个独立的IP,ingress会负责从VIP到各个container之间的路由。

举例来说:

并且看到了它的属性。

创建两个service:

nslookup查看域名解析:

从这个例子我们可以看到:

我们再进入container看看:

每一个container有两块网卡:
eth0: 10.0.1.3 这就是我们前面看到的service container IP地址,是属于网络my-network的。
eth1: 172.18.0.4,这是另一个网络地址;是谁的呢, 是网络docker_gwbridge。(另外bridge网络使用的是172.17网段)
也就是说每一个container属于两个网络,my-network和docker_gwbridge,分别用来service路由,和连接主机网络。

补充一点网卡eth1: 172.18.0.4,对应的网关地址是172.18.0.1,那个这个网关地址172.18.0.1是谁呢,它就是主机网络上的docker_gwbridge,在主机上运行ifconfig可以看到:

bridge网络的网段地址从172.17.X.X/16开始,第一个内置的docker0使用了172.17.X.X,后面每新增一个bridge网络就新增一个网地址,172.18.X.X, 172.19.X.X,。。。

至此两个bridge网络都比较清楚了。

另外如果发布service的时候指定了主机端口映射,那么container里面会有三块网卡分别属于:

做一个总结:

发布service的时候:

注意swarm VIP使用的一个限制:

也就是说无法做到同一个client过来的请求保持路由到同一个container去。

适合使用自己的DSN Load-Balance算法,例如HAProxy。

创建使用DSN轮询的service。

由参数--endpoint-mode决定。

先看一下两个container的ip 地址:

两个contaienr的ip 地址分别是:

再看DSN解析结果:

每次运行ping解析出的IP地址在两个container之间轮换,也就没有虚IP概念了,而且swarm自动实现了DSN轮询的功能。

再看一个nslookup结果:

可见nslookup直接把两个container的地址都解析出来,说明一个域名(service name)对映有两个IP地址。对照前面使用VIP的,一个service name只对映一个IP地址,就是VIP地址,而不管具体有多少个container实例。

swarm 和 warmth 这两个英语,谐音怎么读

建议不要用谐音读,我发现很多人在这里问都在问谐音,这样不是长久之计,并且会导致发音不标准,你可以下载一个有道词典在手机上,输入单词就有读音了

swarm什么意思及同义词

swarm 英
n. 蜂群,一大群;
vi. 泛滥,挤满; 云集,涌往; 成群地移动或出现; 成群飞离蜂巢,用于蜜蜂;
A dark cloud of bees comes swarming out of the hive.
黑压压的一大群蜜蜂从蜂巢中飞出来。
第三人称单数:swarms 复数:swarms 现在分词:swarming过去式:swarmed 过去分词:swarmed

Swarm是什么

Swarm 去中心化的内容存储和分发服务,可以将它视为 CDN,通过互联网在计算机上分发。你可以像运行以太坊节点一样,运行 Swarm 节点并连接到 Swarm 网络上。Swarm 是以太坊项目官方的一部分,主要是由基金会开发,允许矿池存储、带宽和算力资源来支持基于以太坊网络的应用。此外,Swarm 主网预计在2021 年上半年上线,空投将在主网上线前结束。在主网正式上线之前,用户需要从 qBzz 节点兑现支票来接收代币。目前行业领先bzz技术商挖亩神算bzz节点出票率极高。每个节点保证1-3张票。

swarm的介绍

Swarm软件用来给复杂性个体行为建模, 用于对经济行为的复杂性研究仿真。 他在美国新墨西哥州的 Santa fe 研究所得到开发的。Santa fe 研究所和一些个人及政府为Swarm的发展提供了资助,它的发行得到了GNU库的公认证和许可。文档和例程,以及软件和开发工具的 Alla 部件,作为可执行部件和源代码,可从网上免费自由得到。

特别声明

本文仅代表作者观点,不代表本站立场,本站仅提供信息存储服务。

分享:

扫一扫在手机阅读、分享本文