• docker-swarm笔记


    1.部署环境:

    centos7
    创建三节点的 swarm 集群
    swarm-manager 是 manager node : 192.168.1.150
    swarm-worker1 和 swarm-worker2 是 worker node: 192.168.1.151,192.168.1.152

    2.部署docker

    Docker v1.12+
    安装:https://www.cnblogs.com/hanxiaohui/p/8514941.html
    注意:3个节点都需要安装,并且修改docker默认的家目录

    3.部署docker-swarm

    原文地址: http://www.cnblogs.com/CloudMan6/p/7862254.html

    3.1在 swarm-manager 上执行如下命令创建 swarm:

    
    docker swarm init --advertise-addr 192.168.1.150
    命令说明:
    --advertise-addr 指定与其他 node 通信的地址。
    docker swarm init 输出告诉我们:
    ① swarm 创建成功,swarm-manager 成为 manager node。
    ② 添加 worker node 需要执行的命令。
    ③ 添加 manager node 需要执行的命令

    3.2 添加worker

    如果当时没有记录下 docker swarm init 提示的添加 worker 的完整命令,可以通过以下命令查看
    docker swarm join-token worker 
    
    上条命令执行的结果 在node上执行。

    3.3 查看集群

    docker node ls

    4.service相关的操作

    ######创建网络

    ######创建网络
      docker network create -d overlay --attachable my-network #创建overlay网络

    ######用 Label 控制 Service 的位置

    定义lable
      docker node update --label-add env=test swarm-worker1
      命令说明:
      swarm-worker1是node的名字

    ######查看lable

    docker node inspect swarm-worker1 --pretty

    ######创建service

    docker service create -d -p 28002:28002 --mount type=bind,src=/mnt/qmsUpload,dst=/usr/local/src --replicas 2 --name first-mysql --network my-network  --constraint 'node.labels.env=test' mysqld:5.6
      命令说明:
      -d 默认是true(这个参数可要可不要)
      -p 端口映射 相当于 --publish
      --mount 挂载磁盘
      --replicas 副本数
      --name  service名
      --network 指定网络
      --constraint 指定在哪个work启动副本,需要给节点定义lable
      mysqld:5.6 指定镜像

    ######查看service

    docker service inspect first-mysql --pretty

    ######service副本伸缩

      docker service scale first-mysql=5 或 docker service update --replicas 6
      命令说明:
      first-mysql是service名,伸缩只要修改数量就行。

    ######不让manager node运行副本

      默认配置下 manager node 也是 worker node,所以 swarm-manager 上也运行了副本。如果不希望在 manager 上运行 service,可以执行如下命令
      docker node update --availability drain swarm-manager
      命令说明: swarm-manager是node名,node名 是跟系统的hostname一样的
    
      docker node ls  #查看AVAILABILITY列  swarm-manager那台node的 值变为 drain

    ######删除service

    docker service rm web_server  #docker service rm 删除 web_server,service 的所有副本(容器)都会被删除

      ######从外部访问service

      端口映射
      1.创建service是有用-p 映射
    
      2.后期添加映射
      docker service update --publish-add 8080:80 web_server
    
      3.  curl 集群中任何一个节点的 8080 端口,都能够访问到 web_server

    ######service 服务发现

      http://www.cnblogs.com/CloudMan6/p/7967419.html
    
      直接使用 ingress 行不行?ingress是docker-swarm集群建好后就有的
      很遗憾,目前 ingress 没有提供服务发现,必须创建自己的 overlay 网络 (在manager上创建)

    ######滚动更新service

      docker service update --image httpd:2.2.32 my_web
      说明:
      --image 指定新的镜像
      my_web 是service的名字
      步骤:
      1.停止第一个副本。
      2.调度任务,选择 worker node。
      3.在 worker 上用新的镜像启动副本。
      4.如果副本(容器)运行成功,继续更新下一个副本;如果失败,暂停整个更新过程。
    
      例子:
      docker service update --replicas 6 --update-parallelism 2 --update-delay 1m30s my_web  #service
    增加到六个副本,每次更新两个副本,间隔时间一分半钟。

    ######回滚更新

    docker service update --rollback my_web #快速恢复到更新之前的状态

    ######replicated mode vs global mode

      globalmode,其作用是强制在每个 node 上都运行一个且最多一个副本
      例子:
      docker service create 
           --mode global 
           --name logspout 
           --mount type=bind,source=/var/run/docker.sock,destination=/var/run/docker.sock 
           gliderlabs/logspout

    ######健康检查

      http://www.cnblogs.com/CloudMan6/p/8053323.html
  • 相关阅读:
    Spring Security——核心类简介——获得登录用户的相关信息
    ssm配置文件
    spring boot项目下的application.properties中的logging.level设置日志级别
    spring boot项目下application.properties中使用logging.path和logging.file时的细节
    generatorConfig.xml(mybatis generator默认配置文件名)详细
    maven web项目下mybatis generator的使用
    各种xml配置文件(所含内部标签及顺序)的提示功能是真的人性化
    Git介绍、安装、命令和实战
    mac下ip地址重定向
    eclipse中Tomcat version 9.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5, 6, 7, and 8 Web modules
  • 原文地址:https://www.cnblogs.com/hanxiaohui/p/9390245.html
Copyright © 2020-2023  润新知