Docker容器虚拟化技术—Docker运维管理(Swarm集群管理)3


Swarm集群管理

docker swarm是docker官方提供的一套容器编排系统,是Docker公司推出的官方容器集群平台。

基于Go语言实现。它的架构如下:

1 Swarm的核心概念

1.1 集群

一个集群由多个 Docker 主机组成,这些Docker主机以集群模式运行,并充当管理者(用于管理成员资格和委派)和工作人员(运行集群服务)

与独立容器相比,集群服务的主要优势之一是,可以修改服务的配置,包括它所连接的网络和卷,而无需手动重新启动服务。

独立容器和集群服务之间的主要区别在于,只有集群管理器可以管理集群,而独立容器可以在任何守护程序上启动。

1.2 节点

swarm是一系列节点的集合,而节点可以是一台裸机或者一台虚拟机。一个节点能扮演一个或者两个角色,manager或者worker

manager节点
Docker Swarm集群需要至少一个manager节点,节点之间使用 Raft consensus protocol 进行协同工作。 通常,第一个启用docker swarm的节点将成为leader,后来加入的都是follower。

当前的leader如果挂掉,剩余的节点将重新选举出一个新的leader。 每一个manager都有一个完整的当前集群状态的副本,可以保证manager的高可用

worker节点
worker节点是运行实际应用服务的容器所在的地方。理论上,一个manager节点也能同时成为worker节点,但在生产环境中,我们不建议这样做。 worker节点之间,通过 control plane 进行通信,这种通信使用 gossip 协议,并且是异步的

1.3 服务和任务

集群中的stacks, services, tasks的关系,如下图:

services(服务)
swarm service是一个抽象的概念,它只是一个对运行在swarm集群上的应用服务,所期望状态的描述。它就像一个描述了下面物品的清单列表一样:

  • 服务名称
  • 使用哪个镜像来创建容器
  • 要运行多少个副本
  • 服务的容器要连接到哪个网络上
  • 应该映射哪些端口

task(任务)
在Docker Swarm中,task是一个部署的最小单元,task与容器是一对一的关系

stack(栈)
stack是描述一系列相关services的集合。我们通过在一个YAML文件中来定义一个stack

1.4 负载均衡

集群管理器使用入口负载平衡将要从集群外部获取的服务公开给集群。
集群管理器可以自动为服务分配一个已发布端口,也可以为该服务配置一个已发布端口。
可以指定任何未使用的端口。如果未指定端口,则集群管理器会为服务分配 30000-32767 范围内的端口。

集群模式具有一个内部DNS组件,该组件自动为群集中的每个服务分配一个DNS条目。
集群管理器使用内部负载平衡根据服务的DNS名称在群集内的服务之间分配请求。

2 Swarm安装

对于Docker 1.12+版本,Swarm相关命令已经原生嵌入到了Docker Engine中

2.1 下载镜像
 docker pull swarm

 docker images

2.2 查看版本
# 查看版本 docker run --rm swarm -v

3 Swarm集群

3.1 创建新集群
 docker swarm init --advertise-addr 192.168.80.60

上面命令执行后,该机器自动加入到swarm集群。这个会创建一个集群token,获取全球唯一的 token,作为集群唯一标识。后续将其他节点加入集群都会用到这个token值。

其中,–advertise-addr参数表示其它swarm中的worker节点使用此ip地址与manager联系。命令的输 出包含了其它节点如何加入集群的命令。

# 将节点强制驱除集群 docker swarm leave --force
3.2 查看集群状态和节点信息
 docker info

 docker node ls

3.3 添加工作节点到集群

创建了一个swarm集群与管理器节点,就可以添加工作节点。

  • 新创建虚拟机dockerManager
  • 在工作节点192.168.80.70上安装docker和docker swarm

在工作节点192.168.80.70上添加工作节点到集群命令:

docker swarm join --token SWMTKN-1-0i3j7ach1qm8feoewpka6lg84judwrzt5z762hhn9a40dq5xj2-56blivoil7tr4dgef1vwcwglf 192.168.146.60:2377

如果忘记了token的值,在管理节点192.168.80.60上执行下述命令(在管理节点上运行)

 docker swarm join-token manager docker swarm join-token worker

在管理节点192.168.80.60上查看节点信息(在管理节点上运行)

 docker node ls

3.4 发布服务到集群(在管理节点上运行)

在管理节点192.168.80.60上

 docker service create  -p 80:80  --replicas 2 --name nginx1 nginx # 参数介绍-p :端口映射--replicas:运行实例个数--name:服务名nginx : 镜像名称


查看哪些节点正在运行服务(在管理节点上运行)

 docker service ps nginx1

停止并删除发布的服务(在管理节点上运行)

 docker service rm nginx1

在工作节点上运行的命令

 docker ps

3.5 扩展一个或多个服务

 docker service scale mynginx=3docker service lsdocker service ps mynginx

3.6 更新服务
 docker service update --publish-rm 80:80 --publish-add 88:80 nginx1

3.7 节点管理
命令名称 说明
docker node demote 从群集(swarm)管理器中降级一个或多个节点
docker node inspect 显示一个或多个节点的详细信息
docker node ls 列出群集(swarm)中的节点
docker node promote 从群集(swarm)管理器中升级一个或多个节点
docker node ps 列出在一个或多个节点上运行的任务,默认为当前节点
docker node rm 从群集(swarm)删除一个或多个节点
docker node update 更新一个节点
#给工作节点(localhost.localdomain,可以设置主机名更改节点名称)添加worker1标签docker node update --label-add  myworker1 localhost.localdomain

#给工作节点(localhost.localdomain)节点停用 docker node update --availability drain localhost.localdomain

#停止工作节点(localhost.localdomain)docker systemctl stop docker

#删除工作节点(localhost.localdomain),需要先停止工作节点,才能删除docker node rm localhost.localdomain

3.8 如果添加工作节点到集群中报错

解决:防火墙没关

     管理节点关闭防火墙

 工作节点关闭防火墙,重新加入swarm集群


Docker容器虚拟化技术---Docker运维管理(Swarm集群管理)3相关推荐

  1. Docker容器虚拟化技术---Docker运维管理(Docker Compose)4

    Docker容器虚拟化技术-Docker运维管理(Docker Compose)4 Docker Compose 通过前面的讲解我们知道使用一个Dockerfile模板文件,可以很方便地定义一个单独的 ...

  2. Docker容器虚拟化技术---Docker高级实战(DockerFile)2

    Docker容器虚拟化技术-Docker高级实战(DockerFile) DockerFile是一个文本格式的配置文件,用户可以使用DockerFile来快速创建自定义的镜像. 1. DockerFi ...

  3. Docker容器虚拟化技术---Docker安装和操作1

    一.Docker安装 Docker在主流的操作系统和云平台上都可以使用,包括Linux操作 系统(如Ubuntu.Debian.CentOS.Redhat等).MacOS操作系统和 Windows操作 ...

  4. 实战:Docker容器虚拟化技术(使用DockerFile构建镜像并搭建 swarm+compose集群)5

    实战:Docker容器虚拟化技术 (使用DockerFile构建镜像并搭建 swarm+compose集群)5 要求: 使用DockerFile构建镜像并搭建 swarm+compose集群 在Swa ...

  5. docker容器虚拟化技术_Docker,虚拟机和容器的全面介绍

    docker容器虚拟化技术 by shota jolbordi 通过Shota Jolbordi Docker has been a buzzword for tech people for the ...

  6. 容器虚拟化技术Docker(一)简介、安装、常见命令、数据卷、安装常规软件

    容器虚拟化技术Docker(一)简介.安装.常见命令.数据卷.安装常规软件 1.Docker简介 1.简介 Docker的主要目标是"Build,Ship and Run Any App,A ...

  7. 容器化技术在运维管理中的应用:自动化、可视化运维

    作者:禅与计算机程序设计艺术 容器化技术在运维管理中的应用:自动化.可视化运维 引言 随着云计算和互联网的发展,容器化技术作为一种轻量级.高效的编程方式,得到了越来越广泛的应用.在容器化技术的应用场景 ...

  8. 智慧楼宇管理运营端app、运维管理、工单管理、报修管理、维保管理、巡检查询、巡检管理、能源管理、维保查询、智慧社区、巡检统计、工单统计、能源管理、智能楼宇、设备监控、智能社区、系统运营、楼宇运维小程序

    智慧楼宇管理运营端app.运维管理.工单管理.报修管理.维保管理.巡检查询.巡检管理.能源管理.维保查询.智慧社区.巡检统计.工单统计.能源管理.智能楼宇.设备监控.智能社区.系统运营.楼宇运维小程序 ...

  9. Docker——容器虚拟化技术

    目录 一.Docker介绍 诞生背景 Docker介绍 虚拟机技术与容器虚拟化技术 虚拟机技术 容器虚拟化技术 官方网站 二.Docker安装 安装Docker Docker管理命令 Docker底层 ...

最新文章

  1. 七夕大礼包:26个AI学习资源送给你!
  2. Contiki 2.7 Makefile 文件(一)
  3. P1514 引水入城
  4. Android基础(八) – Service AIDL
  5. [云炬创业管理笔记]第三章测试4
  6. jQuery实战之 attr() 和 prop() 的区别
  7. java代码的运行顺序_java中的代码块执行顺序
  8. Installing Node.js and Express on Ubuntu
  9. Poj 3281 Regional Chengdu Food(Dicnic)
  10. 利用计算机信息资源管理方式,第四章信息资源管理
  11. tia v15 添加项目_基于博途V15 西门子S7-1200 星三角启动实例演示
  12. ubuntu mysql自动补全_mysql自动化安装脚本(ubuntu and centos64)
  13. Spring 4.xx开发环境搭建
  14. 《数据挖掘——概念与技术》笔记
  15. 美国军方称密切关注量子加密,法国国防部重金投资量子技术
  16. html页面怎么记住密码,使用html的localstorage实现登录页面的记住密码功能
  17. linux远程关机重启命令,Linux关机命令解析
  18. 爬取网易云音乐评论,破解网易云加密算法
  19. Android 3D画廊采用Gallery实现无限循环、自动轮播
  20. 2023新年快乐,友盟+伴你岁岁年年

热门文章

  1. shell字符串操作集
  2. Spark源码系列(五)分布式缓存
  3. iText操作Word工具类
  4. Stackops快速部署手册
  5. 数据库及中间件术语解释
  6. 三十六、【减小apk包的体积】
  7. 系统调用被信号打断的例子
  8. C++学习笔记——虚函数
  9. mysql的Innodb为什么使用B+树
  10. 理解Synchronized