美文网首页程序员在成长Docker容器
使用Docker Swarm快速搭建与部署你的服务集群

使用Docker Swarm快速搭建与部署你的服务集群

作者: 冬天只爱早晨 | 来源:发表于2019-01-21 16:09 被阅读11次
    docker-swarm

    初始化集群

    准备了对应的机器(两个虚拟机),基本信息如下

    IP 主机名 备注
    192.168.1.8 ubuntu-1
    192.168.1.5 ubuntu-1

    注意:最好保持每个节点的docker版本号为最新且是相同的

    在主节点(manager)上执行

    root@ubuntu:/home/wangxc# docker swarm init --advertise-addr  192.168.1.8
    

    结果

    Swarm initialized: current node (oqela4wtpa9m7e8a6zi9k9rbl) is now a manager.
    
    To add a worker to this swarm, run the following command:
    
        docker swarm join --token SWMTKN-1-03md8tqw24sd0tbxkyqxmiay5nixniax9c301f49qjorhsj069-44eeph3lldj3lopzk7tiiv1ve 192.168.1.8:2377
    
    To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
    

    然后在其他子节点执行

    docker swarm join --token SWMTKN-1-03md8tqw24sd0tbxkyqxmiay5nixniax9c301f49qjorhsj069-44eeph3lldj3lopzk7tiiv1ve 192.168.1.8:2377
    

    注意端口号是否开放,可以把防火墙全部关掉,正常的结果如下

    This node joined a swarm as a worker.
    

    说明两个节点已经建立关系,而且manager为192.168.1.8,我们在主节点输入命令

    docker node ls
    

    就能看到所有的节点信息

    ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
    x2n8p4qly9xkhpul49b96bx60 *   ubuntu-1            Ready               Active              Leader              18.06.1-ce
    b0p8o0vee21pf9nijcvoy0g72     ubuntu-2            Ready               Active                                  18.06.1-ce
    

    带星号的额就是主节点了,很方便看。

    部署

    我事先准备了一个镜像,一个简单的python flask 服务,在指定镜像的时候,最好把repo的地址写上,因为每个节点不一定有该镜像,需要到指定的repo去pull,如果不指定repo的话,有时可能会失败

    docker service create --replicas 5 --name hellos vector4wang/python-flask
    

    很好理解docker service create 等价于 docker run,replicas就是部署几个服务,等待部署成功,如下

    uo3u4w6zxglgxjo1i7njxaqru
    overall progress: 5 out of 5 tasks 
    1/5: running   [==================================================>] 
    2/5: running   [==================================================>] 
    3/5: running   [==================================================>] 
    4/5: running   [==================================================>] 
    5/5: running   [==================================================>] 
    verify: Service converged 
    

    忘记做端口映射,我们做一下调整

    docker service update --publish-add published=5000,target=5000 hellos
    

    理解下。

    通过执行docker service ps hellos 来查看每个节点的服务数和运行情况,如下

    WX20190120-232126@2x.png
    我们可以看到刚刚的update就是把之前服务杀掉,然后重亲启动,两个节点均有部署而且运行着该服务,我们可以随便使用docker stop [container id]来杀死一个服务,但是swarm会自动启动一个。

    测试

    我们通过查看日志来测试请求是否会落在这五个节点上,我们请求主节点对应ip服务5次

    docker service logs -f hellos
    

    结果很巧,正好落在五个节点上如下

    hellos.3.jvtq4su8blia@ubuntu-1    | 10.255.0.2 - - [20/Jan/2019 15:27:15] "GET / HTTP/1.1" 200 -
    hellos.5.atflo3ownjb7@ubuntu-2    | 10.255.0.2 - - [20/Jan/2019 15:27:16] "GET / HTTP/1.1" 200 -
    hellos.4.vyn5bpypjvm7@ubuntu-2    | 10.255.0.2 - - [20/Jan/2019 15:27:18] "GET / HTTP/1.1" 200 -
    hellos.1.m67symamsj02@ubuntu-2    | 10.255.0.2 - - [20/Jan/2019 15:27:19] "GET / HTTP/1.1" 200 -
    hellos.2.srhlzn6trgri@ubuntu-1    | 10.255.0.2 - - [20/Jan/2019 15:27:19] "GET / HTTP/1.1" 200 -
    

    停止服务

    我们在主机点使用下面命令和停止对应服务

    docker service rm hellos
    或
    docker service scale hellos=0
    

    通过swarm我们可以再多个节点很容易的去部署和简单管理服务。

    暂时的完结

    最近也是公司准备用容器化来部署服务,所以我就把Docker以前没有玩到的地方玩了下,到此,Docker的介绍、使用、编排、集群化部署等就介绍完了,如果后期应用于工作上,可能会有更深入的见解与博文。希望大家持续关注哈~

    学习Docker之Docker初体验---SpringBoot集成Docker的部署、发布与应用
    学习Docker之Docker、容器和镜像的简介和常用命令
    学习Docker之10张图带你深入理解Docker容器和镜像
    学习Docker之Dockerfile的命令
    学习Docker之使用docker-compose编配一整套服务
    学习Docker之使用Docker构建服务之部署和备份jekyll网站
    学习Docker之使用Docker Swarm快速搭建与部署你的服务集群

    其他
    使用Docker“一键”启动jd(职位信息)的搜索(es)与统计(Kibana)

    相关文章

      网友评论

        本文标题:使用Docker Swarm快速搭建与部署你的服务集群

        本文链接:https://www.haomeiwen.com/subject/ylicjqtx.html