zoukankan      html  css  js  c++  java
  • docker swarm的应用----docker集群的构建

    一、docker安装

    这里我们安装docker-ce 的18.03版本

    yum    -y remove docker  删除原有版本

    #安装依赖包

    [root@Docker ~]# yum -y install yum-utils device-mapper-persistent-data lvm2

    #添加docker的CE版本的yum源配置文件

    [root@Docker ~]# curl   https://download.docker.com/linux/centos/docker-ce.repo    -o      /etc/yum.repos.d/docker-ce.repo

    安装CE版本的docker

    #yum -y install docker-ce

    #启动docker

    # systemctl start docker

    # systemctl enable docker   #添加开机启动

    # docker version #查看docker版本

    二、镜像操作

    我们查看镜像公有仓库中的镜像,

    docker  search  --filter-stars=50  tomcat    #查看镜像仓库中星级在50 以上的tomcat镜像

    因为本项目,要用到tomcat镜像,我们下载镜像

    docker  pull   tomcat   #tomcat  为镜像地址及仓库和标签

    下载后查看一下,docker   images

    三、创建容器集群

    docker-swarm是基于docker平台实现的集群技术,他可以通过几条简单的指令快速的创建一个docker集群,接着在集群的共享网络上部署应用,最终实现分布式的服务。相比起zookeeper等集群管理框架来说,swarm显得十分轻量,作为一个工具,它把节点的加入、管理、发现等复杂的操作都浓缩为几句简单的命令,并且具有自动发现节点和调度的算法,还支持自定制。使用 Swarm 操作集群,会使用户感觉就像是在一台主机上进行操作。
    SwarmKit 将节点分为两类:

    工作节点(Worker ):负责通过执行容器运行任务。SwarmKit 的默认执行器为 Docker 容器执行器(Docker Container Executor)。

    (1)内建分布式存储,不要额外的数据库

    (2)支持 Rolling update

    (3 容器高可用

    (4)通过 TLS 保证了节点之间通讯的安全

    管理节点(Manager ):负责接收和响应用户请求,将集群状态调节到最终状态。在 SwarmKit

    中,用户可以动态调整节点的角色,即在 Manager 和 Worker 之间转换。

    实验环境:

    这里选择三台主机运行 Swarm,依次为:

    node1 192.168.1.23

    node2 192.168.1.27

    node3 192.168.1.28

    基本环境配置

    3 台主机确保时间一致 ntp

    3 台主机均关闭 selinux,开启路由转发。

    3 台主机根据上面的实验环境描述修改主机名和 ip 地址

    系统环境准备

    准备系统环境, 配置 host 列表

    3 台主机均修改/etc/hosts 文件,添加所有主机的 ip 地址和主机名的映射记录

    以 master 为例子,其他节点同

    vim  /etc/hosts

    192.168.1.23  master

    192.168.1.27  slave1

    192.168.1.28  slave2

    主要使用三个新的命令行工具创建一个 swarm 集群:

    docker swarm 开启 swarm 模式; 加入 Swarm 集群; 配置集群参数

    docker node 查询集群节点信息; 提升/移除一个管理节点; 管理 swarm 节点主机

    docker service 创建管理 service

    在 master 上初始化 swram 集群:

    注意:你只需要在一个 master 上初始化 swarm 集群,其他 node 加入这个集群就行了, 所以运行.

    docker   swarm  init  --advertise-addr  192.168.1.23:2377

    根据命令的提示:

    以manager服务器角色加入 swarm 集群需要运行如下命令:

    先docker  swarm join-token  manager  获取manager的token,再执行以下命令:

    docker swarm  join 加入到 master创建的集群

    我们以其他节点服务器,以 worker 角色加入 swarm 集群需要运行如下命令:

    先docker  swarm join-token  worker  获取worker的token,再执行以下命令:

    docker swarm  join 加入到 master创建的集群

    查看 swarm 集群 node 列表

    我们一共要加入两台,然后我们再看节点情况
    docker   node  ls

    一共是三个,一个master, 两个从节点

    集群创建完毕

    四、在 swarm 集群上运行 docker 应用

    概念解释:service

    Docker swarm 引入了服务的概念,一个服务由多个任务组成,一个任务即一个运行的容器。

    下面我们可以使用之前 pull的 tomcat 镜像启动服务,

    docker service create --replicas 2 --name judge_swarm -p 8080:8080 --network=swarm_test   tomcat

    docker service create 命令创建一个 service.

    --name 标签命名 service 为 judge_swarm

    --replicas 标签来声明 2 个运行实体(即容器副本数)

     使用 docker service ls 查看服务

     我们到各个节点上去看,docker  ps -a

    可以看到

     每个节点上启动了一个容器实例,我们更改容器内 tomcat 服务的主页

    docker  exec  -it  21b   /bin/bash

    docker cp    index.jsp   21b:/usr/local/tomcat/webapps/web

    docker  cp  server.xml   21b:/usr/local/tomcat/conf/

    让每个tomcat容器实例显示不同的网页,在浏览器上输入 http://master  ip:8080/web

     刷新界面可以看到服务是轮询显示页面的,也就是该集群实现了负载均衡。

    同时,如果负载过大,我们还可以拓展该服务上的容器实例,本例拓展为4个,

    docker  service  scale   judge_swarm=4

    管理器会根据节点情况,在不同节点另外启动两个实例

    本案例是在master 上启动了两个容器实例

     

     docker   swarm  的应用,器群部署完毕。

  • 相关阅读:
    .NET CORE QuartzJob定时任务+Windows/Linux部署
    .NET CORE 数据保护
    Docker容器间通信
    Docker加载本地证书
    转载-AppDomain详解
    JMeter尝鲜
    从String类型发散想到的一些东西
    npm源管理
    一张脑图整理Docker常用命令
    构造管“生”对象?析构管“埋”对象?C++中构造析构还没整明白?
  • 原文地址:https://www.cnblogs.com/mushou/p/9508450.html
Copyright © 2011-2022 走看看