swarm简介:

Docker Swarm 是 Docker 官方三剑客项目之一,提供 Docker 容器集群服务,是 Docker 官方对容器云生态进行支持的核心方案。

一、基本概念:

    运行 Docker 的主机可以主动初始化一个 Swarm 集群或者加入一个已存在的 Swarm 集群,这样这个运行 Docker 的主机就成为一个 Swarm 集群的节点 (node) 。

     节点分为管理 (manager) 节点和工作 (worker) 节点。

    管理节点用于 Swarm 集群的管理,docker swarm 命令基本只能在管理节点执行(节点退出集群命令 docker swarm leave 可以在工作节点执行)。一个 Swarm 集群可以有多个管理节点,但只有一个管理节点可以成为 leader,leader 通过 raft 协议实现。
    工作节点是任务执行节点,管理节点将服务 (service) 下发至工作节点执行。管理节点默认也作为工作节点。你也可以通过配置让服务只运行在管理节点。

二、服务和任务:

    任务 (Task)是 Swarm 中的最小的调度单位,目前来说就是一个单一的容器。

    服务 (Services) 是指一组任务的集合,服务定义了任务的属性。服务有两种模式:

        replicated services 按照一定规则在各个工作节点上运行指定个数的任务。

        global services 每个工作节点上运行一个任务

    两种模式通过 docker service create 的 --mode 参数指定

 

实验环境:

rhel7.3 selinux和iptables均为disabed状态

172.25.254.1 server1

172.25.254.2 server2

172.25.254.3 server3

172.25.254.44 物理机

docker swarm join后启动 docker swarm leave_Docker

docker swarm join后启动 docker swarm leave_Docker_02

docker swarm join后启动 docker swarm leave_nginx_03

docker swarm join后启动 docker swarm leave_nginx_04

docker swarm join后启动 docker swarm leave_nginx_05

docker swarm join后启动 docker swarm leave_nginx_06

在server1上做初始化

docker swarm join后启动 docker swarm leave_nginx_07

在server2和server3上做初始化。是为了加入server1的集群中:

docker swarm join后启动 docker swarm leave_docker_08

docker swarm join后启动 docker swarm leave_nginx_09

在server1上查看节点信息:

docker swarm join后启动 docker swarm leave_docker_10

在三个server上安装 nginx

docker swarm join后启动 docker swarm leave_Docker_11

docker swarm join后启动 docker swarm leave_docker_12

docker swarm join后启动 docker swarm leave_docker_13

server1上,在manager节点部署nginx服务,服务数量为3个,公开指定端口为8080映射容器80,使用nginx镜像

先做好解析,每台机子上都要做好

docker swarm join后启动 docker swarm leave_nginx_14

docker service create --name nginx --publish 80:80 --replicas 3 nginx  #3创建nginx服务

docker swarm join后启动 docker swarm leave_docker_15

docker swarm join后启动 docker swarm leave_docker_16

在浏览器上输入三台服务机的ip,均可以访问nginx

docker swarm join后启动 docker swarm leave_docker_17

docker swarm join后启动 docker swarm leave_Docker_18

docker swarm join后启动 docker swarm leave_docker_19

实现负载均衡

此时,在server1上,需要一个visualizer.tar

docker swarm join后启动 docker swarm leave_nginx_20

docker swarm join后启动 docker swarm leave_nginx_21

在server1上,创建viz服务并开启

docker swarm join后启动 docker swarm leave_nginx_22

docker swarm join后启动 docker swarm leave_nginx_23

查看

docker swarm join后启动 docker swarm leave_Docker_24

docker swarm join后启动 docker swarm leave_docker_25

docker swarm join后启动 docker swarm leave_nginx_26

docker swarm join后启动 docker swarm leave_nginx_27

在server2上

docker swarm join后启动 docker swarm leave_docker_28

在server3上

docker swarm join后启动 docker swarm leave_docker_29

在主机上查看此时负载均衡成功:

docker swarm join后启动 docker swarm leave_Docker_30

浏览器访问http://172.25.254.1:8080/查看三台主机的nginx负载均衡

docker swarm join后启动 docker swarm leave_nginx_31

此时不论关闭任何一台服务机,此时的负载均衡就会出现在另外两个主机上实现