一、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  的应用,器群部署完毕。

docker swarm的应用----docker集群的构建的更多相关文章

  1. 使用Docker Swarm搭建分布式爬虫集群

    https://mp.weixin.qq.com/s?__biz=MzIxMjE5MTE1Nw==&mid=2653195618&idx=2&sn=b7e992da6bd1b2 ...

  2. Docker Swarm(一)集群部署

    一.机器环境 机器规划 172.16.0.89 swarm的manager节点 manager-node 172.16.0.90 swarm的node节点 node1 机器版本(均是:CentOS L ...

  3. 一步步创建第一个Docker App —— 3. 创建一个集群Swarm

    原文:https://docs.docker.com/engine/getstarted-voting-app/create-swarm/ 初始化集群 Swarm 1. 使用 ssh 命令登录 man ...

  4. docker(四):集群swarm

    docker使用入门(四):集群swarm swarm是一组位于同一集群且运行docker的机器,用户可以通过swarm manager向swarm输入命令,swarm中的机器可以是虚拟机也可以是物理 ...

  5. 同主机下Docker+nginx+tomcat负载均衡集群搭建

    想用Docker模拟一下nginx+tomcat集群部署,今天折腾了一天,遇坑无数,终于在午夜即将到来之际将整个流程走通,借本文希望给同样遇到类似问题的小伙伴们留点线索. 主机环境是CentOS 7, ...

  6. docker环境下solrcloud+zookeeper集群部署教程

    前言:两个月前的16年11月份完成的配置,使用的solr6.1和zookeeper3.4,刚刚写成blog,目前版本可能有小版本的变化. 本例完成结果为:在docker环境下部署solrcloud集群 ...

  7. docker下rabbitMQ高可用集群部署

    第一步:docker 安装: mac 下安装命令: brew cask install docker 安装完之后查看版本 docker --version 第二步:开始集群搭建: 采用bijukunj ...

  8. Docker搭建MySQL的PXC集群

    原文:Docker搭建MySQL的PXC集群 一.简介 PXC属于一套近乎完美的mysql高可用集群解决方案,相比那些比较传统的基于主从复制模式的集群架构MHA和MM+keepalived,galer ...

  9. 基于docker实现redis高可用集群

    基于docker实现redis高可用集群 yls 2019-9-20 简介 基于docker和docker-compose 使用redis集群和sentinel集群,达到redis高可用,为缓存做铺垫 ...

随机推荐

  1. 五、mariadb遇到的坑——Linux学习笔记

    C#连接MySQL异常:The host localhost does not support SSL connections. 解决方案: 连接字符串添加如下语句. SslMode = none; ...

  2. java virtualVM远程配置方法

    在/etc/hosts中设置主机名和ip的对应关系   ip为用java virtualVM链接服务器的ip 如:      10.175.0.191 host-ai #rmiregistry不知道干 ...

  3. 取多个name值相同的input里面的值

    html 中是允许多个具有相同name属性的元素的,例如服务器端读取的常规做法是: string name = Request.Params["txtName"]; 得到的将是一串 ...

  4. hive 的一个小问题

    hive查询语句中如果包含中文,如like '%奥巴马%' ,并且所查hive表中的数据是utf-8的,可能会查不出正确结果. 原因可能是系统环境的LANG 设置不是utf-8,需要把环境变量LANG ...

  5. 代码大全读书笔记 Part 1

    简单的看了前言,印象最深的还是这本书崇尚"绝不注水"的原则.现实生活中,不仅仅有注水牛肉,瘦肉精的猪肉,很多书籍也是东拼西凑来的内容,不注水的厚书,是十分令人期待的. 第一章:欢迎 ...

  6. C#图解教程读书笔记(第5章 方法)

    类型推断和var关键字 从C#3.0开始,可以在变量声明的开始部分的的位置使用新的关键字var. Var关键字并不是某种特别类型的符号.它只是句法上的速记,表示任何可以从初始化的右边推断出的类型. V ...

  7. 弃坑pexpect,入坑paramiko

    上文书说到,ssh库pexpect的使用,简直就是个“月亮公主”——满眼全是坑.勉强把程序写好了,跑起来的时候发现了一个新坑,让我不可抗拒的把它弃掉了——经常莫名其妙的连不上服务器!开线程连接14台服 ...

  8. 第一章 介绍Django

    Django是一个网络开发框架,有了这个框架,能是网站开发更高效有趣,能轻松的创建和维护高质量的网站应用. 这一本书的目的是使读者成为一个Django的专家.主要着重两点.第一,深入的解释Django ...

  9. 轻量级自动化运维工具Fabric的安装与实践

    一.背景环境 在运维工作中,经常会遇到重复性的劳动,这个时候为了效率就必须要使用自动化运维工具. 这里我给大家介绍轻量级自动化运维工具Fabric,Fabric是基于Python语言开发的,是开发同事 ...

  10. protobuf编码

     proto2 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据序列化,适合做数据存储或 RPC 数据交换格式.可用于通讯协议.数据存储等领域的语言无关.平台无 ...