Docker Swarm 入门示例7: 滚动更新服务

  1. 打开manager1服务器 shell

  2. 部署redis 3.0.6 到swarm,并设置更新延迟为 10s

    $ docker service create \
        --replicas 3 \
        --name redis \
        --update-delay 10s \
        redis:3.0.6-alpine
    fnrfiohgr39tjae2jia5t4ox3
    
    

    --update-delay: 更新服务任务(Task)执行间隔, 单位 s,m,h --update-parallelism: 并行更新服务任务数量, 默认1 RUNNING: 更新服务任务返回RUNNING表示任务成功 FAILED: 更新服务任务返回FAILED表示任务成功 --update-failure-action: 如果更新服务任务失败后的操作,默认pause即暂停更新,结束该任务

  3. 查看 redis 服务信息

    $ docker service inspect --pretty redis
    
    ID:             fnrfiohgr39tjae2jia5t4ox3
    Name:           redis
    Service Mode:   Replicated
     Replicas:      3
    Placement:
    UpdateConfig:
     Parallelism:   1
     Delay:         10s
     On failure:    pause
     Monitoring Period: 5s
     Max failure ratio: 0
     Update order:      stop-first
    RollbackConfig:
     Parallelism:   1
     On failure:    pause
     Monitoring Period: 5s
     Max failure ratio: 0
     Rollback order:    stop-first
    ContainerSpec:
     Image:         redis:3.0.6-alpine@sha256:404a3444162e8c6f7c375a27746d7b75554e1a89436bd0dc7503af25ae50cdcb
    Resources:
    Endpoint Mode:  vip
    
    
  4. 更新redis 版本 更新计划

    • 停止第一个任务(容器)
    • 添加更新调度到此任务
    • 启动更新后的容器
    • 如果任务执行结果为RUNNING, 等待 delay 设置的时间后开始下一个任务
    • 如果有任意一个任务失败,停止此次更新
    $ docker service update --image redis:3.0.7 redis
    redis
    
    
  5. 查看更新后的服务信息

    $ docker service inspect --pretty redis
    
    ID:             fnrfiohgr39tjae2jia5t4ox3
    Name:           redis
    Service Mode:   Replicated
     Replicas:      3
    UpdateStatus:
     State:         updating
     Started:       18 seconds ago
     Message:       update in progress
    Placement:
    UpdateConfig:
     Parallelism:   1
     Delay:         10s
     On failure:    pause
     Monitoring Period: 5s
     Max failure ratio: 0
     Update order:      stop-first
    RollbackConfig:
     Parallelism:   1
     On failure:    pause
     Monitoring Period: 5s
     Max failure ratio: 0
     Rollback order:    stop-first
    ContainerSpec:
     Image:         redis:3.0.7@sha256:730b765df9fe96af414da64a2b67f3a5f70b8fd13a31e5096fee4807ed802e20
    Resources:
    Endpoint Mode:  vip
    
  6. 查看更新过程中的容器状态

    $ docker service ps redis
    ID                  NAME                IMAGE                NODE                DESIRED STATE       CURRENT STATE                 ERROR               PORTS
    9uzdoruo0n27        redis.1             redis:3.0.7          ubuntu-1604-002     Running             Preparing 23 seconds ago
    uzabimd9ilx5         \_ redis.1         redis:3.0.6-alpine   ubuntu-1604-002     Shutdown            Shutdown 21 seconds ago
    6lhvz3aanelv        redis.2             redis:3.0.6-alpine   ubuntu-1604-003     Running             Running about an hour ago
    i55mt8fzqqbp        redis.3             redis:3.0.7          ubuntu-1604-001     Running             Running 33 seconds ago
    rxu3t1iy6qcg         \_ redis.3         redis:3.0.6-alpine   ubuntu-1604-001     Shutdown            Shutdown about a minute ago
    
    

猜你喜欢

转载自my.oschina.net/u/915811/blog/1593855
今日推荐