Docker1.12.1之swarm集群搭建与使用

在docker1.12版本之前,众所周知dokcer本身只能单机上运行,而集群则要依赖mesos、kubernetes、swarm等集群管理方案。其中swarm是docker公司自己的容器集群管理工具,在当时的热度还是低于前两者。docker1.12.0版本发布中,Docker公司出于战略眼光,将swarm集成到docker-engine中,使docker内置了集群解决方案。于是swarm这个“亲儿子”的江湖地位迅速提升,在docker集群方案中与mesos,k8s形成三足鼎立之势,在未来则大有赶超之势。

2:规划

   IP           主机名          角色  

10.10.32.245    swarm1      swarm manager

10.10.32.246    swarm2      worker node

10.10.32.247    swarm3      worker node

10.10.32.248    swarm4      worker node

3:集群通信原理

通过/usr/lib/system.d/system/docker.service配置开启2375管理端口

ExecStart=/usr/bin/dockerd -s overlay --insecure-registry registry.cntv.net  -H tcp://0.0.0.0:2375 -H unix:///va

每个node节点上,都开启2375远程管理端口,swarm集群管理通过2375管理端口来执行

4:swarm调度原理

swarm中实现调度功能的主要是scheduler模块,其中包括Filter和strategy。

Filter:根据下发的任务的资源需求,用来过滤节点,从集群所有节点中找出满足条件的节点(比如资源足够,节点正常等等)

Strategy:用来在过滤出的节点中根据策略选择一个最优的节点(比如对找出的节点进行对比,找到资源最多的节点等等)

 

5:swarm集群创建

(1)初始化manager节点

10.10.32.245

$docker swarm init --advertise-addr 10.10.32.245

Swarm initialized: current node (b73yii7s7rn321ejz8n3ch7ay) is now a manager.

To add a worker to this swarm, run the following command:

        docker swarm join \

        --token SWMTKN-1-2z3obrzww2zcnwaiq5dzocpmvz9kty25usroy3gh3xux0l32uo-8dxurdbms8yli2crdxbmyk7y2 \

        10.10.32.245:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

(2)manage查看节点swarm状态

10.10.32.245 

$docker info

  Swarm: active

  NodeID: ax13h89zlb5dqw980ddo1ox4f

  Is Manager: true

  ClusterID: d5nam0mink4wdk506o1ybbs9e

  Managers: 1

  Nodes: 1 

(3)manage查看swarm 节点

10.10.32.245 

$ docker node ls

  ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS   

  ax13h89zlb5dqw980ddo1ox4f *  swarm1    Ready   Active        Leader 

(4)node节点加入swarm集群 

10.10.32.246 10.10.32.247 10.10.32.248 

$ docker swarm join-token manager   #manage上查询加入命令及token

To add a manager to this swarm, run the following command:

    docker swarm join \

    --token SWMTKN-1-2z3obrzww2zcnwaiq5dzocpmvz9kty25usroy3gh3xux0l32uo-8dxurdbms8yli2crdxbmyk7y2 \

    10.10.32.245:2377

$ docker swarm join \

    --token SWMTKN-1-2z3obrzww2zcnwaiq5dzocpmvz9kty25usroy3gh3xux0l32uo-8dxurdbms8yli2crdxbmyk7y2 \ 

     10.10.32.245:2377

This node joined a swarm as a worker 

(5)manage查看swarm节点

$ docker node ls

  ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS

  03b5w49n7uz663xwjuof3dsk0    swarm4    Ready   Active       

  0g039jomhpad819a39yvkow6y    swarm2    Ready   Active       

  4kos85v5z6jh6lahwv8yjpku8    swarm3    Ready   Active       

  ax13h89zlb5dqw980ddo1ox4f *  swarm1    Ready   Active        Leader 

(6)使节点离开集群

$ docker swarm leave

Node left the swarm.

6:在swarm集群上创建服务

(1)创建服务

$docker service create --network net3 --replicas 4 -p 8099:80 --name time-php registry.cntv.net/heqin/tvtime-php:v0.85dongsi

bdkwsgchcydz5ixatrbiyr1fx


(2)查看服务

$ docker service ls        #查看服务

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/87f7d84c11a3f96dcc61c9ca777fcdca.html