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
三、创建容器集群
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集群的构建的更多相关文章
- 使用Docker Swarm搭建分布式爬虫集群
https://mp.weixin.qq.com/s?__biz=MzIxMjE5MTE1Nw==&mid=2653195618&idx=2&sn=b7e992da6bd1b2 ...
- Docker Swarm(一)集群部署
一.机器环境 机器规划 172.16.0.89 swarm的manager节点 manager-node 172.16.0.90 swarm的node节点 node1 机器版本(均是:CentOS L ...
- 一步步创建第一个Docker App —— 3. 创建一个集群Swarm
原文:https://docs.docker.com/engine/getstarted-voting-app/create-swarm/ 初始化集群 Swarm 1. 使用 ssh 命令登录 man ...
- docker(四):集群swarm
docker使用入门(四):集群swarm swarm是一组位于同一集群且运行docker的机器,用户可以通过swarm manager向swarm输入命令,swarm中的机器可以是虚拟机也可以是物理 ...
- 同主机下Docker+nginx+tomcat负载均衡集群搭建
想用Docker模拟一下nginx+tomcat集群部署,今天折腾了一天,遇坑无数,终于在午夜即将到来之际将整个流程走通,借本文希望给同样遇到类似问题的小伙伴们留点线索. 主机环境是CentOS 7, ...
- docker环境下solrcloud+zookeeper集群部署教程
前言:两个月前的16年11月份完成的配置,使用的solr6.1和zookeeper3.4,刚刚写成blog,目前版本可能有小版本的变化. 本例完成结果为:在docker环境下部署solrcloud集群 ...
- docker下rabbitMQ高可用集群部署
第一步:docker 安装: mac 下安装命令: brew cask install docker 安装完之后查看版本 docker --version 第二步:开始集群搭建: 采用bijukunj ...
- Docker搭建MySQL的PXC集群
原文:Docker搭建MySQL的PXC集群 一.简介 PXC属于一套近乎完美的mysql高可用集群解决方案,相比那些比较传统的基于主从复制模式的集群架构MHA和MM+keepalived,galer ...
- 基于docker实现redis高可用集群
基于docker实现redis高可用集群 yls 2019-9-20 简介 基于docker和docker-compose 使用redis集群和sentinel集群,达到redis高可用,为缓存做铺垫 ...
随机推荐
- lua的面向对象实现
百度搜索一下,给出出的解决方案和学习帖子很多,可是我还是有很多的问题! (1)什么是面向对象? (2)lua中怎么实现面向对象? (3)什么样的实现既简单又能完成我的功能? (4)一定要按照c++的方 ...
- Last_SQL_Error: Error 'Can't drop database 'ABC'; database doesn't exist' on query. Default database: 'ABC'. Query: 'drop database ABC'
查看从库状态发现报错: show slave status\G; 发现是主库上删除了一个数据库,但是从库上面没有,从库执行这个语句的时候失败报错. 解决方法: 停止从库 stop slave; 创建语 ...
- Linux命令 标签: linux 2016-08-01 10:26 508人阅读 评论(0) 收藏
Linux常用命令 文件.目录的基本操作 ls - 查看文件 cp - 拷贝文件 mv - 移动或重命名文件 rm - 删除文件 touch - 创建空文件或更新文件时间 cd - 改变当前路径 pw ...
- Yii日志使用
Yii 提供了一个灵活可扩展的日志功能.记录的日志 可以通过日志级别和信息分类进行归类.通过使用 级别和分类过滤器,所选的信息还可以进一步路由到 不同的目的地,例如一个文件,Email,浏览器窗口等. ...
- 关于Jsp页面的jstl标签的级联属性的异常。
使用SpringMVC框架时,当我做表单回显时. 情景描述.Employee 类有一个Department类的属性.这两个类存在多对一关联关系. 下面是Employee类的属性的定义. public ...
- Yii 验证和消息
setFlash(), getFlash()可以完成验证成功后提示 <?php # 成功信息提示 Yii::app()->user->setFlash('success', &quo ...
- BZOJ2346:[Baltic 2011]Lamp(最短路)
Description 2255是一个傻X,他连自己家灯不亮了都不知道. 某天TZ大神路过他家,发现了这一情况, 于是TZ开始行侠仗义了. TZ发现是电路板的问题, 他打开了电路板,发现线路根本没有连 ...
- 移动端 Touch 事件
在移动端页面开发时,常常会用到touch事件,比如左滑右滑的轮播等.常用的触摸事件有touchstart,touchmove,touchend. 每个事件包含下面三个用于跟踪虎摸的属性: touche ...
- c#用链表来存储并读取写好的配置文件
别用arraylist,效果没有list好(因为要装箱拆箱,所以会影响性能) 使用list,那我们就来先声明一个List 1) 声明 List<元素类型> myList = new Lis ...
- 内存修改之IOS版ce
开源工具,算法全部在内存中完成,速度比bmsq,igg快,直接搜索0也是无压力.使用c++编写,有一定的扩展能力,可以自己扩展value type和comparator. 项目地址: https:// ...