Docker Swarm 管理

案例一概述及前置知识点

概述:

创鑫公司给云计算工程师提出新的要求,可将集群中所有Docker Engine整合进一个虚拟的资源池,通过执行命令与单一的主Swarm进行沟通,而不必分别和DockerEngine沟通。在灵活的调度策略下,IT团队可以更好地管理可用的主机资源,保证应用容器的高效运行

  1. DockerSwarm是Docker公司2014年出品的基于Docker集群管理调度工具,能够将多台主机构建成一个Docker集群,并结合Overlay网络实现容器调度和互访
  2. 用户可以通过Swarm API来管理多个主机的Docker
  3. Swarm集群包含Manager和Worker两类节点,基于Docker Engine可以部署任何类型的工作节点
  4. 在Swarm集群中部署镜像创建一个服务时,一些大型的应用上下文环境(运行环境)中需要各种服务配合工作,这些服务称之为微服务
  5. 创建服务时,可以指定要使用的容器镜像以及容器中要运行的命令,同事可以定义以下选项:
    1. 群集要对外服务的端口
    2. 在群集中用于服务之间相连的Overlay网络
    3. 滚动更新策略
    4. 群集总运行的副本数量、
  6. Docker Swarm基本特性
    1. 去中心化设计
    2. 声明式服务模型
    3. 协调预期转台与实际状态的一致性
    4. 多主机网络
    5. 负载均衡
    6. 安全策略(使用TLS对数据进行保护)
    7. 滚动更新
  7. Docker Swarm架构图
    1. Docker Swarm提供强大的集群能力,能够使多个Docker Engine组合形成一个group,提供多容器服务
    2. Swarm使用标准的Docker API

案例一:Docker Swarm群集部署

  1. 把需要的镜像同步到三个主机

  1. 初始化一个集群,指定一个节点并生成一个集群

(使用上述docker swarm join 命令那一行语句,在其他的worker节点上执行这个语句,即可将此节点加入到swarm集群当中,并作为一个worker节点)

  1. 创建完成之后,可以使用docker info 命令来查看当前集群的节点信息

2377:TCP端口,建立集群使用的端口

7946:TCP/UDP,节点之间进行通信的端口

4789:TCP/UDP端口,数据存储使用的端口

也可使用docker node ls 查看节点的信息

Active:能运行容器

pause:当前容器继续执行,新调度过来的容器不接收

drain:(污点)新调度过来的容器不接收,原有的容器调度走,保持自身没有容器运行

  1. 改变Manager管理节点的状态

  1. 给节点打标签,将指定的容器运行在指定的节点之上

--label-add:添加标签

group=g2:这是一个完整的标签名,是一个键值对

  1. 查看指定节点的详细信息

  1. 在swarm中跑一个服务

  1. 查看服务创建是否成功

  1. 给其他worker节点提权

提权过后,他们有一些特点定的权限,但不是实际的Leader

  1. 给其他集群降权

  1. 脱离集群。解散集群的命令

若是想节点脱离集群,在worker节点上执行此命令即可

若是想解散该集群,在Manager节点上执行此命令

--force:强制执行

  1. 创建服务并且指定副本数量

  1. 查看服务日志

扩容

缩容

删除服务

滚动更新

更新已创建服务的镜像

Docker的四种网络模式:

  1. bridge
  2. host
  3. none
  4. container

创建网络

创建服务端的时候指定网络

创建数据卷以实现数据共享

一、直接创建数据卷,将创建的数据卷直接在创建服务的时候指定给服务

(这种方式的弊端是,需要到每个节点依次修改数据)

1、先创建数据卷

2、创建的数据卷的位置:/var/lib/docker/volumes/

2、创建服务时直接指定数据卷

3、查看创建的数据卷

二、共享存储(NFS)数据卷

  1. 先创建一个共享目录(所有的节点都要创建)

  1. 给每个节点安装NFS,以便实现卷数据的共享

  1. 在Manager节点,设置配置文件(/etc/exports)

  1. 修改配置文件里边的内容

  1. 在Manager节点上开启以下两种服务

  1. 在worker节点上挂载目录

  1. 在Manager节点上创建新的服务,并重新指定挂载类型,以及来源共享目录

  1. 查看创建的结果

  1. 在Manager节点创建一个测试文件,会发现其他的worker节点会有相同的数据内容
    1. 在Manager节点创建测试内容
      1. echo "test" > /var/vhost/www/aa/index.html
    2. 在worker节点创建测试内容
      1. echo "test" > /var/share/nginx/html/index.html

经过对比,发现无论在那个节点上创建测试文件,最终都会共享到所有节点上,因为在Manager节点把创建的共享目录已经挂载到其他的worker节点上的目录当中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值