zoukankan      html  css  js  c++  java
  • Docker Swarm集群

      Docker Swarm 是一个用于创建和管理docker集群的工具。在1.12版本之后集成了swarmkit工具,该工具主要用于Docker集群管理和容器编排。

    优势:

      1.方便创建和管理集群

      Docker Swarm是Docker源生的集群管理工具,可以直接使用Docker客户端来创建并管理一个Docker Swarm集群,然后在其中部署应用程序服务,而不需要额外的编配软件来创建和管理集群。

      2. 可扩展

      对于集群中的每个服务,都可以声明要运行的副本任务数量,当向上或向下进行扩展时候,集群管理器将通过添加或删除副本任务来自适应所需的状态

      3. 可实现期望的状态调节

      集群管理器节点不断监视集群状态,并协调实际和期望状态之间的任何差异

      4. 集群中多主机网络自动扩展管理

      Docker Swarm 为集群服务提供了一个覆盖网络,当它初始化或更新应用程序时,集群管理器会自动将在工作节点创建或更新网络来管理服务。

      5. 提供服务发现功能

      集群管理器节点为集群中的每个服务分配一个唯一的Dns名称,通过Docker Swarm集群提供的负载均衡功能,可以通过嵌入在集群中的Dns服务器来查询集群中运行的每个容器

      6. 可实现负载均衡

      可以将容器中服务的端口暴露给外部负载均衡器,而在内部,集群允许指定如何在节点之间分配服务容器

      7. 安全性强

      集群中的每个节点强制使用TLS相互认证和加密,以确保自身和其他节点之间的通信安全。此外,集群还支持使用自定义的自签名证书来保证安全

      8. 支持延迟更新和服务回滚

      在进行服务更新时候,可以将服务更新逐步延伸到每个节点上,集群管理器允许服务部署到不同节点组之间时出现延迟,如果某个及诶单出现问题,还可以将服务回滚到以前的版本

    本地测试环境,三台Centos系统服务器

      环境支持:

        1. 安装Docker版本必须时1.12及以上

        2.服务器Ip地址固定,保证集群中所有节点能够访问该管理节点

        3.集群节点之间必须使用相应的协议保证一下端口可用:

          1)用于集群通信的Tcp端口2377

          2)Tcp和UDP端口7946, 用于节点间通信

          3)UDP端口4789,用于覆盖网络流量

      服务器信息:

        

    manager1:  172.16.114.52
    worker1: 172.16.109.67
    worker2: 172.16.109.68
    
    manager1: 管理节点
    worker1:工作节点
    worker2: 工作节点

    开始搭建:

      1. 在manager1所在的机器上创建Docker Swap集群

    docker swarm init --advertise-addr 172.16.114.52
    
    
    注意: 如果是测试单节点的集群,直接使用docker swarm init
    
    Swarm initialized: current node (ofv77vow2nhr4o9kpoof581ix) is now a manager.
    
    To add a worker to this swarm, run the following command:
    
        docker swarm join --token SWMTKN-1-30e0wpgn5e0oq6i2vlvioqge3h2oawv52p0w1vdgq68gn8imwu-8lnpufoszaotkpe0mhchut2xk 172.16.114.52:2377
    
    To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

       此时创建成功了,可以查看集群节点信息

    docker node ls

      

      2. 向Docker Swarm集群添加工作节点

    docker swarm join --token SWMTKN-1-30e0wpgn5e0oq6i2vlvioqge3h2oawv52p0w1vdgq68gn8imwu-8lnpufoszaotkpe0mhchut2xk 172.16.114.52:2377
    
    
    注意: 这里--token表示向指定集群加入工作节点的认证信息

       3. 向Docker Swarm集群部署服务

      可以使用Docker Hub上自带的镜像来启动服务,也可以使用Dockerfile构建的镜像来启动服务。如果自己构建的镜像也需要先推送到Docker Hub中心仓库。

    docker service create --replicas 1 --name helloworld alpine ping docker.com
    
        --replicas: 指定副本数量
        ping docker.com:服务启动后执行的命令

      集群服务相关操作:

    # 查看当前集群中的服务列表信息
    docker service ls
    
    
    # 查看部署的服务的具体详情
    docker service inspect helloworld
    
    
    # 查看指定服务在集群节点上的分配和运行情况
    docker service ps helloworld
    
    
    
    # 更改Docker Swarm 集群服务副本数量
    docker service scale helloworld=5
    
    
    # 删除服务
    docker service rm helloworld

      4. 访问服务  

      1)查看集群模式下的网络情况

    docker network ls
    
    会比非集群多一些网络方式,例如overlay

      2) 在集群管理节点manage1上,创建以overlay为驱动的自定义网络

    docker network create --driver overlay my-multi-host-network

      3) 在集群管理节点上再次部署服务 

    docker service create 
    --network my-multi-host-network 
    --name my-web 
    --publish  8080:80
    --replicas 2
    nginx
    
    
    参数说明:
        --network 指定服务使用自定义的overlay驱动网络my-multi-host-network连接
        --name. 指定服务启动后的名称
        --publish(-p) 映射外部服务端口
        --replicas 指定服务的副本数量
        nginx 基于nginx镜像构建的服务

      4)查看服务的两个副本运行情况

    docker service ps my-web

      5) 外部访问 

    打开浏览器,使用任意一台节点机器的IP+8080端口进行服务访问都可以
    
    这是Docker Swarm负载均衡特点

      

  • 相关阅读:
    个人作业——软件评测
    软件工程第五次作业——结对编程的实现
    软件工程第三次作业
    软件工程第一次作业
    两个矩形面积交
    二维并查集
    Java 作业 1
    练习题
    线性表

  • 原文地址:https://www.cnblogs.com/xingxia/p/docker_swarm.html
Copyright © 2011-2022 走看看