文档章节

docker swarm auto scale

jimmywa
 jimmywa
发布于 11/06 12:03
字数 779
阅读 51
收藏 2

1. 主旨介绍

使用mac和fusion vm两台主机搭建一个小的docker集群, 采用docker swarm方式搭建. Swarm基本概念:

  • manager:用来管理swarm服务
  • node: docker enginer节点, 通过manager可以在node上操作, manager本身也是node
  • worker: 非管理的node, 一般是实际部署和运行container的docker节点

目的是是探索使用swarm完成动态伸缩的可行性.

2. 操作步骤

  • swarm init(vm中操作,因为docker for mac有网络问题 manager)

    docker swarm init --advertise-addr 192.168.132.148
    Swarm initialized: current node (b1uem2hg4y2ojnauvre3x2rdw) is now a manager.
    
    To add a worker to this swarm, run the following command:
    
        docker swarm join --token SWMTKN-1-1snrbxsenp4v1npcusox9l3n9jzsa4n8jbkvlhjc19e3z89c8a-7vfrbr1o1e1sr2g2r6f97xhne 192.168.132.148:2377
    
    To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
    

    初始化swarm之后可以使用docker node ls查看信息:

    docker node ls
    ID                            HOSTNAME                STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
    b1uem2hg4y2ojnauvre3x2rdw *   linuxkit-025000000001   Ready               Active              Leader              18.06.1-ce            18.06.1-ce
    
  • join node(worker)

    docker swarm join --token SWMTKN-1-3h1rzm2cdu6ms935f6kysy4rhzs54mqofnhr1thlwu0fiewqfq-9q6fwc7eqk70zwb1kwi2vdklj 192.168.132.148:2377
    This node joined a swarm as a worker.
    
  • deploy service 部署一个alpine容器, 运行ping命令视为内部服务

    docker service create --replicas 1 --name helloword alpine ping docker.com
    vyw5nezmiv37j3fk5kgu4231x
    overall progress: 1 out of 1 tasks 
    1/1: running   [==================================================>]
    

    查看结果如下, 可以发现一个alpine被部署到worker节点(vm是manager机器名是unbuntu所以下面的linuxkit-xxxx是worker, 即mac server)

    docker service ps helloword
    ID                  NAME                IMAGE               NODE                    DESIRED STATE       CURRENT STATE           ERROR               PORTS
    ht9npghzzux9        helloword.1         alpine:latest       linuxkit-025000000001   Running             Running 4 minutes ago 
    
  • scale service 横向扩展服务为2个实例

    docker service scale helloword=2
    helloword scaled to 2
    overall progress: 1 out of 2 tasks 
    1/2: running   [==================================================>] 
    overall progress: 2 out of 2 tasks 
    1/2: running   [==================================================>] 
    2/2: running   [==================================================>] 
    verify: Service converged 
    

    查看扩展的结果如下, 可以发现两个实例被部署到worker和manager, 因为worker不够用, 所以使用了manager, 也可以设置manager只是管理, 不运行task

    docker service ps helloword
    ID                  NAME                IMAGE               NODE                    DESIRED STATE       CURRENT STATE            ERROR               PORTS
    ht9npghzzux9        helloword.1         alpine:latest       linuxkit-025000000001   Running             Running 5 minutes ago                        
    v0i6ghtx8eed        helloword.2         alpine:latest       ubuntu                  Running             Running 26 seconds ago
    

3. 总结

使用swarm集群可以优雅的进行docker部署和扩展, 结合docker-compose操作会更加方便, 如果增加了产线的流量监控+服务发现, 就可以实现产线环境的动态伸缩部署, 很棒!!

4. 问题和解答

  • unavailable desc = all SubConns are in TransitentFailure

    这个问题以为manager是mac, docker for mac 因为网络的问题不能支持work去链接到mac docker swarm manager

  • Error response from daemon: manager stopped: failed to listen on remote API address: listen tcp 10.0.1.34:2377: bind: cannot assign requested address

    这是因为指定了 --listen-addr和--advertise-addr ip一样但是端口默认也是一直的, 去除listen-addr或者指定不同的端口即可

  • 结束swarm

    在manager服务器运行: docker swarm leave --force, 这样manager就变成inactive了, 可以重新操作执行init或者其他

5. 参考资料

© 著作权归作者所有

共有 人打赏支持
jimmywa

jimmywa

粉丝 2
博文 12
码字总数 8273
作品 0
朝阳
高级程序员
私信 提问
跟我一起学docker(14)--docker swarm的使用

1.什么是Docker Swarm? 容器集群管理工具。 通过docker swarm可以将多台机器连接在一起,通过swarm的调度可以服务的多台机器的部署,服务的伸缩。 docker-swarm的场景因为需要多台docker虚拟...

IT人故事会
05/12
0
0
Docker Swarm集群初探

前言 相信Docker技术大家都有所了解,单个Docker能发挥的作用毕竟有限,也不便于管理,所以Docker得组集群来使用才能发挥强大的技术优势。既然要组集群那就涉及诸如Docker的资源调度、管理等...

CodeSheep
01/06
0
1
Docker Swarm 集群(十七)

一、Docker Swarm 概念 1、集群 从主机的层面来看,Docker Swarm 管理的是 Docker Host 集群。所以先来讨论一个重要的概念 - 集群化(Clustering)。 服务器集群由一组网络上相互连接的服务器...

wzlinux
05/07
0
0
容器技术|Docker三剑客之docker-swarm

docker-swarm简介 Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源。Swarm和Kuberne...

Java填坑之路
09/30
0
0
How to Install and Configure Docker Swarm Mode on CentOS 7

By Hitesh Jethva, Alibaba Cloud Tech Share Author Docker Swarm is a native clustering tool for Docker containers that can be used to manage a cluster of Docker nodes as a single......

Cloud Focus
04/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Web安全之XSS攻击与防御小结

Web安全之XSS攻防 1. XSS的定义 跨站脚本攻击(Cross Site Scripting),缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从...

前端小攻略
19分钟前
1
0
JavaScript中的继承及实现代码

JS虽然不像是JAVA那种强类型的语言,但也有着与JAVA类型的继承属性,那么JS中的继承是如何实现的呢? 一、构造函数继承 在构造函数中,同样属于两个新创建的函数,也是不相等的 function Fn...

peakedness丶
22分钟前
1
0
记一次面试最常见的10个Redis"刁难"问题

导读:在程序员面试过程中Redis相关的知识是常被问到的话题。作为一名在互联网技术行业打击过成百上千名的资深技术面试官,本文作者总结了面试过程中经常问到的问题。十分值得一读。 Redis在...

小刀爱编程
35分钟前
13
0
TiDB Lab 诞生记 | TiDB Hackathon 优秀项目分享

本文由红凤凰粉凤凰粉红凤凰队的成员主笔,他们的项目 TiDB Lab 在本届 TiDB Hackathon 2018 中获得了二等奖。TiDB Lab 为 TiDB 培训体系增加了一个可以动态观测 TiDB / TiKV / PD 细节的动画...

TiDB
48分钟前
4
0
当区块链遇到零知识证明

本文由云+社区发表 当区块链遇到零知识证明 什么是零知识证明 零知识证明的官方定义是能够在不向验证者任何有用的信息的情况下,使验证者相信某个论断是正确的。这个定义有点抽象,下面笔者举...

腾讯云加社区
57分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部