400 028 6601

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

『高级篇』docker之DockerSwarm的了解(27)-创新互联

原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!
原文链接地址:『高级篇』docker之DockerSwarm的了解(27)

公司主营业务:成都网站设计、成都做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出盖州免费做网站回馈大家。

这次一起了解下docker Swarm,什么是dockerSwarm。

『高级篇』docker之DockerSwarm的了解(27)

什么是docker Swarm

docker swarm的架构图

下面这个图,就可以看到docker swarm管理docker的一个架构图。以前使用docker命令行是针对docker主机的,然后到这台机器上单独的控制这台机器上的主机,有了swarm之后,客户端命令是针对docker集群的。它的命令几乎等同于docker的原生命令,它把命令发送给swarm,swarm选择发送一个节点去真正的执行,swarm是通过docker自带的远程的API,来实现对docker的控制。

『高级篇』docker之DockerSwarm的了解(27)

下面这个图,这张图跟上面一张图描述的是一个事情,只不过它暴露了更多的的细节,上面的大框和下面的小框都代表了一台服务器,物理机或者虚拟机,我们从上面说,上面是swarm的一个manager节点,管理这个worker节点,可以看到管理了多少个cpu,多少个内存,每个上面运行的服务,每个服务的状况,比如他们的标签,他们的健康状态,Manager管理者每个节点的生命周期,比如加入一个节点,下线一个节点,manager还管理者每个服务的生命周期,服务的部署,更新,停止,删除,Node节点比较单纯他就运行了docker daemon,因为在1.12之后swarm已经融入了docker本身,开发一个远程的api给manager节点调度,运行具体的服务和容器,下面咱们一起看看服务的部署流程是怎样的,在这样的架构上是如何体现的。

『高级篇』docker之DockerSwarm的了解(27)

环境的搭建

想想之前学习的mesos,需要先安装docker,Marathon,zookeeper,加入我们现在有5台liunx服务器,每个上面都装有docker,选择一台作为manager,上面执行下图的第一条命令, 执行完之后会打印出来一个token作为dockerSwarm的凭证,然后在每个worker节点下执行第二条命令,表示要加入集群,只需要token和对应manager节点的ip和端口号,集群环境就搭建完毕了

『高级篇』docker之DockerSwarm的了解(27)

如何部署

客户端的发起docker命令,两种方式

  1. 直接ssh到manager节点,执行docker命令。
  2. 通过远程访问的方式,通过Remote API调用manager上的docker命令,我们这张图画的就是第二种方式。

『高级篇』docker之DockerSwarm的了解(27)

docker Client 在manager节点的外边,假如执行了docker service create,先会经过docker Deamon接受这条命令,传给Scheduler模块,Scheduler模块主要实现调度的功能,负责选择出来最优的节点,里面包含了2个子模块,Fiter 和Strategy,Fiter很明显是过滤节点,用来找出满足条件的节点(资源足够多,节点正常的),Strategy是过滤出来后选择出最优的节点(对比选择资源剩余最多的节点,或者找到资源剩余最少的节点),当然Fiter 和Strategy都是用户可以单独定制的,中间的Cluster是抽象的worker节点集群,包含了Swarm节点里面每个节点的信息,右边的Discovery是信息维护的模块,比如Label Health。Cluster最终调用容器的api,完成容器启动的刘而成。

调度模块

用户在创建服务的时候,选择最优的节点,选择最优节点的管理分为2个阶段。
过滤和策略

filter
Strategy

服务发现

稍微有点复杂,根据场景来说吧

『高级篇』docker之DockerSwarm的了解(27)

PS:假定运行了一个nginx服务2个实例,nginx1 和nginx2,容器内的端口是80,主机内的端口是8080, 这2个容器分别运行在node2和node3上,看到了吧node1虽然没有运行实例但是依然有8080端口在监听,一个集群在所有的worker节点上都是可以访问到的,随便选一个节点输入它的ip和8080端口就可以访问到,或者搭建一个负载均衡External LB,负责轮询的方式访问每个上边的8080端口,为什么在每个节点上都可以访问我们的服务呢?每个服务启动后所有的节点都会更新自己的VIP LB,把新的服务端口号和服务的信息建立一个关系,VIP LB是基于虚拟IP的负载均衡,VIP LB可以通过虚拟IP解析到真实IP,然后访问到服务。

『高级篇』docker之DockerSwarm的了解(27)

PS:也就是在Ingress之上多了一个link的场景,可以通过link的方式访问,也不需要主机的网络,link怎么实现的呢,如果让一个容器link到另一个容器很容易毕竟他们在一台主机上,一个服务link到另一个服务其实没有那么简单了,可能包含一个容器,也可能包含很多个容器,可能运行在一台机器上,也可能分布在多台机器上,我们如何实现可以通过名字来访问彼此呢,这用到了容器的dns,这里的nginx服务依赖于tomcat服务,nginx有2个实例,tomcat有一个实例,所有的nginx的容器都会对tomcat的解析,把它解析到tomcat的VIP,VIP负责做负载均衡,原理就是这样的原理,link的方式外部是访问不到的。link只适合swarm集群内部的场景。

#创建自定义网络
docker network create --driver=overlay --attachable mynet
#创建服务
docker  service create -p 80:80 --network=mynet --name nginx nginx

『高级篇』docker之DockerSwarm的了解(27)

Ingress 支持外部访问,Ingress+ link和自定义网络只能容器间进行访问。

服务编排

  1. 服务部署&服务发现(上边说到了)
  2. 服务更新 -- docker service update
  3. 服务扩缩容 -- docker service scale

Swarm

PS:docker Swarm基本都了解的差不多了。下次开始docker swarm的环境搭建。

『高级篇』docker之DockerSwarm的了解(27)

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站题目:『高级篇』docker之DockerSwarm的了解(27)-创新互联
分享地址:http://mbwzsj.com/article/diggod.html

其他资讯

让你的专属顾问为你服务