首页 > 其他分享 >docker-集群

docker-集群

时间:2022-09-21 17:00:56浏览次数:60  
标签:容器 service swarm 集群 docker stack

什么是docker集群

不同服务实例,来共同提供服务的一组集合,集群

集群类型

1、先看两个集群例子:nginx集群,redis集群

2、然后总结

1、对称集群

​ 不同服务实例,功能地位相等(每一个实例提供的功能机会相同)

​ 定位:数据计算

2、非对称集群

​ 不同服务实例,功能地位不相等(每一个实例提供功能的机会不相同)

​ 定位:数据存储

 

 

 

 

什么是docker集群

接下来,考一下大家,大家认为docker集群是个什么集群

总结

1、docker集群是非对称集群

 

为什么要使用docker集群

​ 从docker集群图来进行分析,docker里面运行着容器,如果docker宕机?

docker容器对外提供 访问,如果访问量越大,一台docker的并发量毕竟有限

总结:

​ 1、单点故障问题

​ 2、性能问题

所以为了解决这两个问题,就出现了docker集群

实现docker集群方式

​ 1、swarm

​ 2、k8s

​ 但是我们今天只会讲解swarm,今天我们选择swarm

选择原因

1、swarm是docker官方提供的集群工具

2、k8s是谷歌开发的

3、k8s理解使用起来比较难

swarm如何管理docker集群

swarm是什么,怎么理解?

swarm 就好比是地铁购票机安装员。同理swarm就是地铁购票机安装员

Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。

 

swarm内部概念

1、node节点概念

就是将集群的docker通过node分配角色的方式进行维护

node 就是docker的别名,就好比,我们去公司上班,每一个人都有一个工号,工号就是我们的别名,那么node就是docker的别名,但是node有两个类型,manager 和work,就是讲docker分成了两类,就好比,公司里面有老板和员工,manager就是老板,work就是员工,老板是管理的,员工是干事的。有时候人工不够的时候,老板也过来干事。

 

 

 

 

 

swarm如何创建docker集群

条件

1、两台以上docker主机

2、docker swarm 

步骤

1、安装两台docker主机,使用linux或者centos7.0以上

​ 安装1.12 版本以上的docker,会在主机上默认提供支持

2、如何使用docker swarm?

​ 1、输出docker命令,会看到有一个swarm管理命令

​ docker swarm

​ 2、然后输入docker swarm 命令

​ 可以看到很多的帮助命令

​ 3、创建集群管理节点

​ docker swarm init --advertise-addr 123.57.164.54  (创建老板===manager) 创建成功后提示一个创建工作节点(员工===worker的命令) 把这个命令复制到另外一个docker主机上运行

​ 4、创建工作节点 (复制到另外一个docker主机上运行)

​ docker swarm join --token SWMTKN-1-2bomg3tb4cs8f5g7oqrw34k1mql9i0tr2msn8leqyphgac5hct-db4iwy32sdr6m0bmqyhi47jyn 123.57.164.54:2377 

​ 5、查看集群消息,查看工作节点和管理节点

​ docker info

工作节点 (worker)

1、提供容器服务

swarm是如何操作集群节点容器的?

在使用之前我们必须要准备一些概念,这些概念是swarm的核心,掌握了这些概念,就已经理解了swarm 50%

后面都是基于这些概念的操作

service是什么?(类似部门经理)

​ 是指不同节点容器集合,用来维护容器 (用来创建集群的容器)

task是什么?

​ 在集群环境中,用来运行容器

stack是什么?

​ 是指stack的集合,用来维护service

swarm集群中如何管理容器?

​ 使用service 你们想一下,公司除了人工还有什么,是不是还有部分经理,那么service就是部分经理

​ 就好比公司的部门经理

​ 条件

​ 1、rmcore镜像

​ 2、nginx镜像

​ 3、docker service

​ 步骤

​ 1、查看rmcore镜像和nginx镜像

​ 使用rmcore镜像来进行集群服务部署

​ 2、 如何使用docker service?

​ 1、输出docker命令,会看到有一个service管理命令

​ docker service

​ 2、然后输入docker service命令

​ 可以看到很多的帮助命令

​ 3、创建服务 (所有的操作在管理节点中操作)

​ docker service create --replicas 1 -- name rmcoreservice rmcore

​ --replicas 配置服务副本(容器在不同节点启动)

​ --name 服务名称

​ 4、列表服务

​ docker service ls

​ 5、查看服务运行在哪个节点

​ docker service ps rmcore-service

​ 6、查看服务部署详细信息

​ docker service inspect --pretty rmcoreservice

​ 7、服务扩展(向其他节点添加服务副本)

​ docker service scale rmcoreservice=2

​ 8、删除服务

​ docker service rm rmcoreservice

​ 9、服务如何进行外部访问

​ docker service create --replicas 1 -- name --publish 6066:80 rmcoreservice

​ --publish 发布端口例如 6066:80

​ 10、进行网络访问

​ 111.229.181.115:6066

​ 123.57.164.54:606699-6

swarm集群中如何管理不同容器?

 

 

使用stack 你们想一下,公司除了人工,是不是还有部门经理,还有什么,就是总经理,那么stack 就是总经理

​ 用来管理部门经理

条件

​ 1、rmcore镜像

​ 2、nginx镜像

​ 3、docker-compose.yml

​ 4、stack

1、查看rmcore镜像和nginx镜像

​ 使用rmcore镜像来进行集群服务部署

2、 如何使用docker stack?

​ 1、输出docker命令,会看到有一个service管理命令

​ docker stack

​ 2、然后输入docker stack命令

​ 有很多的帮助命令

​ 3、创建堆栈(服务集合)

​ 1、创建一个stack目录(在当前目录/root下创建一个stack)

​ mkdir stack

​ 2、配置yml文件

​ 在原有docker.compose.yml增加配置

​ version: '3.4'

​ deploy: #集群模式配置​ mode: replicated #配置副本模式,gloab​ replicas: 2 # 副本份数

 

 

附件
6、stack docker-compose.yml文件?
deploy
可以选参数:
endpoint_mode:访问集群服务的方式。
endpoint_mode: vip
# Docker 集群服务一个对外的虚拟 ip。所有的请求都会通过这个虚拟 ip 到达集群服务内部的机器。
endpoint_mode: dnsrr
# DNS 轮询(DNSRR)。所有的请求会自动轮询获取到集群 ip 列表中的一个 ip 地址。
labels:在服务上设置标签。可以用容器上的 labels(跟 deploy 同级的配置) 覆盖 deploy 下的 labels。

mode:指定服务提供的模式。
replicated:复制服务,复制指定服务到集群的机器上。
global:全局服务,服务将部署至集群的每个节点。
replicas:mode 为 replicated 时,需要使用此参数配置具体运行的节点数量。

resources:配置服务器资源使用的限制,例如上例子,配置 redis 集群运行需要的 cpu 的百分比 和 内存的占用。避免占用资源过高出现异常。

restart_policy:配置如何在退出容器时重新启动容器。

condition:可选 none,on-failure 或者 any(默认值:any)。
delay:设置多久之后重启(默认值:0)。
max_attempts:尝试重新启动容器的次数,超出次数,则不再尝试(默认值:一直重试)。
window:设置容器重启超时时间(默认值:0)。
rollback_config:配置在更新失败的情况下应如何回滚服务。

parallelism:一次要回滚的容器数。如果设置为0,则所有容器将同时回滚。
delay:每个容器组回滚之间等待的时间(默认为0s)。
failure_action:如果回滚失败,该怎么办。其中一个 continue 或者 pause(默认pause)。
monitor:每个容器更新后,持续观察是否失败了的时间 (ns|us|ms|s|m|h)(默认为0s)。
max_failure_ratio:在回滚期间可以容忍的故障率(默认为0)。
order:回滚期间的操作顺序。其中一个 stop-first(串行回滚),或者 start-first(并行回滚)(默认 stop-first )。
update_config:配置应如何更新服务,对于配置滚动更新很有用。

parallelism:一次更新的容器数。
delay:在更新一组容器之间等待的时间。
failure_action:如果更新失败,该怎么办。其中一个 continue,rollback 或者pause (默认:pause)。
monitor:每个容器更新后,持续观察是否失败了的时间 (ns|us|ms|s|m|h)(默认为0s)。
max_failure_ratio:在更新过程中可以容忍的故障率。
order:回滚期间的操作顺序。其中一个 stop-first(串行回滚),或者 start-first(并行回滚)(默认stop-first)

 3、创建stack

​ docker stack deploy -c docker-compose.yml rmstack

​ -c 是指定docker-compose.yml文件

​ rmcorestack 指定stack 标识(名称)

​ 4、查看stack列表

​ docker stack ls

​ 5、查看stack 服务列表信息

​ docker stack ps rmstack

​ 或者 docker service ls

​ 5、删除stack

​ docker stack rm rmstack

​ 通过两个节点查看,所有的信息是否删除

复制代码
version: '3'
services:
  rmcore:
    image: rmcore
    ports:
 - 8088:80
 - 8089:443
    deploy:
        mode: 
         replicated
        replicas: 2
nginx:
    image: nginx
    ports:
 - 8090:80
    deploy:
        mode: 
         replicated
        replicas: 2
复制代码

 

标签:容器,service,swarm,集群,docker,stack
From: https://www.cnblogs.com/lcword/p/16716232.html

相关文章

  • docker compose启动常用服务
    MySQLversion:'3.1'services:mysql:#服务的名称restart:always#代表只要docker启动,那么这个容器就跟着一起启动image:daocloud.io/library/mysql:......
  • 第五章dockerfile
    一Dockerfile含义Dockerfile由一行行命令语句组成,并且支持以#开头的注释行。一般而言,Dockerfile主体内容分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启......
  • 第一章 Docker入门
    一、背景为了完成那些不愉快或者平庸的任务,你也会喜欢只做必需之事。这可能是因为你同样喜欢使用一个简单易用的工具,来解决那些复杂或费时的工作。假设你想尝试一款新的......
  • 第二章 Centos7下安装Docker-20.10.2
    一、查看系统内核版本号1.查看系统内核版本号[root@m01~]#uname-aLinuxm013.10.0-957.el7.x86_64#1SMPThuNov823:39:32UTC2018x86_64x86_64x86_64GNU/......
  • RabbitMQ+docker安装教程
    安装Rabbitmq1.使用docker查询rabbitmq的镜像dockersearchrabbitmq   2.安装镜像安装name为rabbitmq的这里是直接安装最新的,如果需要安装其他版本在rabbitmq......
  • Redis集群搭建
    Redis集群本章是基于CentOS7下的Redis集群教程,包括:单机安装RedisRedis主从Redis分片集群 1.单机安装RedisLinux版安装首先需要安装Redis所需要的依赖:yu......
  • mapreduce和yarn集群
    mapreduce: 先分再合,分而治之      分布式计算概念:计算方式,与集中式计算相对。将应用拆分成小的部分,分配给多台计算机处理,mapreduce是分布式的计算框架。......
  • 基于Kuboard实现k8s单master集群安装
    一、安装要求采用Kuboard方式安装有一定的安装要求:至少2台 2核4G 的服务器CentOS7.6/7.7/7.8/7.9kubernetesv1.19.x版本采用的Docker,而之上的版本使用的是......
  • docker 静态IP配置通信
    Docker静态IP配置通信新建网段dockernetworkcreate--subnet=网段网桥名字同一主机内启动镜像dockerrun-d-p端口:端口--net=网桥名字--ip=IP地址1--name容......
  • 第二章 ES数据操作与集群
    一、回顾1.介绍ES2.ES原理3.ES功能4.ES使用场景5.ES安装1)ES配置文件(单点配置)[root@es01~]#grep'^[a-z]'/etc/elasticsearch/elasticsearch.ymlnode.name:es-1......